Просто еще один вопрос о создании единой таблицы DynamodB (YADSTD) - PullRequest
0 голосов
/ 14 февраля 2020

this image is a print from this video https://www.youtube.com/watch?v=KlhS7hSnFYs

Это изображение представляет модель модели для получения данных об отношениях между фильмами, актерами и режиссерами.

Из моего понимания из MOV # xyz1234 ключ раздела, они используют movieId как часть первичного ключа для хранения фильмов, актеров и режиссеров. Таким образом, для объекта mov ie "PK = MOV # movieId и SK = MOV # movieId", если вы хотите получить детали mov ie, вы можете запросить:

PK START_WITH MOV# AND SK = MOV#movieId

И затем сохранить актера, они будут использовать «PK = MOV # movieId и SK = ACT # actorID» таким образом, чтобы получить всех актеров из mov ie, запрос может быть:

PK = MOV#movieId and SK START_WITH ACT#

или если мы хотим подробности об актере мы можем запросить как:

PK START_WITH MOV# AND SK = ACT#actorId

Но я запутался, когда обнаружил ключ раздела ACT # aac1004 и DIR # bce0557. У меня вопрос: когда они создали mov ie, они одновременно хранили более одного элемента для каждой сущности? Как они хранят актеров и режиссеров. Если у мов ie есть много актеров, то как сюда добраться:

this image is a print from this video https://www.youtube.com/watch?v=KlhS7hSnFYs

1 Ответ

1 голос
/ 19 февраля 2020

Строки с MOV# в качестве PK и ACT# устанавливают sh отношение, в котором актер находился в определенном mov ie, и могут содержать атрибуты об определенных c отношениях этого актера с mov ie (т.е. имя персонажа, заголовок mov ie, et c).

Строки с ACT# в качестве PK будут содержать информацию об актере, не связанную с фильмами (например, Дата рождения, Био и т. Д. c)

В вашем вопросе следует отметить одну вещь: вы не можете запросить PK с «начинается с», и поэтому GSI (Global Secondary Index) добавляется в столбец SK, чтобы вы могли запросить это напрямую, не зная, что такое столбец PK. PK GSI - это столбец SK, поэтому вы можете запросить его напрямую.

Итак, чтобы исправить некоторые вещи в вашем вопросе, если вы хотите получить детали mov ie, вы бы запросили обычный PK с помощью:

PK = MOV#movieId AND SK = MOV#movieId

Если вам нужны подробности об актере, мы можем запросить:

GSI PK = ACT#actorId

И это вернет строку актера (PK = ACT # actorID) с информацией об актере, а также со всеми строками, где PK = MOV #, где актором является SK.

Я не уверен, что это ответ на вопрос, но, надеюсь, проливает некоторый свет на то, как конструкции отдельных столов работают немного лучше.

...