[英]Does filtering “start with” cause high reads in DynamoDB?
我有一个假想的数据库,可以跟踪全球的街道地址。 分区键是国家/地区,排序键是指街道的州和邮政编码。 例如,一项可能看起来像CA#90210
。
(显然这存在很大的本地化和分布问题,但这是一个假设)
我在美国有10,000个项目,如果我查询和过滤排序键为“以CA
开头”(这可能返回900个项目),而分区键为美国,DynamoDB将仅对它找到的900个项目使用RCU,否则DynamoDB仅将RCU用于它10,000个带有“ US”分区键的项目?
同样,如果我确实在邮政编码中使用了邮政编码,那么仅将其保留在数据库的另一列中以供Web应用程序读取是否正确?
如果我查询并过滤排序键为“以CA开头”(这可能返回900项),而分区键为US,则DynamoDB仅将RCU用于900项
是的, starts with
查询starts with
只会触摸以该值开头的项目。
换句话说, Query()
始终需要使用索引,该索引可以是具有复合主键的表,也可以是本地/全局二级索引。
Scan()
是一个远离的地方,必须读取表中的每条记录。
如果我确实在邮政编码中使用了邮政编码,是否仅将其保留在数据库的另一列中以供Web应用程序读取是否正确?
可能是这样,否则您的客户将不得不为每个记录拆分排序键本身。 具有两次值所需的额外空间并不重要。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.