DynamoDB中时间戳的数据类型

10 浏览
0 Comments

DynamoDB中时间戳的数据类型

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

Unix时间戳格式似乎是最容易使用的 - 例如1437136300

在JavaScript中,我使用new Date().getTime()获取UTC时间。

我的问题是,在DynamoDB中保存日期的更好的数据类型是字符串还是数字?

在这里和这里找到了一些AWS的参考资料,说可以使用数字作为时间戳的类型,因为它是所有数字的类型,包括long

当我按日期查询时,会有任何差异吗?我正在寻求最佳实践。

0
0 Comments

在DynamoDB中,时间戳的数据类型是一个问题,其原因是因为对于排序键,字符串和数字都可以被使用。

根据历史参考,通过一个独立的线程确认了字符串支持范围查询。

对于哪种数据类型更好,应该考虑更多的使用场景。如果数据将被另一个AWS服务(如Elastic Search或Cloud Watch)使用,将其存储为可以直接被这些服务消费的形式将非常有用,即ISO 8601字符串

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

总之,最佳实践取决于下游的情况。通常情况下,最好尽可能减少数据类型的更改。

感谢您的回答,我的数据库是一个无服务器的AWS应用程序的一部分,可以通过Api Gateway和AWS Lambdas通过Android应用程序访问。

没有问题 🙂 所以当应用程序接收到数据库信息时,它是如何处理的呢?按日期绘制图表?还是显示为文本?应用程序一次是否从表中提取多个条目?还是只有一个?

日期更多是与缓存相关的,我只从DynamoDB中获取最新记录(从上次获取的时间开始)。我按日期排序显示记录,没有花哨的图表。

我会检查应用程序在接收数据后是否执行任何"排序"函数。如果是这样,数字将是首选的数据类型。如果没有,我建议使用ISO 8601字符串,因为它们允许您存储毫秒级的细节,同时仍然可读,并且可以选择使用时区数据(现在可能不需要,但以后可能会需要)。

文章结束。

0