Отношения «многие ко многим» и получение всех данных для обеих организаций - PullRequest
0 голосов
/ 05 июня 2019

У меня есть две сущности, имеющие отношения многие ко многим. Пользователи и фотографии. Когда я получаю пользователя, мне также нужно получить все фотографии, на которых он отмечен. Когда я получаю фотографию, мне также нужно отметить всех пользователей на фотографии.

Я прочитал Рекомендации по управлению отношениями «многие ко многим» и придумал этот дизайн:

| 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 для всех фотографий.

Есть ли способ получить всю информацию в одном запросе?

Я думал о дублировании данных, но тогда, если кто-то пометит пользователя на фотографии, а кто-то еще редактирует детали фотографии, в то же время данные в помеченном элементе будут повреждены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...