Выбор между MongoDB и ElasticSearch - Масштабирование / Sharding - PullRequest
0 голосов
/ 08 июня 2018

В настоящее время я выбираю MongoDB и Elasticsearch в качестве бэкенда для платформы логирования и аналитики.Я планирую использовать кластер из 5 серверов Intel Xeon Quad Core с 64 ГБ оперативной памяти и по 500 ГБ NVMe на каждом.С 1 набором реплик, он должен поддерживать 1 ТБ + данных, которые я предполагаю.

Из того, что я прочитал на Elasticsearch, рекомендуемая установка для вышеуказанных серверов будет 5-10 сегментов, но они не могутбыть увеличено в будущем без огромной миграции.Так что, может быть, я могу добавить еще 5 серверов / узлов в кластер для того же индекса, но не 10 или 20, потому что я не могу создавать больше шардов для распространения на новые узлы / серверы - правильно?

MongoDBПо-видимому, автоматически управляет шардингом на основе значения ключа и перераспределяет эти шарды по мере добавления новых узлов.Значит ли это, что я могу добавить еще 50 серверов в кластер в будущем, и MongoDB с радостью распределит данные из этого одного индекса по всем серверам?

Мне сейчас нужно всего лишь 1 ТБ хранилища, ноне хочу заглядывать в угол, если этот набор данных в конечном итоге вырастет до 100 ТБ.

Без запуска Elasticsearch с 100 осколками в начале, что кажется неэффективным и плохой практикой, как его масштабировать после 5/ 10 серверов для этого единого набора данных?

1 Ответ

0 голосов
/ 10 июня 2018
  1. Как сказал Вэл, у вас обычно бывают индексы, основанные на времени, поэтому вы можете легко (быстрым способом) удалить данные после определенного периода хранения.Поэтому, поскольку ваши требования со временем меняются, вы меняете номер своего шарда (обычно через шаблон индекса).
  2. Текущие версии Elasticsearch теперь поддерживают _split API , который делает именно то, что выпросят: сначала использовать 5 осколков, но есть возможность подняться до любого коэффициента 20 (просто в качестве примера), так что 5 -> 10 -> 30 будут варианты.
  3. Если у вас есть 5первичные сегменты и коэффициент репликации 1, вы все равно можете распределить нагрузку по 10 узлам: записывает данные в 5 основных и 5 реплик;читает перейдет к любому из них.Модель записи / чтения Elasticsearch, как правило, отличается от модели MongoDB.

PS Отказ от ответственности: я сейчас работаю в Elastic, но я использую MongoDB в производстве также в течение 5 лет.

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