Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Требуется ли ключ раздела при извлечении по идентификатору документа

Автор вопроса: SamОтветов: 1

Можно ли получить документ по его идентификатору без указания ключа раздела?

Насколько я понял из документации , запрос будет разветвляться по всем разделам, если ключ раздела не указан:

Следующий запрос не имеет фильтра по ключу раздела (DeviceId) и распределяется по всем разделам, где он выполняется по индексу раздела. Обратите внимание, что необходимо указать EnableCrossPartitionQuery (x-ms-documentdb-query-enablecrosspartition в REST API), чтобы SDK выполнял запрос между разделами.

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

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

azure-cosmosdbpartitioning

Ответы

Ответ 1 · рейтинг 7 · Aravind Krishna R.

Запрос только по идентификатору будет операцией перекрестного разбиения. Вы должны включить ключ раздела в эти запросы в FeedOptions.PartitionKey или как часть фильтра. В DocumentDB идентификатор не уникален для всех документов в коллекции. Вместо этого комбинация "ключ раздела" и "id" является первичным ключом и однозначно идентифицирует документы в коллекции.

Некоторые приложения кодируют ключ раздела как часть идентификатора, например ключом раздела будет идентификатор клиента, а ID = "customer_id.order_id", поэтому вы можете извлечь ключ раздела из значения идентификатора.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы