我想确保我做对了,
根据我目前所读的内容,您不能在 dynamodb 中查询一系列主键,
例如,如果您有一个主键,它是客户的电话号码之类的数字,您将无法获得主键大于 3010000000 或介于 3010000000 和 3020000000 之间的项目
说清楚,我不是在谈论范围键,我的问题是关于主键本身,
所以如果这是真的,那么有很多用例,例如日期之间的项目、某个时间点后注册的用户,以及...,需要进行表扫描,
这是正确的吗?
编辑:好的,想到的一种解决方案是仅使用一个虚拟 hash_key 作为主键并将真实键(如上面的电话号码)作为范围键插入,这行得通吗?
最佳答案
是的,您无法获得 hash_key
的范围使用 DynamoDb。但这并不意味着您受困于您的用例。
让我们以“日期”用例为例,假设您正在构建一个日志记录应用程序。您可能每天都会收到很多记录。
如果你使用天作为hash_key,你可以把完整的时间戳作为range_key。这样,您就可以将查询拆分成 block 并获得所需的内容。
当然,要获得最佳结果,您需要熟悉查询的类型。例如,典型范围是多少?使用 DynamoDb 以及其他键:值存储,您在大多数情况下都可以根据查询对数据进行建模,这与 SQL 在建模时仅考虑数据不同。
当然,如果您的元素跨越更大/更短的范围,只需调整此系统即可。
关于“都在同一个虚拟机 hash_key
下”听起来是个糟糕的主意。对不起。我不是百分百确定它到底是如何工作的,但我知道 DynamoDB 会跨所谓的分区进行一些分片。我相信1 hash_key <=> 1 partitions
.此外,如果仔细阅读文档,您会注意到配置的吞吐量在分区之间平均分配,因此每个分区只分配您支付的一小部分。
关于amazon-dynamodb - 查询dynamodb中的一系列主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12939131/