查询dynamodb中的一系列主键

Ali*_*Ali 1 amazon-dynamodb

我想确保我得到这个权利,
根据我到目前为止阅读,你不能查询范围的主键的dynamodb,
就像如果你有一个主键是数字,如客户的电话号码,你不能与主键大于30.1亿和30.1亿和30.2亿之间的项目
,使之清楚,我不是在谈论的范围键,我的问题是关于主密钥本身,

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

它是否正确?

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

yad*_*taf 6

是的,你无法获得hash_keyDynamoDb的一系列.但这并不意味着你会被你的用例所困扰.

让我们来看看'约会'用例并说你正在构建一个日志应用程序.您每天可能会获得大量记录.

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

当然,为了获得最佳结果,您需要很好地了解查询类型.例如,典型的范围是什么?使用DynamoDb以及其他键值存储,您大多数时候都会考虑查询来建立数据模型,这与SQL在您仅考虑数据时进行建模时不同.

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

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

  • @whistlergreg,对于我通常建议使用RFC3339的日期.这是可读和自然的排序==词汇排序.我们在DynamoDB-Mapper(Python)中使用了它. (2认同)