Почему я не должен помещать все свои данные в одну коллекцию CosmosDB? - PullRequest
0 голосов
/ 03 июля 2018

Проблема

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

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

Однако каждый сбор стоит не менее 24 долларов США в месяц. Это если я выберу «Исправлено», это ограничивает меня до 10 ГБ и НЕ масштабируется. Вряд ли смысл Cosmos DB, поэтому я бы предпочел выбрать «Безлимитный». Однако здесь цена составляет не менее 60 долларов в месяц.

60 долларов США в месяц за тип данных.

Это включает 1000 RU, но вдобавок к этому, я должен заплатить больше за потребление.

Это может быть нормально, если у меня есть несколько типов данных, но если я являюсь полноценным бизнес-приложением с 30 типами данных (что не редкость), оно становится по крайней мере 1800 долларов США в месяц. В качестве стартовой цены. Когда у меня еще нет данных.

Вопрос

Структура данных в коллекции не является строгой. Я могу хранить разные типы документов в одной коллекции.

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

Однако, почему я не просто включаю тип данных в ключ раздела?

Тогда ключ раздела становится примерно таким:

[customer-id]-[data-type]-[actual-partition-value, like 'state']

При одном быстром движении моя минимальная стоимость составляет 60 долларов США, а остальное основано на потреблении. Предположительно, ключи разделов обеспечивают удовлетворительную производительность независимо от объема данных. Так чего мне не хватает? Есть ли проблемы с этим подходом?

1 Ответ

0 голосов
/ 03 июля 2018

Нет, проблем не будет как таковых. Все сводится к тому, хорошо ли вам иметь 1000 RU / s или, точнее, одно узкое место, для всей вашей системы.

На самом деле вы можете упростить это еще больше, указав в качестве идентификатора раздела идентификатор своего документа. Это гарантирует уникальность идентификатора документа и максимально возможное распространение и масштаб в CosmosDB.

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...