Я пытаюсь разработать службу профилей пользователей ( Базовый веб-API Asp.Net ), которая имеет постоянное хранилище как Azure Cosmos DB . Даже прочитав различные статьи, я не смог найти подходящий ключ раздела для этого сервиса. По разным статьям
ключ раздела (логический раздел) должен иметь тот, у которого есть даже шаблоны доступа. Идеальный ключ раздела - это ключ, который часто появляется в качестве фильтра в ваших запросах и имеет достаточную мощность , чтобы обеспечить масштабируемость вашего решения.
Ниже приведен пример документа, который хранится в Azure Cosmos DB (SQL API).
{
"id": <<Id>>,
"uniqueBusinessId": <<uniqueBusinessId>>,
"userName": <<userName>>,
"isActive": <<isActive>>,
"email" : <<email>>
"salutation": <<"salutation>>
"firstName": <<firstName>>,
"middleName": <<middleName>>,
"lastName": <<lastName>>,
"companyName": <<companyName>>,
"jobTitle": <<jobTitle>>
"address": [
{
"countryCode": <<Country Code>>,
"stateProvinceCode": <<StateProvinceCode>>,
"address1": <<addressLine1>>,
"address2": null,
"city": <<city>>,
"postalCode": <<postalCode>>,
}
]
"phone": [
{
"countryCode": <<Country Code>>,
"areaCode": <<area Code>>,
"number": <<number>>,
"extension": <<extension>>
}
]
}
Для каждого пользователя в коллекции будет один документ, и 99% запросов будут извлекать данные на основе uniqueBusinessId
, который является уникальным идентификатором для каждого пользователя (в системе будет около 1 миллиона пользователей).
Если я выберу uniqueBusinessId
для вышеуказанной коллекции в качестве ключа раздела, это означает, что он создаст 1 миллион логических разделов (и у него не будет кардинального числа). uniqueBusinessId
правильный кандидат на ключ раздела? Я могу выбрать ключ раздела как /address/city
или любой другой ключ в документе, чтобы иметь хорошую мощность; но проблема, которую это создаст с запросами, так как они будут перекрестным сканированием для фильтрации документов на основе uniqueBusinessId
.
Есть ли какие-либо предложения относительно того, каким должен быть соответствующий ключ раздела для вышеуказанного документа?