Какие преимущества предлагает MongoDB над ElasticSearch только как база данных NoSQL

Я новичок в базе данных NoSql, но я действительно люблю MongoDB с официальным драйвером С#. В настоящее время это бэкэнд для приложения MVC, которое я пишу, а простота и скорость облегчают мою жизнь.

Однако я пришел к этому моменту в приложении, где мне нужен действительно отличный поиск. Я использовал Solr, но заинтересовался ElasticSearch.

ElasticSearch, насколько я могу судить (с очень поверхностного уровня), может делать все, что может сделать MongoDB в терминах базы данных документов.

Итак, если я уже использую NoSql db, и мне нужен отличный поиск, есть ли смысл в Mongo? Какой прецедент?

Является ли Mongo быстрее? Легче использовать? Это типы данных BSON и драйверы? Почему бы не использовать ElasticSearch как мою БД?

В настоящее время я использую AppHarbor и люблю "Облако". Я ненавижу ИТ и хочу сосредоточиться только на своем приложении. С учетом сказанного, единственное преимущество, которое я вижу до сих пор:

  • Уже существует ряд "облачных" поставщиков MongoDB. С ElasticSearch я должен сам все настроить.

Ответ 1

Это очень хороший вопрос. Я задал себе тот же вопрос и придумал следующий ответ.

  • У ElasticSearch нет хорошего способа резервного копирования данных. В качестве примера выполните быстрый поиск "Резервное копирование ElasticSearch" и один для "резервной копии mongodb". У MongoDB есть инструменты и документация о том, как создавать резервные копии данных. Несмотря на то, что есть документация о том, как создавать резервные копии данных ElasticSearch, эта документация не выглядит зрелой.
  • В общем, MongoDB имеет гораздо лучшую документацию. В частности, его административная документация намного лучше, чем ElasticSearch.
  • MongoDB предоставляет коммерческую поддержку. На данный момент вам может не понравиться коммерческая поддержка, но приятно знать, что она доступна.
  • В MongoDB встроен MapReduce, ElasticSearch - нет. Это не может быть большой вещью, но стоит отметить.

Мое личное мнение заключается в том, что я бы не использовал ElasticSearch, если вы не можете позволить себе потерять данные. Я мог видеть использование ElasticSearch в качестве основного хранилища данных для чего-то требующего аналитики в реальном времени, но не имел никаких долгосрочных требований к хранению данных. В противном случае я бы предложил использовать MongoDB и ElasticSearch. Для ElasticSearch есть плагин RiverTo MongoDB. Это позволяет легко обновить индекс ElasticSearch автоматически.