需要一些关于 DynamoDb 表架构的建议

Need some advice on DynamoDb Tables schema

我正在建立一个评论网站。 它将审查酒店、餐馆和咖啡馆(我们称之为列表), 所以将有三类列表。 这些列表中的每一个都会有评论。

现在最终用户将能够喜欢/不喜欢列表或个人评论。 我正在使用 AWS Amplify 构建此站点。

前端查询数据的方式如下。

  1. 搜索框可能希望查看指定位置的餐馆,例如悉尼/伦敦等。
  2. 出现餐厅列表后,最终用户可以单击每家餐厅以查看对该餐厅的评论。
  3. 最终用户可以喜欢/不喜欢餐厅或对个人评论做同样的喜欢/不喜欢。

我是 NoSQL 数据库概念的新手,因此需要一些关于如何构建它的建议。下图显示了我的想法。

NoSQL 模式建模应根据数据的访问模式进行。根据您提供的访问模式

  1. 可以在列表中搜索给定位置的餐馆 辅助分区,除此之外,您还可以对它们进行排序 使用列表评级。
  2. 对于每家餐厅,您可以获得 与之相关的评论。您是否存储原始评论 斑点在这里?如果是这样,请注意最大行大小和 考虑压缩评论或使用 S3 存储原件 评论。
  3. 增加 Review_Likes 和不喜欢的列 将解决您的用例 3.

但是,为了完全验证您的模式,我需要以下信息。在清单 table 中,主分区键 - 类别值的数量非常少(酒店、咖啡馆、餐厅等),这可能会导致热分区。 DynamoDB 期望主键 uniformly distributed 以获得最佳性能。