0

我有没有自然键的日志类型数据。Amazon dynamodb 需要表主键中的哈希属性,所以我打算使用 uuid。问题是我在查询时似乎需要修复哈希值,但我当然想查询所有日志,所以不能指定单个 uuid。我是否误解了这个 dynamodb 查询要求?

4

2 回答 2

0

您没有误解要求。

避免全表扫描的唯一方法是查询特定的 HashKey。

你想如何查询数据?使用日期(可能以小时分辨率)作为哈希键并在 UUID 上创建本地二级索引是否有意义?

于 2013-06-09T10:08:07.987 回答
0

如果您想优化性能和吞吐量配置,我建议Hash Key您找到一种在查询中使用的方法,然后根据您的需要使用过滤器表达式来缩小记录范围(where a < latitude < b and c < longitude < d)

有关更多详细信息,请参阅使用条件表达式指定条件

如果Hash Key无法在查询中使用 a 并且必须使用Scana Conditional Expression,那么我建议按照建议的时间序列数据最佳实践按日期或时间对表进行分段,因为您提到需要跨时间查询数据:

您可以使用多个表来存储这些项目,而不是将所有项目存储在一个表中。例如,您可以创建表来存储每月或每周的数据。对于存储最近一个月或一周的数据的表,数据访问率高,请求更高的吞吐量,对于存储较旧数据的表,您可以调低吞吐量并节省资源。

您可以通过将“热”项目存储在具有较高吞吐量设置的一个表中并将“冷”项目存储在另一个具有较低吞吐量设置的表中来节省资源。您可以通过简单地删除表来删除旧项目。您可以选择将这些表备份到其他存储选项,例如 Amazon Simple Storage Service (Amazon S3)。删除整个表比逐个删除项目效率高得多,这基本上使写入吞吐量翻倍,因为您执行的删除操作与放置操作一样多。

于 2015-04-26T20:17:17.777 回答