DynamoDB: NoSQL без забот

Когда нужна молниеносная NoSQL-база без серверов — это DynamoDB.

DynamoDB — полностью управляемая NoSQL-база данных типа «ключ — значение» и «документ», работающая без серверов и масштабирующаяся автоматически.

Чем DynamoDB отличается от RDS

RDS — это привычные таблицы со строками, столбцами и SQL. DynamoDB устроена иначе: данные хранятся как элементы (items) в таблицах, но без жёсткой схемы столбцов и без JOIN-ов. Зато она даёт стабильно низкие задержки (единицы миллисекунд) на любом объёме данных и не требует управления серверами вообще.

Ключи: partition и sort

Главное в DynamoDB — первичный ключ. Он бывает простым (только partition key) или составным (partition key + sort key):

  • Partition key — определяет, в какой «корзине» (партиции) хранить элемент. От его выбора зависит распределение нагрузки.
  • Sort key — упорядочивает элементы внутри одной партиции, позволяя делать запросы по диапазону.
{
  "TableName": "Orders",
  "Item": {
    "UserId":  { "S": "user-42" },
    "OrderId": { "S": "2026-06-22-001" },
    "Total":   { "N": "1990" },
    "Status":  { "S": "paid" }
  }
}

Здесь UserId — partition key, OrderId — sort key. Запрос «все заказы пользователя user-42» отработает мгновенно, потому что они лежат в одной партиции и отсортированы по ключу.

Когда что выбирать

НужноВыбор
Сложные связи, JOIN, отчёты, транзакцииRDS (реляционная)
Простой доступ по ключу, огромный масштаб, минимальная задержкаDynamoDB (NoSQL)

Как работает под капотом

DynamoDB размазывает данные по множеству физических разделов (партиций) на основе хеша от partition key. Запрос по ключу попадает сразу в нужную партицию, минуя перебор — отсюда постоянная скорость независимо от размера таблицы. Поэтому критично выбрать partition key с хорошим разбросом значений: если все запросы бьют в один ключ, образуется «горячая партиция» и упрётесь в её лимит. Данные автоматически реплицируются по нескольким AZ, а ёмкость можно отдать на откуп режиму on-demand, где вы платите только за реальные запросы.

Частые ошибки

  • Тащить реляционную модель в DynamoDB. Здесь нет JOIN; схему данных проектируют под конкретные запросы заранее.
  • Плохой partition key. Ключ с малым разбросом создаёт горячую партицию и упирается в лимиты.
  • Брать DynamoDB ради «модно». Если нужны сложные отчёты и связи — реляционный RDS будет проще и удобнее.

Итог

  • DynamoDB — управляемая NoSQL-база с постоянно низкой задержкой и автомасштабированием.
  • Первичный ключ (partition + опционально sort) определяет хранение и скорость запросов.
  • Выбирайте DynamoDB для простого доступа по ключу и масштаба; RDS — для связей, JOIN и отчётов.
Проверьте себя
1. Какую возможность НЕ даёт DynamoDB по сравнению с реляционной RDS?
AНизкую задержку
BJOIN-ы между таблицами
CАвтомасштабирование
DХранение по ключу
2. Почему важен хороший выбор partition key?
AОт него зависит цвет консоли
BПлохой ключ создаёт «горячую партицию» и упирается в лимиты
CОн задаёт регион
DОн не важен