首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建唯一的分区键后不能用于其他数据

创建唯一的分区键后不能用于其他数据
EN

Stack Overflow用户
提问于 2017-10-14 07:36:18
回答 1查看 125关注 0票数 0

我对AWS dynamoDB很陌生。在我的研究中,我遇到了一个场景:“把它想象成一家银行,在出纳员窗口前排起了长队。如果每个人都排在一位出纳员的前面,那么可以为更少的客户提供服务。跨多个不同的出纳员窗口分配客户的效率更高。分配客户的一个好的分区钥匙可能是客户号码,因为每个客户都不同。”

我有一个问题,如何找出每个出纳员在同一个表中遇到的客户号码(作为分区键的客户号)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-14 08:05:42

把它想象成一家银行,在出纳员窗口前排着长队。如果每个人都在一个出纳员前排队,那么可以为更少的顾客提供服务。在许多不同的出纳员窗口中分配客户是更有效的。分配客户的一个好的分区密钥可能是客户编号,因为它对每个客户来说是不同的。

上面这句话解释的是DynamoDB存储分布是如何发生的,以及它如何影响数据查询。假设分区键是单独的数据库服务器。当您只有一个分区键时,所有查询都会转到该服务器,从而提高其利用率,从而限制在单个服务器上进行吞吐量。如果您有多个分区键,内部DynamoDB可以从多个服务器中并行地找到这些项,而不会碰到单个分区服务器瓶颈。

客户编号是分区键,出纳员是行数据,所以我必须对每个客户号运行查询才能找到特定出纳员的数据吗?

如果将数据存储在名为Customers的DynamoDB表中,仅以客户号作为主键,则需要扫描整个DynamoDB表,这是非常低效率的。

如果您只想直接查询特定的出纳员项。

  • 如果要直接查询出纳员信息,仅使用出纳员Id,则创建teller id作为全局辅助索引,并查询索引以查找teller信息。
  • 如果查询涉及给定的客户编号和Teller id以查找Teller信息,则可以重新创建以Teller id作为排序键(如果对数据模型有意义的话)的表,以便直接查询特定客户的Teller信息。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46742091

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档