首页 > 解决方案 > UUID 作为 DynamoDB 中的主键——好主意还是坏主意?

问题描述

在一个新的 DynamoDB 表中,我的用例已经通过以下关键模式设计实现:

在此处输入图像描述

基本上,访问模式是:

  1. 获取特定用户的特定帖子。
  2. 获取特定用户的特定评论。
  3. 列出特定用户的所有帖子。
  4. 列出特定用户的所有评论。
  5. 列出特定用户的所有实体(帖子或评论)。

如果我使用更随机的 ID 作为分区键并简单地将 GSI 用于上面的访问模式,我可以获得什么好处?

在此处输入图像描述

标签: amazon-web-servicesdatabase-designamazon-dynamodb

解决方案


您不需要 UUID 或任何伪随机 ID。

如果一个用户特别活跃,您曾经有可能拥有一个热分区,但由于 DynamoDB 的自适应能力,现在热分区基本上不再是问题。此外,您可能应该限制用户创建评论/帖子的速度,这将防止热分区,即使不存在自适应能力。

(为什么要限制用户发布的速率?您不希望恶意行为者每隔几毫秒就创建一个新帖子——您应该设置某种速率限制,以防止拒绝服务攻击。)


推荐阅读