CosmosDB ChangeFeed всегда читает изменения из одного PartitionKeyRange - PullRequest
1 голос
/ 04 июня 2019

Я вставил в коллекцию CosmosDB 300 тыс. Документов, используя множество различных значений для атрибута ключа раздела, определенного для коллекции.Когда я пытаюсь читать из ChangeFeed (используя как функции Azure, так и образец ChangeFeedProcessor), я всегда получаю один поток, в котором происходят события со значением PartitionKeyRange 0.

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

Любое предложение?

ОБНОВЛЕНИЕ: Я запустил проект PartitionStats, включенный в samples для Cosmos DB, и вы можете увидеть под выводом.Кажется, я получаю только один "PartitionKeyRange" для всех моих "логических разделов".

enter image description here

1 Ответ

1 голос
/ 05 июня 2019

PartitionKeyRanges не эквивалентны ключам раздела. Это наименование немного сбивает с толку, и мы работаем над его изменением в следующих версиях наших SDK. Под ключами раздела следует понимать логическую группу данных, которыми вы можете управлять, а ключи разделов - это физическое представление группы, которой управляет серверная часть. Он состоит из (обычно) множества ключей логического раздела.

Число PartitionKeyRanges не может контролироваться вами, конечным пользователем, но вместо этого управляется бэкэндом для вас. Он определяется сочетанием зарезервированной пропускной способности, объема используемой памяти и шаблонов использования. Рекомендуется не создавать больше PartitionKeyRanges, так как это может измениться в любое время, но вместо этого сосредоточиться на обработке канала как можно быстрее. Вам может потребоваться поместить любую интенсивную загрузку ЦП, например, в очередь, где работа может быть дополнительно распараллелена без задержки обработки потока.

...