Ключ раздела Azure Cosmos DB - приемлем ли первичный ключ? - PullRequest
0 голосов
/ 28 июня 2018

Наша коллекция Azure Cosmos DB стала достаточно большой, чтобы требовать ключ раздела. Прочитав немного об этом, у меня сложилось впечатление, что лучшим ключом раздела является тот, который обеспечивает равномерное распределение и большую мощность. Эта статья от Microsoft обсуждает это.

Использование первичного ключа в качестве ключа раздела обеспечивает равномерное распределение, но количество элементов всего 1. Если это мой единственный вариант, это плохо? Вышеупомянутая статья дает несколько примеров и, кажется, указывает, что первичный ключ должен использоваться в качестве ключа раздела в этих случаях. В случае Azure Cosmos DB разделы являются логическими, а не физическими. Таким образом, это не приведет к тому, что каждый документ будет размещен на отдельном диске, но кажется, что это может привести к раздутому индексу.

Является ли использование первичного ключа в качестве ключа раздела обычной практикой? Есть ли у него недостатки?

Ответы [ 3 ]

0 голосов
/ 28 июня 2018

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

С точки зрения производительности, если поле вашего запроса не является ключом раздела, ваш запрос определенно снизит производительность запроса путем пересечения разделов. Конечно, если объем данных невелик, это не окажет большого влияния.

С точки зрения стоимости, Cosmos db взимается в основном за объем памяти и потребление RU. Как вы сказали, выбор первичного ключа в качестве ключа раздела приведет к увеличению хранилища индексов. Если в основном запросы относятся к нескольким разделам, это также приводит к большему потреблению RU.

С точки зрения использования хранимых процедур, триггеров или UDF, вы не можете использовать транзакции с несколькими разделами через хранимые процедуры и триггеры. Потому что затем разделены так, что вам нужно указать ключ разделения (количество элементов только 1) при их использовании.

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

Более подробную информацию можно найти в официальном документе .

Надеюсь, это поможет вам.

0 голосов
/ 01 июля 2018

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

Это гарантирует уникальность значения, которое, кроме уникальных ключей, является единственным способом достижения. Распределение будет равномерным, и поскольку первичный ключ будет вашим ключом раздела, вы сможете использовать его для извлечения документа путем его чтения, а не запросов, что снижает скорость и стоимость операции.

0 голосов
/ 28 июня 2018

Нет, в этом нет недостатков. Стремитесь иметь ключ раздела с высокой мощностью. Не беспокойтесь об индексах или физических разделах и т. Д.

Вы можете иметь миллион ключей разделов и 10 физических разделов. Физические разделы создаются за кулисами CosmosDB. Вы никогда не должны беспокоиться о физических разделах.

...