DynamoDB架构-检索所有用户

菜鸟

我正在尝试对数据建模。如您所见,分区键是用户电子邮件。在全局二级索引中,我的PK为“ US”,代表“用户”。如果要获取所有已启用的用户,我只需要查询GSI,其中GSI1PK =“ US”,而GSI1SK以“ Enabled”开头。

我担心的是,该应用程序中的所有用户都将具有相同的GSI1PK。这会是一个问题吗?GSI PK可以在“热分区”方面遇到问题吗?我正在谷歌搜索,但看不到明确的答案。在StackOverflow上只有一个说这将是一个问题,但是在其他地方却说不会。我有点困惑。

在我的表中构造数据的最佳方法是什么,这样我就可以访问所有用户而又不会引起热点问题?

DynamoDB表

塞思·吉格甘

将可能较大的项目集合放在单个分区中可能会导致分区热。理想情况下,您选择的分区键会在各个分区之间平均分配数据。但是,关于如何实现这一点可能并不总是很清楚

您可能会考虑在写入时将大分区分成较小的分区(aka写分片),并在读取时将其重新组合。例如,在创建GSIPK时,您可以在分区键中引入1到4之间的随机生成的整数:

在此处输入图片说明

您的GSI看起来像这样

在此处输入图片说明

现在,您的用户数据更均匀地分布在各个分区中。从表中读取用户时,您将一次从所有分区中拉出。可以并行执行以提高性能。

在此示例中,我选择了一个随机数将数据“分片”到单独的分区中。但是,您的数据可能更适合自然划分(例如,按国家/地区,启用状态,时区等)。我要强调的是,跨分区分配数据的策略可以与用于支持应用程序访问模式的数据模型分开。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章