CRUD-операции в DynamoDB: Query и Scan

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

Dunieski Otano

AWS Solutions Architect

Дорогостоящая ошибка

  • Разработчик использует Scan для поиска одного пользователя
  • Читает таблицу из 1 миллиона элементов целиком
  • Счёт: $500 за один поиск
  • Query обошёлся бы в $0,01

ошибка

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

CRUD-операции в DynamoDB

  • PutItem: создать или заменить элемент
  • GetItem: прочитать элемент по первичному ключу
  • UpdateItem: изменить отдельные атрибуты
  • DeleteItem: удалить элемент
  • Query: получить элементы по ключу раздела (эффективно)
  • Scan: прочитать всю таблицу (дорого)

операции

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

Query и Scan: ключевое различие

  • Query: требует ключ раздела, читает конкретные элементы
    • Быстро, эффективно, недорого
  • Scan: читает всю таблицу, фильтрует после
    • Медленно, дорого, избегайте по возможности
  • Правило: знаете ключ — используйте Query. Нет — пересмотрите структуру.

scan

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

Предотвращение состояния гонки с помощью условных выражений

  • Проблема: два пользователя одновременно обновляют один элемент
  • Решение: условные выражения
  • Пример: обновление только при совпадении текущего значения с ожидаемым

гонка

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

Выражения UpdateItem: изменение атрибутов

  • SET: задать значение атрибута или создать новый
  • ADD: увеличить/уменьшить числа, добавить в наборы
  • REMOVE: удалить атрибуты из элемента
  • DELETE: удалить элементы из наборов

выражения

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

Пагинация с Query и Scan

  • Проблема: большие результаты превышают лимит 1 МБ
  • Решение: пагинация с LastEvaluatedKey
  • Limit: управление количеством элементов на странице
  • Продолжайте, пока LastEvaluatedKey не станет null

пагинация

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

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

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

Preparing Video For Download...