Является ли уникальный идентификатор лучшим ключом раздела для CosmosDB - PullRequest
0 голосов
/ 02 августа 2020

Я пытаюсь определить лучший ключ раздела для таблицы CosmosDB, которая имеет как идентификатор клиента (уникальное значение для каждого клиента), так и город клиента (в Северной Америке, который дает тысячи возможных значений).

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

Итак, мои вопросы:

  1. Хеширован ли каждый ключ раздела и содержит ли каждый раздел элементы с ключами с диапазоном хешей? Ie - если идентификатор клиента является ключом раздела, будет ли один раздел иметь идентификаторы от 1 до 1000, другой раздел с 1000 по 2000 и т.д. c? То же самое с городом, будет ли в одном разделе несколько городов? Или каждый раздел будет сопоставлен 1: 1 с определенным c ключом раздела - ie ID или городом?

  2. Исходя из вышеизложенного, какой из них будет лучше (подробнее исполнитель, дешевле)? Имеете как можно более точный ключ раздела (идентификатор клиента)? Или город клиента?

Спасибо!

1 Ответ

1 голос
/ 02 августа 2020
  • да, ключи разделов хешируются, и эти хэши определяют, где физически хранятся логические разделы.
  • нет, разделы всегда будут содержать записи только с одним и тем же ключом раздела (в основном суть связанные записи). Итак, в вашем примере они будут сопоставлены 1: 1
  • . Стоимость не имеет значения, потому что вы не платите за разделы (хотя у них есть ограничение на размер), поэтому вопрос сводится к производительности, и опять же, что все зависит от того, как ваше приложение запрашивает данные.

Хорошая аналогия для понимания того, как работает разбиение, - подумать о поиске чьего-либо адреса:

Если бы я дал вам ключ от своего дома (Идентификатор предмета), но ничего больше, вам нужно будет пробовать каждую дверь в мире, пока вы случайно не наткнетесь на нужную (также известный как запрос между разделами). Если бы я назвал вам страну (ключ раздела), вы могли бы немедленно удалить миллионы дверей, но вам все равно придется проверить миллионы дверей, так что это все еще не очень эффективно. Если бы я дал вам город, еще раз меньше, но еще многое нужно проверить .... но если я дал вам свой почтовый индекс, то мы только что оптимизировали запрос с миллиардов записей до 15-20.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...