SimpleDB或DynamoDB的生存时间

时间:2016-08-24 20:14:44

标签: amazon-dynamodb amazon-simpledb ttl

我们的要求非常简单,我们希望为传感器存储GPS位置,这些传感器不应超过几天。数据的总粒度最大约为一分钟左右。

由于传感器的总数可能超过十亿,因此除非我自己编写分区逻辑,否则SimpleDB不是一个选项。 SimpleDB虽然为每个属性编制索引,但可以在一段时间内运行一次定期清理脚本,删除超过2天的条目。

DynamoDB看起来好多了,因为它对数据量没有限制,我可以在sensorID + timestamp上使用分区+范围主键。但是,删除旧数据需要扫描查询,除非我在时间戳字段上也有一个全局二级索引。在这个二级全局索引中,查询可能会更快。

只是我认为可以有更好的方式吗?使用DynamoDB / SimpleDB更好,因为整个部署都在AWS环境中,我们并不想投入大量的操作。我知道像Mongo DB这样的其他NOSQL数据库支持这些。

2 个答案:

答案 0 :(得分:1)

您可以以x天的增量在基于日期的表格中保存条目。

GPS_LOCATIONS_09052016
GPS_LOCATIONS_09072016
...

然后您可以每隔x天删除旧表。

每个传感器有多少个GPS位置?如果你有5亿个独特的传感器,那么传感器id的分区效率不高。

如果基于日期的表格无效,那么您可以在timestampHash哈希键和timestamp范围键上创建GSI,其中timestampHash是一个数字1到yy,具体取决于您的数据大小。然后,您可以针对每个timestampHash执行范围查询,并且timestamp小于现在,或者您设置清除参数的任何内容。 timestampHash将帮助您对数据进行分区,以帮助提高吞吐量。

答案 1 :(得分:1)

添加了DynamoDB中的新功能。 请检查TTL

这将在特定项目的TTL过期后删除该项目。