2012-06-13 11 views
11

Jestem całkiem nowy w bazach danych NoSql, ale tak naprawdę lubię MongoDB z oficjalnym sterownikiem C#. Jest to obecnie backend do aplikacji MVC, którą piszę, a prostota i prędkość sprawiają, że moje życie jest łatwiejsze.Jakie korzyści oferuje MongoDB w stosunku do ElasticSearch jako bazy danych NoSQL? Tylko

Jednak doszedłem do tego punktu w aplikacji, w której potrzebuję naprawdę wspaniałego wyszukiwania. Używałem Solr, ale zainteresowałem się ElasticSearch.

ElasticSearch, o ile mogę powiedzieć (z bardzo powierzchownego poziomu), może zrobić wszystko, co MongoDB może z punktu widzenia bycia bazą danych dokumentów.

Tak więc, jeśli używam już bazy danych NoSql i potrzebuję wspaniałego wyszukiwania, czy jest jakiś punkt w Mongo? Jaki jest przypadek użycia?

Czy Mongo jest szybszy? Łatwiejszy w użyciu? Czy to są typy danych BSON i sterowniki? Dlaczego nie skorzystać z ElasticSearch jako mojego DB?

Obecnie korzystam z aplikacji AppHarbor i "Chmury". Nienawidzę IT i chcę skupić się tylko na mojej aplikacji. Mówiąc to, jedyną korzyścią, jaką widzę do tej pory, jest:

  • Istnieje już wielu dostawców "MongoDB" w chmurze. Z ElasticSearch muszę wszystko sam ustawić.
+0

Niby szeroka. I nie sądzę, że najszybsze jest odpowiednie kryteria. W przypadku małej i średniej wielkości aplikacji wszyscy będą wytwarzać dobrą prędkość. Zobacz funkcje i łatwość rozwoju i wsparcia. Instalacja i środowisko nie są takie trudne. Jak bardzo nienawidzisz IT? – Paparazzi

+2

W skrócie: wyszukiwanie wielu kluczy. Nieco większa jest kombinacja ES + MongoDB, używam jej na stronie zbliżającej się do produkcji z ponad 4-letnim doświadczeniem w Solr/Lucene, Membase i innych alternatywach. Najlepsza praktyka, przynajmniej w przypadku utworów dla mnie: zachowaj modele domenowe w Mongo, przeszukuj w ES, ale przechowuj tylko klucze, a po wyszukiwaniu ES szukaj klucza w Mongo. –

+1

@ Geert-Jan dlaczego? Gdy ES może zwrócić dokument w tym samym czasie, co wyszukiwanie wieloprzyciskowe. Jaką przewagę masz ES, a potem mongo? – DrTech

Odpowiedz

3

To jest bardzo dobre pytanie. Zadałem sobie to samo pytanie i wymyśliłem następującą odpowiedź.

  1. ElasticSearch nie ma dobrego sposobu na tworzenie kopii zapasowych danych. Jako przykład wykonaj szybkie wyszukiwanie "kopii zapasowych ElasticSearch" i jednego dla "kopii zapasowej mongodb". MongoDB ma narzędzia i dokumentację dotyczącą tworzenia kopii zapasowych danych. Chociaż istnieje dokumentacja dotycząca tworzenia kopii zapasowych danych ElasticSearch, ta dokumentacja nie wydaje się być tak dojrzała.
  2. Ogólnie rzecz biorąc, MongoDB ma znacznie lepszą dokumentację. W szczególności jego dokumentacja administratora jest znacznie lepsza niż ElasticSearch.
  3. MongoDB zapewnia wsparcie komercyjne. W tej chwili możesz nie dbać o wsparcie komercyjne, ale miło jest wiedzieć, że jest ono dostępne.
  4. MongoDB ma wbudowaną MapReduce, ElasticSearch nie. To może nie jest wielka rzecz, ale warto zauważyć.

Moim osobistym zdaniem jest to, że nie użyłbym ElasticSearch, jeśli nie można sobie pozwolić na utratę danych. Mogłem zobaczyć, że ElasticSearch jest podstawowym magazynem danych dla czegoś, co wymaga analityki w czasie rzeczywistym, ale nie ma żadnych długoterminowych wymagań dotyczących przechowywania danych. W przeciwnym razie sugerowałbym używanie razem MongoDB i ElasticSearch. Istnieje wtyczka do rzeki MongoDB dla ElasticSearch. Ułatwia to automatyczną aktualizację indeksu ElasticSearch.

Powiązane problemy