Когда и как в Dynamodb GSI разделены ключ разделения и ключ сортировки?
- Когда и как в Dynamodb GSI разделены ключ разделения и ключ сортировки?
- Существует ли ограничение на максимальный размер разделов GSI, таких как разделы таблиц?
- Если да, то что произойдет, когда однокарточный GSI (т. Е. GSI, имеющий одинаковый ключ разделения для всех записей) превысит лимит хранилища?
3 ответа
1) Смотрите мой ответ здесь /questions/25562645/kak-rabotayut-tablitsyi-razdelov-dynamodb/25562648#25562648 чтобы узнать, как таблицы разделены. GSI - это просто новая таблица, она разделена так же, как и ваша базовая таблица.
https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.Partitions.html
Глобальные вторичные индексы в DynamoDB также состоят из разделов. Данные в GSI хранятся отдельно от данных в его базовой таблице, но разделы индекса ведут себя так же, как разделы таблицы.
2) Да, 10 ГБ
3) Это интересный вопрос, и у меня нет ответа. Динамо обращается к правильному разделу на основе ключа раздела данных, поэтому, если вы заполните более одного раздела одним ключом раздела, вероятно, у вас возникнут проблемы. При этом вам, вероятно, понадобится как минимум 2,5 миллиона элементов с одним и тем же ключом раздела (10 ГБ / 4 КБ). Это возможный сценарий для вас?
- Да, это работает так же, как и разделение таблицы.
- Да, по 10 ГБ на раздел, также как и для самой таблицы.
- Поведение точно такое же, как и для основной таблицы. Dynamo начнет распределять данные между разделами с помощью ключа сортировки, т.е. ничего особенного не происходит.
Вот хороший пост в блоге, объясняющий, как работает разбиение: https://aws.amazon.com/blogs/database/choosing-the-right-dynamodb-partition-key/
Все элементы с одним и тем же ключом раздела хранятся вместе, а для составных ключей раздела упорядочиваются по значению ключа сортировки. DynamoDB разбивает разделы по ключу сортировки, если размер коллекции превышает 10 ГБ.
Если да, то что произойдет, когда однокординальный GSI (т. Е. GSI, имеющий один и тот же ключ раздела для всех записей) превышает предел хранения?
Раздел DynamoDB может обрабатывать только 1000 WCU в секунду. Кроме того, DDB допускает только 400 WCU на запись. Если ваш GSI превышает WCU, запись в основную таблицу также регулируется. Итак, если ваши записи составляют около 400 КБ, скорость запросов около 2,5 может привести к поломке вашего раздела.