提问者:小点点

如何在dynamodb中从时间戳中获取所有项作为分区键


我在dynamodb中有一个温度表,我设置了时间戳(YYYY-MM-DD HH:MM:SS)作为分区键。 我在这个程序中使用NodeJs。

这是其中一个数据

value: { N: '49.5' },
location: { S: '1' },
timestamp: { S: '2020-06-09 01:04:20' }

现在我想从一个时间范围内获取所有的项目,比如从同一天的9am到11am,我尝试了查询功能,但是我的所有时间戳都是唯一的,现在我用扫描功能测试它。 但是,对于这种情况,有没有更好的做法呢? 将date改为分区键,将time改为排序键是否更好?

如有任何帮助,将不胜感激!!


共1个答案

匿名用户

如果这是常见的查询,您将希望时间戳是排序键,而不是分区键。 如果您的访问模式支持的话,您也可以在分区键中使用它,但是在排序键中使用它,您可以将“begins_with”作为查询运算符来获取您要查找的内容。 “在13小时内获取2020年6月9号以来得所有项目。” 这将是关于最便宜的方式,性能和成本明智。 如果你这样做与扫描,它将可能是太昂贵的方式从长远来看,你会不高兴。

您的另一个选择是将该属性作为排序键创建一个GSI。 您将不得不权衡维护GSI的成本和使用上述另一种方法在基表中复制数据的成本。 更有可能的是,我可能会选择数据复制,但我根本不知道您的工作量。