【发布时间】:2013-06-04 22:49:14
【问题描述】:
我有没有自然键的日志类型数据。 Amazon dynamodb 需要表主键中的哈希属性,所以我打算使用 uuid。问题是我似乎需要在查询时修复哈希值,但我当然想查询所有日志,所以不能指定单个 uuid。我是否误解了这个 dynamodb 查询要求?
【问题讨论】:
标签: amazon-dynamodb
我有没有自然键的日志类型数据。 Amazon dynamodb 需要表主键中的哈希属性,所以我打算使用 uuid。问题是我似乎需要在查询时修复哈希值,但我当然想查询所有日志,所以不能指定单个 uuid。我是否误解了这个 dynamodb 查询要求?
【问题讨论】:
标签: amazon-dynamodb
您没有误解要求。
避免全表扫描的唯一方法是查询特定的 HashKey。
您想如何查询数据?使用日期(可能是小时分辨率)作为哈希键并在 UUID 上创建本地二级索引是否有意义?
【讨论】:
如果您想优化性能和吞吐量配置,我建议您找到一种在查询中使用Hash Key 的方法,然后根据您的需要使用过滤器表达式来缩小记录(where a < latitude < b and c < longitude < d)。
更多详情请见Specifying Conditions with Condition Expressions。
如果无法在查询中使用Hash Key,并且您必须将Scan 与Conditional Expression 一起使用,那么我建议您按照建议的Time Series Data Best Practices 按日期或时间对表进行分段,正如您提到的那样您需要跨时间查询数据:
您可以使用 多个表来存储这些项目。例如,您可以创建 表来存储每月或每周的数据。对于存储数据的表 从数据访问率高的最近一个月或一周开始,请求 更高的吞吐量和存储旧数据的表,您可以拨打 降低吞吐量并节省资源。
您可以通过将“热门”项目存储在一个表中来节省资源 更高的吞吐量设置,以及另一个表中的“冷”项目 较低的吞吐量设置。您只需删除即可删除旧项目 桌子。您可以选择将这些表备份到其他存储 Amazon Simple Storage Service (Amazon S3) 等选项。删除一个 整个表比删除项目效率高得多 一个接一个,这基本上使您的写入吞吐量翻倍 删除操作与放置操作一样多。
【讨论】: