Индексы, потоки и оптимизация в DynamoDB

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

Dunieski Otano

AWS Solutions Architect

Запрос, который невозможно выполнить

  • Таблица: userId (ключ раздела), orderDate (ключ сортировки)
  • Задача: найти заказы по адресу электронной почты
  • Проблема: нельзя делать запрос по неключевым атрибутам
  • Решение: Global Secondary Index
    • Индексы открывают множество шаблонов доступа

gsi

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

Global Secondary Index (GSI)

  • Другой ключ раздела, чем у базовой таблицы
  • Можно добавить в любой момент после создания таблицы
  • Только чтение с итоговой согласованностью
  • Применение: запрос по неосновным ключевым атрибутам

gsi_1

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

Local Secondary Index (LSI)

  • Тот же ключ раздела, другой ключ сортировки
  • Создаётся только при создании таблицы
  • Поддерживает строго согласованное чтение
  • Применение: альтернативная сортировка внутри раздела

lsi

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

GSI или LSI — когда что использовать

  • GSI: другой ключ раздела, добавляется в любое время, итоговая согласованность
  • LSI: тот же ключ раздела, создаётся при создании таблицы, строгая согласованность
  • Чаще всего используется: GSI для гибких шаблонов доступа

gsi_or_lsi

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

Сериализация данных для DynamoDB

  • Проблема: DynamoDB не хранит объекты Python
  • Решение: сериализация в JSON или бинарный формат
  • JSON: простые данные (словари, списки) — json.dumps()
  • Base64: бинарные данные (изображения, токены)

serialization

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

DynamoDB Streams для захвата изменений данных

  • Потоки: упорядоченный журнал всех изменений таблицы
  • Фиксируют: вставки, обновления, удаления
  • Применение: журналы аудита, репликация, триггеры
  • Обработка через Lambda для реакции в реальном времени

streams

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

Time-to-Live для автоматического истечения срока

  • TTL: автоматическое удаление элементов по истечении срока
  • Укажите Unix-метку времени в атрибуте TTL
  • Подходит для: сессий, временных токенов, кеша
  • Удаление по TTL бесплатно

ttl

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

Типы проекций индексов и производительность запросов

  • KEYS_ONLY: только ключевые атрибуты, минимальный размер
  • INCLUDE: ключи + указанные атрибуты
  • ALL: все атрибуты, максимальный размер, без дополнительных запросов
  • Компромисс: стоимость хранения vs производительность запросов

index

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

Пакетные операции и транзакции

  • BatchGetItem: чтение до 100 элементов, максимум 16 МБ
  • BatchWriteItem: запись до 25 элементов
  • TransactWriteItems: ACID для до 100 элементов
  • Используйте: batch для эффективности, транзакции для согласованности

batch

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

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

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

Preparing Video For Download...