DynamoDB: RCU WCU Strong/Eventual, capacity modes Flashcards
Что такое Consistent Read в DynamoDB?
Как это связано со структурой DynamoDB?
Под капотом DynamoDB реплицирует данные между серверами.
- Пишем данные во write-реплику.
- Читаем данные из read-реплики.
Подразумевается, что данные при чтении будут консистентны (НЕ противоречивы, без аномалий).
Поэтому операция чтения называется Consistent Read
.
Какие режимы чтения данных можно выбрать в dynamoDB?
Для чтения данных можно выбрать один из режимов:
- Strongly
Consistent Read
- Eventually
Consistent Read
Какие плюсы и минусы есть у Eventually Consistent Read?
“Данные будут НЕпротиворечивы В КОНЦЕ КОНЦОВ. Но НЕ факт, что сразу.”
При выборе Eventual Consistent Read Mode
есть вероятность получить УСТАРЕВШИЕ данные,
если чтение произошло слишком быстро:
сразу после записи и ДО момента репликации.
Операция чтения происходит максимально быстро.
Есть риск прочитать устаревшие данные.
Какие плюсы и минусы есть у Strongly Consistent Read?
“Данные будут НЕпротиворечивы 100% всегда.”
При выборе Strongly Consistent Read Mode
прочитанные данные ВСЕГДА будут точны и актуальны.
Операция чтения берёт больше времени.
Операция чтения стоит НЕМНОГО больше денег ($$$).
Как выполнять API операции методом Strongly Consistent Read?
Чтобы использовать Strongly Consistent Read Mode,
нужно выставить параметр ConsistentRead в true
при выполнении read API-операций.
Какие ключевые слова можно подобрать для мастабирования DynamoDB?
(throughputs) RCU и WCU, Capacity
Какие режимы масштабирования есть DynamoDB?
Как часто можно переключаться между ними?
Capacity Modes
- Provisioned Mode
(default) - вручную
- On-demand Mode
- автоматически
Каждые 24 часа можно переключаться между режимами.
Как утроен Provisioned Mode?
Когда его нужно выбирать?
- Указываем RCU и WCU вручную
- Платим за количество указанных RCU и WCU
НЕЗАВИСИМО от фактического использования
При выборе Provisioned Mode мы заранее должны иметь представление о потребностях приложения.
В Provisioned Mode: AutoScaling можно выбрать величины … и …
В случае превышения этих величин произойдёт …
А при исчерпании объёма этого … произойдёт ….
Эту проблему можно решать через … или …
min RCU и max RCU (аналогично для WCU)
Burst
Burst Capacity
Provisioned Throughput Exceeded Exception
Exponential Backoff Retry, увеличение WCU
Если мы превышаем лимиты выделенных RCU WCU, то получаем …
Дословно это обозначает …
Provisioned Throughput ExceedException
- Provisioned
- от слова Provisioned Mode, когда мы указываем RCU WCU вручную
- Throughput
- слово, обобщающее слова RCU WCU
Как утроен On-Demand Mode?
Как происходит оплата?
Что делать при Throttling’е?
Какой недостаток есть?
- RCU и WCU автоматически изменяются соразмерно нагрузке
- Платим только за то количество RCU и WCU,
которое ПО ФАКТУ мы используем - Throttling’а НЕ бывает, безлимитный объём нагрузки
При выборе On-demand Mode заранее потребности приложения знать НЕ нужно.
Уметь рассчитывать RCU WCU НЕ нужно.
Автоматический On-demand Mode гораздо ДОРОЖЕ ($$$) ручного Provisioned.
Примерно в 2.5 раза дороже, чем ручной Provisioned Mode.
Когда On-Demand Mode нужно выбирать?
Use Case
Поскольку On-Demand гораздо дороже, то использовать его следует только в случае Unpredictable Workload Traffic
.
Вычисления
1 WCU =
записать 1 KB/sec данных
Вычисления
Нужно писать 6 item’ов в секунду, каждый размером 4.5 KB
Сколько WCU?
нужно округлить 4.5 KB к бОльшему, то есть к 5 KB
6 item/sec * 5 KB = 30 WCU
Вычисления
1 RCU =
- прочитать 4 KB/sec данных методом Strongly Consistent
- ДВАЖДЫ прочитать 4 KB/sec данных методом Eventually Consistent