首页 > 解决方案 > 如何在单个 DynamoDB 表中连接 3 个实体?

问题描述

我有一个简单的关系模型,我想使用单表设计在 DyanamoDB 中创建它。该模型适用于餐厅评论应用程序:

实体是:

用户有一个emaildisplayName

访问模式:

  1. 列出单个用户的所有评论
  2. 列出餐厅的评论
  3. displayName使用创建评论的用户查找餐厅的所有评论。

我正在努力解决 3:使用displayName创建评论的用户查找餐厅的所有评论。

我可以存储displayName评论项目,但如果我的用户更新displayName我需要使用此显示名称更新所有评论。

我正在努力解决如何连接restaurant reviewuser在单个查询中。我得到的最接近的是:

Hash Key    | Range Key               | Data
----------------------------------------------------------------
user 1      | review1                 | restaurant1
            | review2                 | restaurant3
            | review23                | restaurant4
            | profile                 | Kate Smith   | ksmith@gmail.com
user 2      | review5                 | restaurant1
            | review6                 | restaurant2
            | review7                 | restaurant4
            | profile                 | John Smith   | jsmith@gmail.com
restaurant1 | address#street#areaCode |
restaurant2 | address#street#areaCode |

我可以使用具有上述设计但不是 3 的 GSI 来满足模式 1 和 2。我还尝试翻转设计,以便评论与餐馆相关,但仍然无法满足模式 3。

在单个查询中,我正在尝试使用单个表设计来实现吗?即使我可以在两个可行的查询中做到这一点。

非常感谢这里的任何建议!

标签: amazon-web-servicesamazon-dynamodbamazon-dynamodb-index

解决方案


推荐阅读