DynamoDB - Модель встраивает отношения многие ко многим с собой - PullRequest
0 голосов
/ 03 мая 2019

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

Что ж, я смогла смоделировать решение, но в итоге использовались 2 GSI

Контекст здесьв том, что у меня есть Проекты, и у каждого проекта могут быть Задачи

И каждая Задача может иметь отношение с другой Задачей, например, дочерняя, зависимая, родительская.

Изначально я смоделировал следующий способ:

enter image description here

Как видите, у проекта_1 есть две задачи.

И задача_1 зависит от задачи_2

ПричинаGSI 1, поэтому, если у меня есть только идентификатор task_2, я могу выполнить обратный поиск, чтобы увидеть, что от него зависит task_1.

Но , этого было недостаточно, возникла новая проблема:

Если я хочу удалить проект и все связанные с ним данные, как я могу также удалить объекты отношений задач?Ну, я мог бы сделать, но это потребовало бы очень дорогих сканирований.

Поэтому я добавил третий GSI:

enter image description here

Этот новый GSIслужит для проецирования атрибута "own_to_project" отношения задач в качестве первичного ключа, поэтому я могу легко удалить всю информацию о проекте с помощью 3 запросов.

Могу ли я сделать это более эффективно?Используя меньше запросов?Меньше GSI?

...