Как мне разделить мои данные на коллекции в соответствии с моими требованиями

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

  • События телеметрии Интернета вещей
  • Справочные данные (прослушивание событий из внешних систем и их сохранение)
  • Читать модели — создание денормализованных представлений на основе данных из двух указанных выше источников.

Кроме того, мы будем использовать ленту изменений Cosmos db для событий IoT и справочных данных, поэтому я знаю, что для этого нам понадобится сбор данных об аренде.

Любая помощь или предложения были бы замечательными!


person Marco    schedule 03.11.2018    source источник


Ответы (1)


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

Разделение

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

Во-вторых, разделы имеют максимальный размер 10 ГБ (по крайней мере, на данный момент). Это означает, что если вы выберете ключ раздела, который в конечном итоге достигнет этого числа, то игра окончена, и вам придется перенести свою коллекцию на другой с ключом раздела, который имеет более разные значения.

Причина, по которой я упоминаю об этом, заключается в том, что несколько типов сущностей могут храниться в одной коллекции с единственным ограничением — ключом раздела. Если у них может быть общий ключ раздела (скажем, какой-то тип идентификатора, такой как eventId), то нет причин, по которым они не могут использовать одну и ту же коллекцию.

Масштабирование стоимости и пропускной способности

Ну, я солгал. Есть еще одна причина, по которой ваши объекты, возможно, не должны использовать одну и ту же коллекцию, и это масштабирование стоимости и пропускной способности. Наличие одной коллекции для каждого типа объекта имеет преимущество (потенциально) наличия более подходящего ключа раздела, а также возможности масштабирования независимо друг от друга. Это означает, что ваша коллекция событий телеметрии может быть подготовлена ​​со скоростью 600 ЕЗ/с, а ваши эталонные данные — со скоростью 400 ЕЗ/с. Опять же, это зависит от ожидаемой нагрузки, поэтому все зависит от вас. В долгосрочной перспективе это может привести либо к экономии денег, либо к большим затратам, чем следовало бы.

Изменить ленту

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

person Nick Chapsas    schedule 03.11.2018
comment
Круто, спасибо, Ник, это очень помогает. просто чтобы быть предельно ясным, я могу создать одну коллекцию аренды и поделиться ею с несколькими потоками изменений, которые отслеживают отдельные коллекции? - person Marco; 03.11.2018
comment
Ага. Есть префикс. свойство, которое можно настроить в конфигурации обработчика веб-канала изменений. Этот префикс будет использоваться для префикса documentid аренды в коллекции. - person Nick Chapsas; 03.11.2018
comment
Стоит взглянуть здесь и здесь - person Nick Chapsas; 03.11.2018