DynamoDB: Operations, Best Practices Flashcards

1
Q

Какие write операции есть в DynamoDB?

A
  • PutItem
  • UpdateItem - может создать, если с таким PK ещё НЕ было
  • DeleteItem
  • DeleteTable - можно использовать как cleanUp вместе с createTable
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Что такое conditional writes? Когда это может быть полезно?
в чём преимущество conditional writes?

A

Conditional Writes - выполнить write / update / delete, если удовлетворено условие. В противном случае вернуть error.

Полезно для concurrent операций (например можно проверять номер версии).

НЕ ухудшает performance.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Какие read операции есть DynamoDB?
Какое у них есть ограничение?

A
  • GetItem
  • Query
  • Scan

Максимум вернёт 1 MB данных (нужно больше - пагинация).
А операция GetItem вообще вернёт максимум 400 KB (лимит размера item’а)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Какие опции есть у операции GetItem?

A

Нужно указать Read Consistency Mode.
Можно использовать Projection Expression прочитать только конкретные атрибуты.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Какие опции есть у операции Query?
Откуда можно читать данные?
Какие есть ограничения?

A

Можно указать FilterExpression, согласно которому часть записей отсеится до чтения из БД.
Можно указать Limit.

Можно запрашивать Table, Local Secondary Index, Global Secondary Index.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Какие опции есть у операции Scan?

A
  • Можно указать Limit.
  • Можно использовать Parallel Scan для максимального Performance (очень дорого $$$).
  • Можно использовать Projection Expression прочитать только конкретные атрибуты.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

В чём отличие разных операций чтения в плане фильтрации данных?

A
  • Query может фильтровать данные внутри БД
  • Scan - примитивный “SELECT *” - фильтровать можно только на стороне клиента
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Какие недостатки есть у операции Scan?

A
  • Потребляет много RCU (потому что SELECT *)
  • Фильтровать можно только на стороне клиента
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

В чём суть батч-операций в DynamoDB?

A

Все операции в батче выполняются параллельно для лучшего performance.
Возможность экономить количество API операций через батчи.
Это могут быть разные операции (главное, чтобы все были read - или все были write)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

‼️ Какие операции можно выполнять в BatchWriteItem?
Какие есть ограничения?

A
  • до 25 PutItem операций И/ИЛИ DeleteItem операций
  • до 16 MB данных, до 400 KB данных в item’е
  • НЕЛЬЗЯ выполнять UpdateItem
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

‼️ Какие операции можно выполнять в BatchGetItem?
Какие есть ограничения?

A

параллельно за один раз выполнить несколько операций чтения
можно читать из нескольких таблиц

до 100 items, до 16 MB данных

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Что происходит, если часть операций в батче провалилась?
Что можно с этим сделать?
Какие у этого могут быть причины?

A

Часть операций в батче может завершиться неудачно (failure).

Часто это может произойти из-за lack of read/write capacity.

Тогда можно повторно выполнить операции ТОЛЬКО для UnprocessedItems.
Например с использованием Exponential Backoff. Или с увеличением WCU/RCU.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Что такое PartiQL?
В чём его суть?

A

PartiQL - SQL-совместимый язык запросов для DynamoDB.

По сути PartiQL - это адаптер для SQL запросов, который преображает их в реальные DynamoDB операции.

Вместо обычных API операций по чтению/записи данных можно использовать SQL.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Как PartiQL связан с обычными операциями чтения записи в DynamoDB?

A

Никаких дополнительных операций, возможностей НЕ даёт.
Просто альтернативный формат выполнения операций.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Какие ограничения есть у PartiQL?

A

Нельзя сделать JOIN и агрегирующую функцию

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Какие есть способы сделать CleanUp таблицы?

A
  • Сделать DeleteTable и CreateTable - быстро, оптимально
  • Сделать Scan и множество DeleteItem запросов - дорого, НЕ оптимально
17
Q

Какие есть способы сделать Copy таблицы?

A
  • Сделать Backup и Restore - берёт время
  • Сделать Scan и множество PutItem запросов или BatchWriteItem - нужно писать кастомный код
  • Сделать AWS Data Pipeline - запустит AWS EMR Cluster для перекачки данных
18
Q

Какой общий максимальный объём данных можно прочитать за BatchGetItem?
Какой общий максимальный объём данных можно записать за BatchWriteItem?

A

16 MB
16 MB