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

Використання сховищ даних в AWS

Dunieski Otano

AWS Solutions Architect

Запит, який неможливо було виконати

  • Таблиця: userId (partition key), orderDate (sort key)
  • Потреба: знайти замовлення за адресою email
  • Проблема: не можна робити запити за неключовими атрибутами
  • Рішення: Global Secondary Index
    • Індекси дають кілька патернів доступу

gsi

Використання сховищ даних в AWS

Global Secondary Index (GSI)

  • Інший partition key, ніж у базовій таблиці
  • Можна додати будь-коли після створення таблиці
  • Лише читання з остаточною узгодженістю
  • Використання: запити за неключовими атрибутами

gsi_1

Використання сховищ даних в AWS

Local Secondary Index (LSI)

  • Той самий partition key, інший sort key
  • Потрібно створити під час створення таблиці
  • Підтримує сильно узгоджені читання
  • Використання: альтернативне сортування в межах розділу

lsi

Використання сховищ даних в AWS

GSI vs LSI — коли що використовувати

  • GSI: Інший partition key, можна додати будь-коли, остаточна узгодженість
  • LSI: Той самий partition key, створюється разом із таблицею, сильна узгодженість
  • Найчастіше: GSI для гнучких патернів доступу

gsi_or_lsi

Використання сховищ даних в AWS

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

  • Проблема: DynamoDB не зберігає об'єкти Python
  • Рішення: серіалізувати в JSON або бінарний формат
  • JSON: прості дані (dict, list) — json.dumps()
  • Base64: бінарні дані (зображення, токени)

serialization

Використання сховищ даних в AWS

DynamoDB Streams для фіксації змін даних

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

streams

Використання сховищ даних в AWS

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

  • TTL: автоматичне видалення елементів після строку дії
  • Вкажіть Unix-мітку часу в атрибуті TTL
  • Ідеально для: сесій, тимчасових токенів, кешу
  • Видалення за TTL не коштують грошей

ttl

Використання сховищ даних в AWS

Типи проєкцій індексу та швидкодія запитів

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

index

Використання сховищ даних в AWS

Пакетні операції та транзакції

  • BatchGetItem: читання до 100 елементів, максимум 16 MB
  • BatchWriteItem: запис до 25 елементів
  • TransactWriteItems: ACID для до 100 елементів
  • Використовуйте для: ефективності (batch) або узгодженості (транзакції)

batch

Використання сховищ даних в AWS

Давайте потренуємось!

Використання сховищ даних в AWS

Preparing Video For Download...