Dlaczego miałbym używać ElasticSearch, jeśli już korzystam z bazy danych grafów?

15

Nie znajduję żadnego głębokiego wyjaśnienia w Internecie na temat porównania między ElasticSearch a bazami danych wykresów.

Oba są zoptymalizowane do przeglądania danych.
Wydaje się, że ElasticSearch jest zoptymalizowany pod kątem analizy.
Jednak Neo4j jest również oparty na Lucene do zarządzania indeksami i niektórymi funkcjami pełnego tekstu.

Dlaczego miałbym używać ElasticSearch, jeśli już korzystam z bazy danych grafów?

W moim przypadku używam Neo4j do budowy sieci społecznościowej.
Jakie rzeczywiste korzyści może przynieść ElasticSearch?

AKTUALIZACJA ----------

Właśnie znalazłem ten akapit:

Istnieją niezliczone przypadki, w których elastyczne wyszukiwanie jest przydatne. Niektóre przypadki użycia wymagają tego wyraźniej niż inne. Poniżej wymieniono niektóre zadania, dla których szczególnie przydatne jest wyszukiwanie elastyczne.

  • Przeszukiwanie dużej liczby opisów produktów w celu znalezienia najlepszego dopasowania dla określonej frazy (np. „Nóż szefa kuchni”) i zwrócenie najlepszych wyników
  • Biorąc pod uwagę poprzedni przykład, rozbicie różnych działów, w których pojawia się „nóż szefa kuchni” (patrz Faceting w dalszej części tej książki)
  • Wyszukiwanie tekstu dla słów, które brzmią jak „pora roku”
  • Automatyczne uzupełnianie pola wyszukiwania na podstawie częściowo wpisanych słów na podstawie wcześniej przeprowadzonych wyszukiwań z uwzględnieniem błędów ortograficznych
  • Przechowywanie dużej ilości danych częściowo ustrukturyzowanych (JSON) w sposób rozproszony, z określonym poziomem nadmiarowości w klastrze maszyn

Należy jednak zauważyć, że chociaż wyszukiwanie elastyczne jest świetne w rozwiązywaniu wyżej wymienionych problemów, nie jest najlepszym wyborem dla innych. Szczególnie źle rozwiązuje problemy, dla których relacyjne bazy danych są zoptymalizowane. Problemy takie jak te wymienione poniżej.

  • Obliczanie, ile przedmiotów pozostało w ekwipunku
  • Obliczanie sumy wszystkich pozycji na wszystkich fakturach wysłanych w danym miesiącu
  • Transakcyjne wykonywanie dwóch operacji z obsługą wycofywania
  • Tworzenie rekordów, które z pewnością będą unikalne dla wielu podanych terminów, na przykład numeru telefonu i numeru wewnętrznego
  • Elasticsearch jest na ogół fantastyczny w dostarczaniu przybliżonych odpowiedzi z danych, takich jak ocenianie wyników według jakości. Podczas gdy elasticsearch może wykonywać dokładne dopasowanie i obliczenia statystyczne, jego podstawowym zadaniem wyszukiwania jest z natury przybliżone zadanie.
  • Znajdowanie przybliżonych odpowiedzi jest właściwością, która oddziela wyszukiwanie elastyczne od bardziej tradycyjnych baz danych. To powiedziawszy, tradycyjne relacyjne bazy danych wyróżniają się precyzją i integralnością danych, dla których elasticsearch i Lucene mają niewiele przepisów.

Czy mogę stwierdzić, że jeśli nie potrzebuję przybliżonych odpowiedzi, to ElasticSearch byłby bezużyteczny w porównaniu z już używaną bazą danych grafów?

Mik378
źródło

Odpowiedzi:

17

Waham się, aby nazwać ElasticSearch bazą danych. Nie zastępuje bazy danych, ale jest dobrym dodatkiem do dodania funkcjonalności, w szczególności zaawansowanego wyszukiwania tekstu, obok istniejącej bazy danych.

Widzę, gdzie możesz je pomylić. Mogą faktycznie zaspokoić tę samą potrzebę, ale nie zawsze. ElasticSearch robi dokładnie to, na co wygląda, wyszukuje . Baza danych grafów nie określa relacji ani indeksów, podobnie jak ElasticSearch. Zasadniczo działają one zupełnie inaczej. ElasticSearch analizuje dokumenty za pomocą, na przykład, analizatora angielskiego. Do tego potrzeba słów i analizy różnych odmian tego słowa, a nawet synonimów. Na przykład, digbyłoby anaylzed jako dig,digs,dug,digging,digger .... Kiedy uruchomisz zapytanie w elasticsearch, twoje zapytania mogą być również przeanalizowane, a następnie te słowa są wyszukiwane i mogą być oceniane według trafności.

ElasticSearch to świetne narzędzie, ponieważ jest naprawdę elastyczne. Możesz znaleźć szeroki zakres względnej zawartości lub igły w stosie siana, i to stosunkowo łatwe.

Graficzne bazy danych mają również swoje zalety. Znajdowanie trafności / relacji między takimi rzeczami, jak na przykład tagi skrótu lub rzeczy z wieloma zmiennymi relacjami. Są świetnymi i interesującymi technologiami, ale muszę powiedzieć, że nie jest tak potężny jak ElasticSearch. Głównie dlatego, że ElasticSearch jest ukierunkowany na tego rodzaju rzeczy i obsługuje analizę, abyś mógł przeszukiwać cały tekst. Jeśli jednak chcesz użyć systemu bardziej przypominającego wyszukiwanie na Twitterze, które opiera się na predefiniowanych tagach / słowach kluczowych, lepiej skorzystaj z bazy danych Graph, z której już korzystasz.

Pytanie brzmi: na ile chcesz, aby Twoje wyszukiwanie było skuteczne? Jeśli potrzebujesz naprawdę dokładnego wyszukiwania (pełnego tekstu), skorzystałbym z elasticsearch. W przeciwnym razie zawsze możesz stosunkowo łatwo zaimplementować wyszukiwanie w bazie danych grafów. Po wdrożeniu wyszukiwania migracja do elasticsearch nie jest niemożliwa, jeśli później okaże się, że potrzebujesz bardziej niezawodnej wyszukiwarki, po prostu zaimplementuj wyszukiwanie, mając to na uwadze.

tsturzl
źródło
3

Obie te bazy danych mają specyficzną potrzebę rozwiązania określonego problemu na określonym poziomie wymagań aplikacji. Chociaż nie korzystaliśmy z Graph Database. Ale używamy elasticsearch z MySQL w jednym z naszych projektów z ostatnich 5 lat. Ten projekt ma ogromne dane do przeszukania przez 6 mln dokumentów i ma ogromne relacje między tymi podmiotami (10 mln dokumentów relacji).

Przypadek użycia: Podobnie jak w wyszukiwaniu hoteli, które polubili moi znajomi i sortuj wszystkie hotele według liczby polubień, które mają. A jeśli zobaczysz to z bliska. ta sprawa dotyczyła 2 relacji (Friend, Like). Muszę więc przeszukać pozycję „Lubię to” między hotelami a moimi przyjaciółmi, a następnie hotele powinny zostać posortowane według łącznej liczby polubień, jakie mają. W przypadku takich wyszukiwań baza danych grafów jest dobra.

Elasticsearch wykonuje świetną robotę, jeśli chodzi o pełne wyszukiwanie testowe w dokumentach, ale jeśli chodzi o przeszukiwanie relacji jak wyżej, to nie jest tak dobre. Wymień dokumenty (podmioty), które są moimi fanami, i posortuj je według liczby fanów. Ale są one o jeden poziom głębsze, a jeśli chodzi o wyszukiwanie głębiej. Elasticsearch nie jest wystarczająco dobry.

Więc zrozum swoje wymagania dotyczące aplikacji, a następnie przejdź do bazy danych. Może być konieczne posiadanie obu.

Terry
źródło