Документация AWS DynamoDB включает пример схемы для форума .Однако число вопросов, на которые эта схема может ответить, кажется очень небольшим.Кроме того, таблица, похоже, страдает от проблемы «горячих клавиш» (пакет ответов копируется в тот же раздел).
В заголовке доклада «Расширенные шаблоны проектирования для Amazon DynamoDB» докладчик около 43 минут разбивает сложный вариант использования от Audible, использующий только одну таблицу с 3 GSI (индексами).
Я пытаюсь изучить правильное моделирование DynamoDB, исходящее из стандартного RDBMS 3NF фона.Как бы был разработан форум для предотвращения горячих разделов при одновременном удовлетворении этих распространенных вариантов использования?
Запросы:
- Темы по форуму (отсортировано по дате публикации или по последнему ответу))
- Ответы по темам (отсортировано по дате публикации с нумерацией страниц)
- Ответы пользователя (отсортировано по дате публикации)
- Темы по пользователю (отсортировано по дате публикации)
- Темы с наибольшим количеством голосов
Базовая схема (?):
- Форум: Ключ раздела: Forum_GUID.Атрибуты: Имя, Desc
- Пользователь: Ключ раздела: User_GUID.Атрибуты: email, join_date
- Тема: Составной ключ: Forum_GUID, Topic_GUID.Атрибуты: posts_by, дата, голоса, тело, тема
- Ответ: Составной ключ: Topic_GUID, Reply_GUID.Атрибуты: posts_by, дата, голоса, тело
Я предполагаю, что существует несколько решений (в том числе с использованием одной таблицы).Я ищу любой ответ, который может решить эту проблему, предоставляя руководство о том, когда и как правильно использовать индексы для масштабирования записей приложения.