如何在 DynamoDB 中组织低基数数据

How to organize low cardinality data in DynamoDB

在 DynamoDB 中构建具有低基数和高规模的 table 的最佳方法是什么?例如,假设我有一个应用程序,用户可以在其中创建帖子,其他用户可以查看这些帖子。我应该使用什么作为分区键和排序键?我可以获得帖子的 PK 和 Unix 时间戳的 SK,这将允许我在全球范围内查询最新的帖子。请注意,我想查看所有帖子,而不仅仅是特定用户的帖子。

如果我采用这种方法,我将始终从同一个分区读取数据,这可能会降低我的性能并可能达到分区的 RCU 或 WCU 限制。

DAX 可以缓解这种情况吗?

一种技术是写入分片。这是当您跨分区存储数据以更有效地使用数据库时。例如,您可以选择根据写入 post 的月份将 post 划分为多个分区。如果您决定每月存储博客 posts,则可以将 2020 年 11 月的所有 posts 存储在键为 POSTS#2020-11-01.

的分区中

A​​WS documentation about write sharding 更深入。

您应该查看 Twitch/Youtube 上的 AWS DynamoDB 办公时间系列。 DynamoDB 奇才 Rick Houlihan 介绍了各种数据建模示例。在 this episode,他在 DynamoDB 中建立了一个 Wordpress 博客模型。我发现像这样的演练非常有用。