Плохая производительность запросов к Cosmos DB (Mon go DB API) между разделами - PullRequest
0 голосов
/ 23 апреля 2020

Мне нужна ваша помощь в решении проблемы, касающейся перекрестного запроса, у меня есть коллекция (mon go db api), которая хранит записи с типом раздела как «applicationType». Это прекрасно работает, когда я знаю тип моего приложения, который в основном удовлетворяет 75% моих пользователей, но мало стратегических клиентов, которые хотят, чтобы мы предоставляли данные на основе производителя, который не является частью раздела. Когда я запрашиваю без Типа приложения, запросы выполняются очень плохо.

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

{
               "_id" : ObjectId("5ad5d6b7529cd2007ba73bc8"),
               "applicationType" : "Highbay",
               "name" : "X",
               "subSeries" : "X1",
               "fullSeriesName" : "C1X", 
               "manufacturer": "cre"
               ...
               ...
               ...

}
,
{
               "_id" : ObjectId("5ad5d6b7529cd2007ba73bc8"),
               "applicationType" : "AreaLight",
               "name" : "X",
               "subSeries" : "X1", (mongo db 
               "fullSeriesName" : "C1X", 
               "manufacturer": "cre"
               ...
               ...
               ...

Ответы [ 2 ]

0 голосов
/ 23 апреля 2020

Вы можете создать две разные коллекции, одну для постоянных клиентов, разделенных на «ApplicationType», и для стратегических c клиентов, разделенных на «производителя».

0 голосов
/ 23 апреля 2020

Это общий шаблон для многораздельных хранилищ данных.

Решение для пользователей Mon go заключается в использовании Change Streams и записи всех данных в другую коллекцию с использованием другого ключ разбиения (shard) или предварительно вычислите любые значения, которые вам нужны для ответа на эти запросы как внутрираздельные.

Вам понадобятся некоторые вычисления для размещения процесса, когда вы выполняете coll.watch и некоторые другие предупреждения, которые описаны в приведенной выше ссылке.

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

...