DynamoDB: Operations, Best Practices Flashcards
Какие write операции есть в DynamoDB?
- PutItem
- UpdateItem - может создать, если с таким PK ещё НЕ было
- DeleteItem
- DeleteTable - можно использовать как cleanUp вместе с createTable
Что такое conditional writes? Когда это может быть полезно?
в чём преимущество conditional writes?
Conditional Writes - выполнить write / update / delete, если удовлетворено условие. В противном случае вернуть error.
Полезно для concurrent операций (например можно проверять номер версии).
НЕ ухудшает performance.
Какие read операции есть DynamoDB?
Какое у них есть ограничение?
- GetItem
- Query
- Scan
Максимум вернёт 1 MB данных (нужно больше - пагинация).
А операция GetItem вообще вернёт максимум 400 KB (лимит размера item’а)
Какие опции есть у операции GetItem?
Нужно указать Read Consistency Mode.
Можно использовать Projection Expression прочитать только конкретные атрибуты.
Какие опции есть у операции Query?
Откуда можно читать данные?
Какие есть ограничения?
Можно указать FilterExpression, согласно которому часть записей отсеится до чтения из БД.
Можно указать Limit.
Можно запрашивать Table, Local Secondary Index, Global Secondary Index.
Какие опции есть у операции Scan?
- Можно указать Limit.
- Можно использовать Parallel Scan для максимального Performance (очень дорого $$$).
- Можно использовать Projection Expression прочитать только конкретные атрибуты.
В чём отличие разных операций чтения в плане фильтрации данных?
- Query может фильтровать данные внутри БД
- Scan - примитивный “SELECT *” - фильтровать можно только на стороне клиента
Какие недостатки есть у операции Scan?
- Потребляет много RCU (потому что SELECT *)
- Фильтровать можно только на стороне клиента
В чём суть батч-операций в DynamoDB?
Все операции в батче выполняются параллельно для лучшего performance.
Возможность экономить количество API операций через батчи.
Это могут быть разные операции (главное, чтобы все были read - или все были write)
‼️ Какие операции можно выполнять в BatchWriteItem?
Какие есть ограничения?
- до 25 PutItem операций И/ИЛИ DeleteItem операций
- до 16 MB данных, до 400 KB данных в item’е
- НЕЛЬЗЯ выполнять UpdateItem
‼️ Какие операции можно выполнять в BatchGetItem?
Какие есть ограничения?
параллельно за один раз выполнить несколько операций чтения
можно читать из нескольких таблиц
до 100 items, до 16 MB данных
Что происходит, если часть операций в батче провалилась?
Что можно с этим сделать?
Какие у этого могут быть причины?
Часть операций в батче может завершиться неудачно (failure).
Часто это может произойти из-за lack of read/write capacity
.
Тогда можно повторно выполнить операции ТОЛЬКО для UnprocessedItems
.
Например с использованием Exponential Backoff. Или с увеличением WCU/RCU.
Что такое PartiQL?
В чём его суть?
PartiQL - SQL-совместимый язык запросов для DynamoDB.
По сути PartiQL - это адаптер для SQL запросов, который преображает их в реальные DynamoDB операции.
Вместо обычных API операций по чтению/записи данных можно использовать SQL.
Как PartiQL связан с обычными операциями чтения записи в DynamoDB?
Никаких дополнительных операций, возможностей НЕ даёт.
Просто альтернативный формат выполнения операций.
Какие ограничения есть у PartiQL?
Нельзя сделать JOIN и агрегирующую функцию