Amazon dynamodb SimpleDB或DynamoDB的生存时间

Amazon dynamodb SimpleDB或DynamoDB的生存时间,amazon-dynamodb,amazon-simpledb,ttl,Amazon Dynamodb,Amazon Simpledb,Ttl,我们的要求非常简单,我们希望存储传感器的GPS位置,该位置不应超过几天。数据的总粒度最大为一分钟左右 由于传感器的总数可能超过10亿,除非我自己编写分区逻辑,否则SimpleDB不是一个选项。SimpleDB虽然对每个属性进行索引,这使得每隔一段时间就可以运行一次定期清理脚本,删除超过2天的条目 DynamoDB看起来更好,因为它对数据量没有限制,我可以在sensorID+时间戳上使用分区+范围主键。然而,删除旧数据需要扫描查询,除非我在timestamp字段上还有一个全局二级索引。使用这个辅助

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

由于传感器的总数可能超过10亿,除非我自己编写分区逻辑,否则SimpleDB不是一个选项。SimpleDB虽然对每个属性进行索引,这使得每隔一段时间就可以运行一次定期清理脚本,删除超过2天的条目

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


只有我相信有更好的出路吗?使用DynamoDB/SimpleDB更好,因为整个部署都在AWS环境中,我们不想在ops上投入太多。我知道像Mongo DB这样的其他NOSQL数据库也支持这些功能。

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

GPS_LOCATIONS_09052016
GPS_LOCATIONS_09072016
...
然后,您可以每隔
x
天删除旧表

每个传感器有多少个GPS位置?例如,如果您有5亿个唯一的传感器,那么根据传感器id进行分区就不是很有效


如果基于日期的表不适合您,那么您可以在
时间戳散列
散列键和
时间戳
范围键上创建一个GSI,其中
时间戳散列
是一个介于1到
y
之间的数字,
y
取决于您的数据大小。然后,您可以针对每个
timestamp hash
timestamp
小于现在的值,或设置清除参数的任何值,对此GSI执行范围查询。
timestampHash
将帮助您对数据进行分区,以提高吞吐量。

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

GPS_LOCATIONS_09052016
GPS_LOCATIONS_09072016
...
然后,您可以每隔
x
天删除旧表

每个传感器有多少个GPS位置?例如,如果您有5亿个唯一的传感器,那么根据传感器id进行分区就不是很有效


如果基于日期的表不适合您,那么您可以在
时间戳散列
散列键和
时间戳
范围键上创建一个GSI,其中
时间戳散列
是一个介于1到
y
之间的数字,
y
取决于您的数据大小。然后,您可以针对每个
timestamp hash
timestamp
小于现在的值,或设置清除参数的任何值,对此GSI执行范围查询。
timestampHash
将帮助您对数据进行分区,以提高吞吐量。

DynamoDB中添加了一项新功能。 请查收


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

DynamoDB中添加了一项新功能。 请查收


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

我真的不知道GPS位置(所有位置都具有相同的格式)如何更好地存储在NOSQL数据库中。这正是数据的定义,可以在表中进行最佳存储、索引、检索和分析,因为我将有数十亿个条目。我希望系统能够自动共享/分区,不用担心。听起来好像任何人在没有灵活模式的情况下使用NOSQL都是在犯错误,事实并非如此。“数十亿个相同格式的条目”正是您应该使用关系数据库而不是无模式NOSQL的原因。当您拥有数十亿个相同的数据点,但将它们存储为键值对时,是的,您犯了一个错误,因为您不了解数据库的功能,以及为什么对键值存储进行分区比对可排序/可索引表进行分区要困难得多,8B表示时间戳,4B长,4B纬度=32字节表示整个条目,而您的键/值存储将需要它,加上存储同一个键(或对同一个键的引用)十亿次所需的存储量,再加上具有某种树状结构以保存属于单个实体的键/值对的结构开销。如果您在键/值数据库中进行,那么您的问题将是难以置信的RAM和复杂性,如果在关系数据库中进行,那么问题将非常简单和高效。因此,在“正常”规模的平台上,您甚至可能不需要在关系数据库中进行分区。整个“旧条目必须消失”的事情变得非常简单,因为表通常会朝一个方向增长,并且没有间接性。自动数据库维护例程将在使用过程中清理和压缩数据库,而这些都不是您需要关心的事情。现在,再次解释一下,除了人们在twitter上更频繁地提到它之外,为什么键/值还有任何优势?我真的不知道GPS位置(都具有相同的格式)如何更好地存储在NOSQL数据库中。这正是数据的定义,可以在表中进行最佳存储、索引、检索和分析,因为我将有数十亿个条目。我希望系统能够自动共享/分区,不用担心。听起来好像任何人在没有灵活模式的情况下使用NOSQL都是在犯错误,事实并非如此。“数十亿个相同格式的条目”正是您应该使用关系数据库而不是无模式NOSQL的原因。当您拥有数十亿个相同的数据点,但将它们存储为键值对时,是的,您犯了一个错误,因为您不了解数据库的功能,以及为什么对键值存储进行分区比对可排序/可索引表进行分区要困难得多,8B表示时间戳,4B长,4B纬度=32字节表示整个条目,而作为键/val