多对多关系并获取两个实体的所有数据

时间:2019-06-05 19:07:23

标签: amazon-dynamodb

我有两个具有多对多关系的实体。 用户和照片。 当我得到一个用户时,我还需要获取标记了该用户的所有照片。 当我得到一张照片时,我还需要让所有用户标记在照片中。

我已阅读Best Practices for Managing Many-to-Many Relationships文档并提出了以下设计方案:

| partitionKey | sortKey   | name       | filePath | uploadDate |
|:------------:|--------- :|:----------:|:--------:|:----------:|
|user-a123     |user-a123  |John Smith  |          |            |
|user-b133     |user-a123  |Rick Andres |          |            |
...
|photo-a334    |photo-a334 |            | s3://..  | 06-05-19   |
|photo-b777    |photo-b777 |            | s3://... | 07-13-15   |
...
|user-a123     |photo-a334 |            |          |            |
|user-b133     |photo-b777 |            |          |            |
|user-b133     |photo-a334 |            |          |            |
|user-zm15     |photo-a334 |            |          |            |

我还创建了一个GSI,其中的sortKey和partitionKey颠倒了。

这使我能够:

  • 获取用户+标记了他的所有照片的 id
  • 获取照片以及照片中标记的所有用户的 id

问题是id不够。 例如,当获取用户时,我还需要对所有照片进行BatchGetItem请求。

是否可以通过一个查询获取所有信息?

我当时正在考虑复制数据,但是如果有人在照片中标记用户,而其他人同时在编辑照片详细信息,则“已标记”项中的数据将被破坏。

0 个答案:

没有答案