DynamoDB: RCU WCU Partitions Throttling, Transactions Flashcards
Что нужно знать о DynamoDB Partitions и RCU WCU?
RCU и WCU распределяются между partition’ами РАВНОМЕРНО
Например:
- есть 10 partition’ов
- выделено 10 RCU и 10 WCU
- каждый partition будет иметь по одному RCU и по одному WCU
Зачем знать, что RCU WCU распределены между Partitions равномерно?
Троглинг часто связан с избыточной нагрузкой на какой-то один конкретный partition, чем на всю таблицу.
- Hot Key - несоразмерно много item’ов с определённым partition key
- Hot Partition
Какие решения есть у проблемы Троттлинга DynamoDB?
- Exponential Backoff Retry (включен в SDK)
- Сделать распределение Partition Ключей более РАВНОМЕРНЫМ
- DynamoDB Accelerator DAX (если проблема в RCU)
Ключевые слова для DynamoDB Transactions
Consistency, ACID, “all or nothing”
Где НЕ работают транзакции DynamoDB? Почему?
Транзакции НЕ работают на глобальных таблицах (replication).
Потому что сложно организовать транзакцию на системе с распределёнными между AZ узлами.
Транзакции потребляют … RCU и WCU
ВДВОЕ (2x) больше, чем обычная операция
Вычисления
1 WCU =
записать 1 KB/sec данных
Вычисления
1 RCU =
- прочитать 4 KB/sec данных методом Strongly Consistent
- ДВАЖДЫ прочитать 4 KB/sec данных методом Eventually Consistent
Вычисления
Нужно писать 3 item’а в секунду ТРАНЗАКЦИОННО, каждый размером 5 KB
Сколько WCU?
3 item/sec * 5 KB * 2 (transactional cost) = 30 WCU
Вычисления
Нужно читать 5 item’ов в секунду ТРАНЗАКЦИОННО, каждый размером 5 KB
Сколько RCU?
Решение: транзакционное чтение подразумевает Strongly Consistent.
Округляем 5 KB до 8 KB.
5 item/sec * (8 KB / 4 KB) * 2 (transactional cost) = 20 WCU