我有没有自然键的日志类型数据。亚马逊dynamodb需要表主键中的哈希属性,所以我打算使用uuid。问题是我在查询时似乎需要修复哈希值,但我当然想查询所有日志,因此无法指定单个uuid。我是否误解了这个dynamodb查询要求?
答案 0 :(得分:0)
你不要误解这个要求。
避免全表扫描的唯一方法是查询特定的HashKey。
您想如何查询数据?使用日期(可能以小时分辨率)作为您的哈希键并在UUID上创建本地二级索引可能有意义吗?
答案 1 :(得分:0)
如果您想优化性能和吞吐量配置,我建议您找一种方法在查询中使用Hash Key
,然后使用过滤器表达式根据您的需要缩小记录(where a < latitude < b and c < longitude < d)
。
有关详细信息,请参阅Specifying Conditions with Condition Expressions。
如果在您的查询中使用Hash Key
是不可能的,并且您必须将Scan
与Conditional Expression
一起使用,那么我建议您按照建议的{日期或时间对您的表进行细分{3}}如您所述,您需要跨时间查询数据:
您可以使用,而不是将所有项目存储在单个表中 多个表来存储这些项目。例如,您可以创建 用于存储月度或每周数据的表。对于存储数据的表 从最近一个月或一周,数据访问率高,请求 更高的吞吐量和存储旧数据的表,您可以拨打 降低吞吐量并节省资源。
您可以通过在一个表中存储“热”项来节省资源 更高的吞吐量设置,以及另一个表中的“冷”项 较低的吞吐量设置您只需删除即可删除旧项目 表格。您可以选择将这些表备份到其他存储 Amazon Simple Storage Service(Amazon S3)等选项。正在删除 整个表比删除项目更有效 一个接一个,它基本上使您的写吞吐量翻倍 与put操作一样多的删除操作。