Введение в Amazon DynamoDB

Использование хранилищ данных в AWS

Dunieski Otano

AWS Solutions Architect

Проблема горячей секции

  • Представьте ресторан: один кассир перегружен, три других простаивают
  • Именно это происходит при неудачном выборе ключа секции
  • Горячая секция = одна секция получает непропорционально большую нагрузку, остальные простаивают.
  • Решение: ключи секции с высокой кардинальностью — атрибуты с большим числом уникальных значений, обеспечивающие равномерное распределение данных

partition

Использование хранилищ данных в AWS

Что делает ключ секции хорошим

  • Высокая кардинальность: Много уникальных значений
    • userId, orderId, sessionId — Да
    • country, status, category — Нет
  • Равномерное распределение: Сбалансированные паттерны доступа
  • Предсказуемость: Значение известно в момент запроса

cardinality

Использование хранилищ данных в AWS

Структура таблицы DynamoDB

  • Ключ секции (обязательный): определяет распределение данных
  • Ключ сортировки (необязательный): позволяет выполнять запросы по диапазону (например, userId + orderDate)
  • Атрибуты: дополнительные поля данных
  • Первичный ключ = ключ секции ИЛИ ключ секции + ключ сортировки

table

Использование хранилищ данных в AWS

Создание первой таблицы

  • AWS Console: быстрая настройка для тестирования
  • boto3 (Python): создание таблицы программным способом
  • Ключевые параметры: ключ секции, ключ сортировки, режим оплаты

first

Использование хранилищ данных в AWS

Составные ключи и запросы по ключу сортировки

  • Составной ключ: ключ секции + ключ сортировки
  • Запросы по диапазону: по диапазонам дат, числовым диапазонам
  • Операторы: =, <, >, <=, >=, BETWEEN, begins_with
  • Пример: получить заказы пользователя за последние 30 дней на сумму > $100

code

Использование хранилищ данных в AWS

Режимы ёмкости: по запросу и резервированный

  • По запросу (On-Demand): оплата за каждый запрос, автоматическое масштабирование
    • Подходит для: непредсказуемой нагрузки, новых приложений
  • Резервированная (Provisioned): заданные RCU/WCU, ниже стоимость при масштабировании
    • Подходит для: предсказуемой нагрузки, оптимизации затрат
  • Переключение режимов — не чаще одного раза в 24 часа

mode

Использование хранилищ данных в AWS

Давайте потренируемся!

Использование хранилищ данных в AWS

Preparing Video For Download...