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

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

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

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

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

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


person Sam    schedule 14.01.2017    source источник


Ответы (1)


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

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

person Aravind Krishna R.    schedule 14.01.2017
comment
Спасибо, Аравинд. Возможно, мне придется пересмотреть свою стратегию идентификации. Из любопытства, считается ли межсекционный запрос, основанный на идентификаторе документа, дорогостоящей (с точки зрения RU) операцией? - person Sam; 15.01.2017
comment
Если вы хотите обсудить больше, отправьте электронное письмо по адресу [email protected]. Да, запрос между разделами по идентификатору является относительно дорогостоящим. - person Aravind Krishna R.; 15.01.2017
comment
@AravindKrishnaR .: Кодирование ключа раздела как части идентификатора является рекомендуемым шаблоном? Поделитесь своими мыслями по этому поводу в качестве ответа здесь ссылка, если у вас есть время . Ваше здоровье - person Chief Wiggum; 28.03.2018
comment
Что делать, если я не знаю значение ключа раздела и имею только идентификатор документа? Могу ли я использовать ReadDocumentAsync в этом сценарии? - person andrew; 05.03.2019