我有一个假设数据库,该数据库跟踪街道在全球范围内地址。分区密钥是国家,排序钥匙是指街道的州和邮政法规。例如,一个项目看起来像CA#90210
。
(显然,这有很大的本地化和分销问题,但这是一个假设的(
我在美国有10,000个项目,如果我查询并过滤"以 CA
"开头的键(这可能返回900个项目(,而分区键则将键向我们发送,将DynamoDB仅对IT的900个项目使用RCUS找到或带有"我们"分区密钥的10,000个项目?
在同一注意事项上,如果我确实在"排序密钥"中使用邮政编码,那么将其保存在数据库中的另一列中是正确的,仅供我的Web应用程序读取?
如果我查询和过滤"以CA开头"(可能返回900个项目(的排序键,并且分区键向我们进行,将DynamoDB仅对900个项目使用RCU
是的, starts with
查询只会触摸项目的起点。
换句话说, Query()
总是需要使用索引,要么具有复合主键的表或本地/全局次要索引。
Scan()
是要远离的
,必须阅读表中的每个记录。
如果我确实在"排序密钥"中使用邮政编码,那么将其保留在数据库中的另一列中是正确的,只是为了读取我的Web应用程序吗?
可能,否则,您的客户将不得不为每个记录拆分排序密钥本身。拥有两次值所需的额外空间并不重要。