Несмотря на то, что нет никаких стандартных правил, лучший подход, который я вижу в качестве руководства, - это просмотреть;
- Функции DynamoDB (ключи, индексы)
- Пределы
- Модель ценообразования
до проектирования таблиц. В вашем случае, компромисс в наличии атрибутов таков:
- Возможность индексирования для эффективных запросов (Лучшая производительность, исключающая сканирование, Низкое использование IOPS, что приводит к снижению затрат).
- Проецируйте только необходимые атрибуты.
- Но ограничивает гибкость в моделировании.
С другой стороны, наличие вложенных атрибутов JSON позволяет;
- Больше атрибутов и гибкости в структуре.
- Больше к структуре документа, переходящей от природы Key-Value.
- Но ограничивает эффективные запросы глубоко вложенных атрибутов.
- Более дорого с точки зрения IOPS, поскольку весь вложенный атрибут должен быть извлечен даже для чтения вложенного атрибута (что также увеличивает стоимость).
Поскольку также возможно иметь ключи, примитивные атрибуты и вложенные атрибуты в одной таблице, было бы лучше использовать их в комбинации, в каждом конкретном случае скорее придерживаясь одной модели.