查询dynamodb中的一系列主键

时间:2012-10-17 16:39:56

标签: amazon-dynamodb

我想确保我做对了,
根据我到目前为止所读到的内容,您无法查询dynamodb中的一系列主键,
例如,如果您的主键号码类似于客户的电话号码,则无法获得主键大于3010000000或介于3010000000和3020000000之间的物品 为了说清楚,我不是在谈论范围键,我的问题是关于主键本身,

所以,如果这是真的,有很多用例,比如日期之间的项目,在某些点之后注册的用户,以及...,要求表扫描,

这是对的吗?

编辑:好的,想到一个解决方案,就是只使用一个虚拟hash_key作为主键并插入真实密钥(如上面的电话号码)作为范围键,这有用吗?

1 个答案:

答案 0 :(得分:6)

是的,您无法使用DynamoDb获得hash_key的范围。但这并不意味着你会被你的用例所困扰。

让我们来看看'约会'用例,并说你正在构建一个日志记录应用程序。你每天可能会得到很多记录。

如果您使用day作为hash_key,则可以将完整时间戳作为range_key。这样,您可以将查询拆分为块并获得所需内容。

当然,要获得最佳结果,您需要很好地了解查询类型。例如,典型的范围是什么?使用DynamoDb以及其他键值存储,您大多数时候都会考虑查询来建模数据,而不像SQL那样只考虑数据而建模。

当然,如果您的物品跨越更大/更短的范围,只需调整此系统。

关于“所有同一个假人hash_key”听起来像一个可怕的想法。抱歉。我不是百分之百确定它是如何工作的但我知道DynamoDB在所谓的分区上做了一些分片。我相信1 hash_key <=> 1 partitions。此外,如果仔细阅读文档,您会注意到分配的吞吐量在分区之间平均分配,这样每个分区的分配只是您支付的一小部分。

相关问题