DynamoDB: Streams, Replications, Session Cache, DAX, Optimistic Lock Flashcards

1
Q

DynamoDB Stream позволяет …

A

отлавливать (capture) события (events) изменения данных в DynamoDB таблице

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

DynamoDB Stream Record может хранить (на выбор)

A
  • KEYS_ONLY
  • NEW_IMAGE
  • OLD_IMAGE
  • NEW_AND_OLD_IMAGE

IMAGE = DynamoDB item

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

Кто может читать данные из DynamoDB Stream?

A
  • можно отправлять в Kinesis Data Stream
  • Lambda может читать их (через Event Source Mapper)
  • Приложение, использующее Kinesis Client Library, может читать их
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Сколько составляет retention DynamoDB Stream?
Что, если нужно больше?

A

Retention event’ов в DynamoDB Stream составляет 24 часа.
Если нужно хранить их дольше, то их придётся слать например в Kinesis.

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

В чём отличие и сходство DynamoDB Stream и Kinesis Data Stream?

A

DynamoDB Stream имеет схожее устройство с Kinesis Data Stream.
DynamoDB Stream тоже состоит из Шардов.

В отличие от KDS, DynamoDB Stream - это managed сервис.
Так что количество шардов регулируется самим AWS’ом автоматически.

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

Что такое Retroactive? Как это связано с DynamoDB Stream?

A

Если активировать DynamoDB Stream для DynamoDB таблицы,
которая уже имеет записи,
то эти записи НЕ попадут в Stream.

DynamoDB Stream is NOT retroactive

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

Что такое Global Table в DynamoDB?
На что похоже?
Какие есть pre-requisites для активации этой фичи?

A

DynamoDB Global Table - фича позволяет реплицировать DynamoDB таблицу по разным регионам.
- Реплики автоматически синхронизируют (propagate) данные между собой.

Сама идея репликации table’ов похожа на S3 Cross-Region-Replication.

Чтобы активировать DynamoDB Global Table, нужно сначала активировать DynamoDB Stream.

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

Какие альтернативы DynamoDB можно использовать для хранения сессии в кэше?
А какие нельзя? Почему?

A
  • ElastiCache - in-memory Key-Value cache store
  • DynamoDB - serverless Key-Value cache store
  • EFS - file-system

Нельзя EBS и InstanceStore, т.к. они НЕ shared между EC2 instancе’ами

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

Что такое DAX?
На основе чего он устроен?
Какую проблему решает?

A

DynamoDB Accelerator (”DAX”) - фича, которая позволяет повысить скорость чтения из таблиц.

Работает на основе обыкновенного КЭШирования.

DAX решает проблему “Hot Key”, Throttling

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

Какие изменения в коде нужно внести, чтобы начать использовать DAX?
Какие API операции у него есть?

A

Чтобы начать использовать DAX, НЕ нужно изменять код приложения.
Он совместим с существующими API операциями.

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

Из чего состоит DAX кластер?
Сколько штук?
Как их настраивать?

A
  • DAX кластер состоит из узлов.
    • Максимум 10 DAX nodes
    • Можно иметь DAX узлы в разных AZ (минимум 3 рекомендуют)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Можно ли шифровать данные в DAX?

A

Также как и в DynamoDB - Encryption at rest через KMS

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

Какая есть альтернатива DAX?
Когда использовать что?

A
  • DAX для простых запросов (Query, Scan) и индивидуальных item’ов
  • ElastiCache для больших результатов агрегирующих запросов

Можно комбинировать DAX и ElastiCache, используя их сильные стороны.

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

В чём суть Optimistic Locking в DynamoDB?
Какую проблему это решает?
Что это напоминает?

A

Выполнить операцию Update / Delete,
только если item НЕ изменился перед выполнением операции.

Решает проблему потери операции при параллельном выполнении двух операций.

Напоминает оптимистичная блокировка SQL БД
Напоминает CAS принцип в многопоточности

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

Как реализовать Optimistic Locking в DynamoDB?

A
  • Выбирается атрибут, который играет роль version number
  • Conditional Write по этому атрибуту (модифицировать запись только если значение версии НЕ изменилось)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly