Как получить все элементы определенного типа в списке смежности n: n в DynamoDB - PullRequest
0 голосов
/ 06 сентября 2018

В СУБД я хочу создать таблицу «Каталоги» с отношением 1: n с «Коллекциями». «Коллекции» будут иметь n: n с «Тегами», поскольку Коллекция может иметь несколько тегов, а тег может принадлежать нескольким коллекциям.

Запросы, которые я хочу выполнить:

1) Получить все каталоги

2) Получить каталог по ID

3) Получить коллекции по ID каталога

Я прочитал в AWS, что могу использовать дизайн карты списка смежности (потому что у меня есть n: n с «Тегами»). Итак, вот моя структура таблицы:

PK         SK         name    
cat-1      cat-1      Sales Catalog
cat-1      col-1      Sales First Collection
cat-1      col-2      Sales Second Collection
cat-2      cat-2      Finance Catalog 
tag-1      tag-1      Recently Added Tag
col-1      tag-1      (collection, tag relationship)

Проблема здесь в том, что я должен использовать сканирование, которое, как я понимаю, неэффективно, чтобы получить все «Каталоги», потому что PK запроса должен быть «=», а не «Начинается с».

Единственное, о чем я могу думать, это создать еще один атрибут, такой как «GSI_PK» и добавить «Catalog_1», когда PK - это cat-1, а SK - это cat-1, «Catalog_2», когда PK - это cat-2 и SK. это кот-2. Я никогда не видел, чтобы это было сделано, поэтому я не уверен, стоит ли идти этим путем, и мне нужно какое-то обслуживание, если я когда-нибудь захочу изменить ID.

Есть идеи, как мне это сделать?

...