DynamoDB - Моделирование двунаправленных отношений «многие ко многим»? - PullRequest
1 голос
/ 06 мая 2019

Мне трудно смоделировать определенный сценарий, не обращаясь к более чем одному запросу.

Подумайте о таблице People, каждая из которых Person может быть связана друг с другом n раз,и у этого отношения есть описание.

Рассмотрим следующее моделирование:

enter image description here

Как видите, у меня есть два Peopleи person_0001 является потомком person_0002.

Теперь, в этом случае, если я хочу получить все отношения, которые есть у person_0001, это просто, я просто запрашиваю:

GET WHERE PK = "person_0001" AND SK.BEGINS_WITH("rel")

Но, поскольку он двунаправленный, как я могу получить отношения, которые есть у person_0002?

Я мог бы использовать GSI, который инвертирует ключи, поэтому одним запросом я могу просто запросить обе таблицы одновременно.

Но настоящая проблема возникает, когда мне нужно обновить / удалить Как удалить / обновить все отношения person_0002 только с одним запросом? Я могу читать только из GSI.

В общем, это большая трудность, что мне делать, когда мне нужно удалить / обновить / записатьGSI?

...