Шаблон списка смежности DynamoDB - PullRequest
1 голос
/ 08 мая 2019

Я пытаюсь лучше понять, как использовать шаблон списка смежности для проектирования отношений многие ко многим (m: n) в AWS DynamoDB.

Глядя на документы AWS здесь: https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/bp-adjacency-graphs.html у нас есть пример с сущностью Invoice and Bill с отношением m: n.

enter image description here

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

Мой вопрос заключается в том, что мне нужно сделать, чтобы получить полнуюатрибуты счета для этих 2 счетов.Требуется ли для этого 2 дополнительных запроса с использованием идентификаторов, которые я получил из раздела счета-фактуры, или есть какой-то другой шаблон, который я здесь пропускаю?

Дополнительные сведения Ссылка на 2 различных описания элементов счета вснимок экрана:

  • Элементы счета в разделах счета-фактуры: "Атрибуты этого счета в этом счете-фактуре"
  • Элементы счета в их собственных разделах: "Дополнительные атрибуты этого счета"

Означает ли это, что мои разделы счетов-фактур должны включать какие-либо атрибуты Билла, к которым я хочу получить доступ через минимальные запросы?Первоначально я думал, что разделы Билл будут содержать большую часть того, что я хочу, но это не совсем имеет смысла, если я хочу получить их по счету.

1 Ответ

2 голосов
/ 09 мая 2019

Нет, никаких дополнительных запросов - если вы не зададите («проект») только определенные атрибуты, ваш запрос будет извлекать все атрибуты счетов вместе с его ключом.

DynamoDB сохраняет каждый раздел вместе на одномузел, поэтому эффективно получить весь раздел.Этот раздел определяется его «ключом раздела» (вашим номером счета).Раздел содержит кучу «предметов» (ваших счетов), каждый элемент имеет свой собственный «ключ сортировки» (ваш идентификатор счета) и любое количество «атрибутов».Когда DynamoDB читает раздел, он читает эти элементы по порядку со всеми их атрибутами и может возвращать все из них, если вы специально не попросили этого не делать.Обратите внимание, что даже если вы попросите его вернуть только подмножество («проекцию») этих атрибутов, Amazon по-прежнему нужно будет прочитать их с диска, и вы все равно заплатите за этот ввод / вывод.

...