Я создаю систему журналирования для наблюдения за нашими (200 ish) основными установками приложений, и Cosmos db кажется подходящим из-за количества данных, которые мы собираем, и для того, чтобыизменяющаяся схема для данных журнала (в частности, массив Tags
- см. схему документа ниже).
Но, никогда не использовав CosmosDb до того, как я немного сомневаюсь, что использовать для ключа раздела.
Если я разделю на CustomerId
, вероятно, будет несколько Gb
данных в каждом из 200 разделов, и данные будут обычно запрашиваться CustomerId
, так что это был мой первый выбор для ключа раздела,
Однако я планировал иметь представление «поток журналов» в системе ведения журнала, показывающее журналы, поступающие для всех клиентов .
- Приведет ли это к запуску ужасно медленного / дорогостоящего перекрестного запроса?
Если это так, есть ли очевидный способ избежать / ограничить влияние затрат и скорости на эти запросы кросс-разделов?(За исключением того, что вы получаете представление потока журнала для всех клиентов!)
{
"CustomerId": "be806507-7cc4-4db4-881b",
"CustomerName": "Our Customer",
"SystemArea": 1,
"SystemAreaName": "ExchangeSync",
"Message": "Updated OK",
"Details": "",
"LogLevel": 2,
"Timestamp": "2018-11-23T10:59:29.7548888+00:00",
"Tags": {
"appointmentId": "109654",
"appointmentGroupId": "86675",
"exchangeId": "AAMkA",
"exchangeAlias": "customer.name@customer.com"
}
}
(Примечание. Пока еще не определен список типов SystemArea
, которые мы будем использовать, но этобыло бы намного меньше, чем 200 клиентов)