Распределение хранения больших данных для нереляционных данных - PullRequest
0 голосов
/ 02 марта 2019

Проблема состоит в большом количестве (ок. 500 млн. В день) нереляционных сообщений относительно небольшого размера (ок. 1 КБ).Сообщения пишутся один раз и больше никогда не изменяются.Сообщения имеют различные структуры, хотя существуют шаблоны, в которые должно вписываться сообщение. Затем эти данные должны использоваться для поиска по ним.Поиск может быть выполнен по любым полям сообщения, единственным всегда присутствующим полем является дата, поэтому поиск будет выполняться для определенного дня.

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

Эта стратегия дает 500G of data + 150G of indexes = 650G в день.Конечно, вопрос здесь заключается в том, как распространять эти данные?Очевидное решение - использовать монго Sharding и распределить коллекции по осколкам.Однако я не нашел ни одного сценария, близкого к моей проблеме, описанной в руководствах по монго.Более того, я даже не уверен, смогу ли я динамически (не вручную) добавлять новые коллекции каждый день в шарды.Любые знания / предложения от опытных пользователей?Должен ли я изменить свой дизайн?

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