Подтвердить что ты не робот

Как работает ключ раздела DynamoDB?

Я пытаюсь понять, как создается раздел для таблиц DynamoDB.

Согласно этому блогу, "все элементы с одним и тем же ключом раздела хранятся вместе", так что если у меня есть таблица с идентификатором пользователя от 1 до 1000, значит ли это, что у меня будет 1000 разделов? Или до "внутренней хэш-функции", но как мы узнаем, сколько будет разделов?

Позже было предложено использовать случайный суффикс от 1 до 10 для равномерного распределения данных для каждого раздела, но как он узнает, что он запросит 10 раз для данного номера счета? Это только когда у вас 10 разделов? но в этом случае вы можете иметь тысячи номеров счетов, это означает, что будет создано такое же количество разделов, и запрос будет сделан для запроса номера счета

4b9b3361

Ответ 1

Когда создается таблица Amazon DynamoDB, вы можете указать желаемую пропускную способность в режиме чтения в секунду и записях в секунду. Затем таблица будет предоставлена на нескольких серверах (разделах), достаточных для обеспечения требуемой пропускной способности.

У вас нет видимости количества созданных разделов - он полностью управляется DynamoDB. Дополнительные разделы будут создаваться по мере увеличения количества данных или увеличения пропускной способности.

Скажем, вы запросили 1000 Чтений в секунду, и данные были внутренне разделены на 10 серверов (10 разделов). Каждый раздел будет обеспечивать 100 считываний в секунду. Если все запросы на чтение предназначены для одного и того же ключа раздела, пропускная способность будет ограничена 100 Чтениями в секунду. Если запросы распространяются по разным значениям, пропускная способность может составлять 1000 Чтений в секунду.

Если для одного и того же ключа раздела задано много запросов, это может привести к тому, что Горячий раздел ограничит общую доступную пропускную способность.

Подумайте об этом, как банк с линиями перед кассовыми окнами. Если все выйдут на одного кассира, можно будет обслуживать меньше клиентов. Более эффективно распространять клиентов во многих разных кассовых окнах. Хорошим ключом раздела для распространения клиентов может быть номер клиента, поскольку он отличается для каждого клиента. Плохой ключ раздела может содержать их почтовый индекс, потому что все они живут в одной и той же области рядом с банком.

Простое правило состоит в том, что вы должны выбрать ключ раздела, который имеет диапазон различных значений.

См.: разделы и распределение данных

Ответ 2

Как Per AWS DynamoDB Сообщение в блоге: выбор правильного ключа разделения DynamoDB

Выбор правого ключа DynamoDB Partition Key - важный шаг в разработке и создании масштабируемых и надежных приложений поверх DynamoDB.

Что такое ключ раздела?

DynamoDB поддерживает два типа первичных ключей:

Ключ раздела: также известный как хэш-ключ, ключ раздела состоит из одного атрибута. Атрибуты в DynamoDB во многом похожи на поля или столбцы в других системах баз данных.

Клавиша раздела и ключ сортировки: этот тип ключа называется составным первичным ключом или ключом хеширования, состоящим из двух атрибутов. Первым атрибутом является ключ раздела, а вторым атрибутом является ключ сортировки. Вот пример:

enter image description here

Зачем нужен ключ раздела?

DynamoDB хранит данные в виде групп атрибутов, называемых элементами. Элементы аналогичны строкам или записям в других системах баз данных. DynamoDB сохраняет и извлекает каждый элемент на основе значения первичного ключа, которое должно быть уникальным. Элементы распределяются между 10-Гбайт-хранилищами, называемыми разделами (физическое хранилище, внутреннее для DynamoDB). Каждая таблица имеет один или несколько разделов, как показано на рисунке 2. Дополнительные сведения см. В разделе Понимание поведения раздела в Руководстве для разработчиков DynamoDB.

DynamoDB использует значение ключей разделов как вход во внутреннюю хэш-функцию. Выход из хэш-функции определяет раздел, в котором элемент будет сохранен. Каждое местоположение элементов определяется хэш-значением его ключа раздела.

Все элементы с тем же ключом раздела хранятся вместе, а для составных ключей разделов упорядочиваются по значению ключа сортировки. DynamoDB разделяет разделы по ключам сортировки, если размер коллекции увеличивается более чем на 10 ГБ.

enter image description here

Рекомендации по разделам ключей

Используйте атрибуты высокой мощности. Это атрибуты, которые имеют разные значения для каждого элемента, такие как идентификатор электронной почты, employee_no, customerid, sessionid, order и т.д.

Используйте составные атрибуты. Попробуйте объединить несколько атрибутов, чтобы сформировать уникальный ключ, если это соответствует вашему шаблону доступа. Например, рассмотрите таблицу заказов с кодом customerid + productid + countrycode в качестве ключа раздела и order_date в качестве ключа сортировки.

Кэш популярных предметов, когда есть большой объем трафика чтения. Кэш действует как фильтр нижних частот, предотвращая чтение необычно популярных элементов из разделяемых разделов. Например, рассмотрим таблицу, в которой содержится информация о продуктах. Ожидается, что некоторые сделки будут более популярными, чем другие во время крупных событий продажи, таких как Black Friday или Cyber Monday.

Добавьте случайные числа/цифры из заданного диапазона для случаев использования с использованием записи. Если вы ожидаете большой объем записи для ключа раздела, используйте дополнительный префикс или суффикс (фиксированное число из предварительно определенного диапазона, скажем, 1-10) и добавьте его в ключ раздела. Например, рассмотрим таблицу транзакций счета-фактуры. Один счет-фактура может содержать тысячи транзакций на одного клиента.

Подробнее @Выбор правильного ключа раздела DynamoDB