amazon-dynamodb - 查询dynamodb中的一系列主键

标签 amazon-dynamodb

我想确保我做对了,
根据我目前所读的内容,您不能在 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/

相关文章:

java - 返回 JSONObject,而 JSONArray 无法在 Amazon Lambda Java 函数中工作

python - 如何使用 ConditionExpression 检查非键属性是否已存在于 dynamodb 中?

amazon-dynamodb - 如何使用 Dynamodb Global Tables 和 Lambda@edge 选择正确的区域?

go - 解析Golang中的dynamodb.GetItemOutput类型

javascript - 亚马逊dynamodb fiter表达式返回错误

amazon-dynamodb - Dynamodb全局索引查询所有属性

amazon-dynamodb - 在 DynamoDB 中模拟每日游戏排名

amazon-dynamodb - 针对 Cognito 用户的 AWS AppSync 事件订阅过滤

node.js - Dynamodb TTL 24 小时

python-3.x - KeyConditionExpression接受无效的输入并且不引发异常