dynamodb在查询中是否需要固定的主键值?

时间:2013-06-08 21:59:17

标签: amazon-dynamodb

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

2 个答案:

答案 0 :(得分:0)

你不要误解这个要求。

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

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

答案 1 :(得分:0)

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

有关详细信息,请参阅Specifying Conditions with Condition Expressions

如果在您的查询中使用Hash Key是不可能的,并且您必须将ScanConditional Expression一起使用,那么我建议您按照建议的{日期或时间对您的表进行细分{3}}如您所述,您需要跨时间查询数据:

  

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

     

您可以通过在一个表中存储“热”项来节省资源   更高的吞吐量设置,以及另一个表中的“冷”项   较低的吞吐量设置您只需删除即可删除旧项目   表格。您可以选择将这些表备份到其他存储   Amazon Simple Storage Service(Amazon S3)等选项。正在删除   整个表比删除项目更有效   一个接一个,它基本上使您的写吞吐量翻倍   与put操作一样多的删除操作。