Мне трудно смоделировать определенный сценарий, не обращаясь к более чем одному запросу.
Подумайте о таблице People
, каждая из которых Person
может быть связана друг с другом n раз,и у этого отношения есть описание.
Рассмотрим следующее моделирование:
Как видите, у меня есть два People
и person_0001
является потомком person_0002
.
Теперь, в этом случае, если я хочу получить все отношения, которые есть у person_0001
, это просто, я просто запрашиваю:
GET WHERE PK = "person_0001" AND SK.BEGINS_WITH("rel")
Но, поскольку он двунаправленный, как я могу получить отношения, которые есть у person_0002
?
Я мог бы использовать GSI, который инвертирует ключи, поэтому одним запросом я могу просто запросить обе таблицы одновременно.
Но настоящая проблема возникает, когда мне нужно обновить / удалить Как удалить / обновить все отношения person_0002
только с одним запросом? Я могу читать только из GSI.
В общем, это большая трудность, что мне делать, когда мне нужно удалить / обновить / записатьGSI?