В идеале, вы не должны помещать потенциально неограниченный список в одну строку в DynamoDB, потому что в конечном итоге вы можете столкнуться с ограничением размера элемента в 400 КБ.Кроме того, если вы читаете или пишете один эпизод одного шоу, вы расходуете ресурсы, как если бы вы читали или писали все эпизоды в шоу.
Взгляните на шаблон списка смежности .Это хороший выбор, потому что он позволит вам легко находить сезоны в сериале и эпизоды в сезоне.Вы также можете взглянуть на эту слайд-деку .В какой-то момент речь пойдет об иерархических данных, с которыми вы имеете дело.
Если вы можете предоставить больше информации о шаблонах запросов, я могу дать вам больше советов о том, как моделировать вашиДанные в таблице.
Обновление (2018-11-26)
Судя по вашим комментариям, вы должны использовать составные ключи для установления иерархических отношений 1-N.
Используя составной ключ сортировки DataType:ItemId
, где ItemId - это другой формат в зависимости от типа данных, вы получаете большую гибкость.Этот подход позволит вам легко получить сезоны в шоу, получить все эпизоды в всех сезонах, получить все эпизоды в определенном сезоне или даже получить все эпизоды между сезоном 1, эпизодом 5 и эпизодом сезона 25.
hash_key | sort_key | data
----------|-----------------|----------------------------
SHOW_1234 | SHOW:SHOW_1234 | {name:"Some TV Show", ...
SHOW_1234 | SEASON:SE_01 | {descr:"In this season, the main character...
SHOW_1234 | EPISODE:S01_E01 | {...
SHOW_1234 | EPISODE:S01_E02 | {...
Вот различные ключевые выражения условий для упомянутых мной запросов:
hash_key = "SHOW_1234" and sort_key begins_with("SEASON:")
- получает все сезоны hash_key = "SHOW_1234" and sort_key begins_with("EPISODE:")
-получает все эпизоды в течение всего сезона hash_key = "SHOW_1234" and sort_key begins_with("EPISODE:S02_")
- получает все эпизоды в сезоне 2 hash_key = "SHOW_1234" and sort_key between "EPISODE:S01_E5" and "EPISODE:S02_E5"
- получает все эпизоды между сезоном 1, эпизодом 5 и эпизодом 2 сезона 5