Распределение хранения больших данных для нереляционных данных

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

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

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

0 ответов

Другие вопросы по тегам