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?


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.


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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.