Как я должен разделить мои данные в коллекции на основе моих требований - PullRequest
0 голосов
/ 03 ноября 2018

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

  • IoT Telemetry Events
  • Справочные данные (прослушивание событий из внешних систем и их сохранение)
  • Чтение моделей - Создание денормализованных представлений на основе данных из двух источников выше

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

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

1 Ответ

0 голосов
/ 03 ноября 2018

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

Разметка

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

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

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

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

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

Смена подачи

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

...