Amazon web services DynamoDB中timstamp的数据类型

Amazon web services DynamoDB中timstamp的数据类型,amazon-web-services,timestamp,amazon-dynamodb,Amazon Web Services,Timestamp,Amazon Dynamodb,我想创建一个使用时间戳作为范围键的表,以便轻松地按日期对数据进行排序 该格式似乎是最易于使用的->例如1437136300 在javascript中,我使用newdate().getTime()获取UTC时间 我的问题是在DynamoDB、String或Number中保存日期的更好数据类型是什么 找到一些AWS的参考资料,并表示可以使用数字作为时间戳的类型,因为它是所有数字的类型,long包括在内 按日期查询时会有什么不同吗?我正在寻找最佳实践。正如您所指出的,Sting和数字都可以用作排序键

我想创建一个使用时间戳作为范围键的表,以便轻松地按日期对数据进行排序

该格式似乎是最易于使用的->例如
1437136300

在javascript中,我使用
newdate().getTime()
获取UTC时间

我的问题是在DynamoDB、String或Number中保存日期的更好数据类型是什么

找到一些AWS的参考资料,并表示可以使用数字作为时间戳的类型,因为它是所有数字的类型,
long
包括在内


按日期查询时会有什么不同吗?我正在寻找最佳实践。

正如您所指出的,Sting和数字都可以用作排序键

历史参考资料: @ConcepteQuest在一个单独的示例中确认范围查询受字符串支持

串: 至于哪一个更好,我相信你应该多考虑一下你的用例。如果数据将被另一个AWS服务(如Elastic Search或Cloud Watch)使用,则将其存储在可直接被这些服务使用的表单中会很有用。即ISO 8601字符串

例子: 2016-02-15

2015-12-21T17:42:34Z

20150311T122706Z

数字 如果数据将被其他图形或分析库使用,则将其设置为数字格式可能更有意义,这样就可以直接使用,而无需进一步转换

结论
简言之,最佳实践取决于下游的情况。一般来说,最好将数据类型更改限制在尽可能少的范围内。

正如您所指出的,Sting和Number都可以用作排序键

历史参考资料: @ConcepteQuest在一个单独的示例中确认范围查询受字符串支持

串: 至于哪一个更好,我相信你应该多考虑一下你的用例。如果数据将被另一个AWS服务(如Elastic Search或Cloud Watch)使用,则将其存储在可直接被这些服务使用的表单中会很有用。即ISO 8601字符串

例子: 2016-02-15

2015-12-21T17:42:34Z

20150311T122706Z

数字 如果数据将被其他图形或分析库使用,则将其设置为数字格式可能更有意义,这样就可以直接使用,而无需进一步转换

结论
简言之,最佳实践取决于下游的情况。一般来说,最好将数据类型更改限制在尽可能少的范围内。

我不知道这里有任何最佳做法或性能偏好,但我通常更喜欢将数字存储为数字,而不是字符串。这使得计算更容易,比如时间戳加500毫秒或时间戳减一天。谢谢你@jarmod我教过也许有一种更好的方法没有答案,他在他的问题中指出将时间戳保存为一个数字,但没有人在任何回答中有这个意思哦,来吧,很明显,我在发布这个问题之前已经上网了。找到那篇文章后,它没有帮助。存储为数字将节省几个字节,这取决于您的访问模式和总体记录大小。matterI可能不知道这里有任何最佳做法或性能首选项,但我通常更喜欢将数字存储为数字,而不是字符串。这使得计算更容易,比如时间戳加500毫秒或时间戳减一天。谢谢你@jarmod我教过也许有一种更好的方法没有答案,他在他的问题中指出将时间戳保存为一个数字,但没有人在任何回答中有这个意思哦,来吧,很明显,我在发布这个问题之前已经上网了。找到了那篇文章,但没有任何帮助。以数字形式存储将节省几个字节,这取决于您的访问模式和总体记录大小。谢谢您的回答,我的数据库是无服务器aws应用程序的一部分,可以通过Api网关和aws lambdas通过android应用程序访问。没问题:)那么当应用程序接收到您的数据库信息时,它会如何处理?按日期绘制图表?还是将其显示为文本?应用程序是否将一次从您的表中提取多个条目?还是只有一条?日期更多地与缓存有关,我只从Dynamodb向应用程序获取最新的记录(从上次获取的记录)。我显示按日期排序的记录,没有花哨的图形我会在收到数据后检查您是否执行了任何类型的“排序”功能。如果是这样,数字将是首选的数据类型。如果不是,我建议使用ISO8601字符串,因为它们允许您在仍然可读的情况下存储高达毫秒的细节,并且可以选择时区数据。(现在可能没有用,但以后有必要)谢谢你的回答,我的数据库是无服务器aws应用程序的一部分,可以通过Api网关和aws lambdas通过android应用程序访问。没问题:)那么当应用程序收到你的数据库信息时,它会做什么?按日期绘制图表?还是将其显示为文本?应用程序是否将一次从您的表中提取多个条目?还是只有一条?日期更多地与缓存有关,我只从Dynamodb向应用程序获取最新的记录(从上次获取的记录)。我显示按日期排序的记录,没有花哨的图形我会在收到数据后检查您是否执行了任何类型的“排序”功能。如果是这样,数字将是首选的数据类型。如果不是,我建议使用ISO8601字符串,因为它们允许您在仍然可读的情况下存储高达毫秒的细节,并且可以选择时区数据。(现在可能没有用,但以后需要)