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

#mongodb #bigdata #non-relational-database

#mongodb #bigdata #нереляционная база данных

Вопрос:

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

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

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

Комментарии:

1. Могу ли я узнать причину ежедневного создания нескольких коллекций (около 2000)?

2. В итоге у меня получается 2000 шаблонов сообщений, которые вписываются в ограничение индекса 64 в mongo. Если вы объедините их все в одну коллекцию, у вас должно быть примерно столько индексов.

3. Каждый день вы получаете 2000 новых шаблонов?

4. Ах да, извините за это. 2000 типов сообщений. итак, если каждый день я получаю 500 миллионов сообщений, каждое из них будет иметь структуру (номер поля и имена), которая будет соответствовать одному из 2000 типов.

5. Таким образом, в этом случае создание коллекции — это одноразовое усилие. вам не нужно создавать коллекции динамически>