Я исследовал везде, но редко бывают дискуссии об использовании нескольких таблиц 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 #)
Какой правильный выбор здесь?