Несколько таблиц против составного ключа в DynamoDB - PullRequest
1 голос
/ 20 сентября 2019

Я исследовал везде, но редко бывают дискуссии об использовании нескольких таблиц DynamoDB.Поэтому я надеюсь, что кто-то может пролить свет на это.Рассмотрим следующий сценарий:

В базе данных должны храниться книги пользователя и комиксы пользователя.

Наиболее распространенный шаблон доступа - получить / положить одну книгу, получить / положить один комикс,и запросить всю коллекцию книг или комиксов.

Какой из следующих дизайнов лучше?

Случай 1: Использование нескольких таблиц (одна для книг, одна для комиксов))

BooksTable

{PartKey: UserId, SortKey: BookId1}

{PartKey: UserId, SortKey: BookId2}

ComicsTable

{PartKey: UserId, SortKey: ComicId1}

{PartKey: UserId, SortKey: ComicId2}

Чтобы получить или положить одну книгувы получаете или кладете BooksTable с полным ключом {UserId, BookId1}. Чтобы получить все книги пользователя, вы делаете запрос на BooksTable с {UserId}

Случай 2: Использование составных ключей сортировки (TYPE # ID)

SharedTable

{PartKey: UserId, SortKey: BOOK # BookId1},

{PartKey:UserId, SortKey: BOOK # BookId2},

{PartKey: UserId, SortKey: COMIC # ComicId1},

{PartKey: UserId, SortKey: COMIC # ComicId2}

Чтобы получить или положить одну книгу, вы получаете или кладете с полным ключом {UserId, BOOK # BookId} Чтобы получить все книги пользователя, вы делаете запрос с {UserId} с условием SortKey Starts_With (BOOK #)

Какой правильный выбор здесь?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...