Jakie są przypadki użycia baz danych opartych na grafie (http://neo4j.org/)? [zamknięte]

Używałem relacyjnych DB ' S dużo i postanowił zaryzykować na innych dostępnych typów.

Ten konkretny produkt wygląda dobrze i obiecująco: http://neo4j.org/

Czy ktoś korzystał z baz danych opartych na grafie? Jakie są plusy i minusy z prespective usability?

Czy używałeś ich w środowisku produkcyjnym? Jaki był wymóg, który skłonił Cię do ich użycia?

Author: Raj Kumar, 2009-06-16

7 answers

Użyłem bazy danych grafów w poprzednim zadaniu. Nie korzystaliśmy z neo4j, to była wewnętrzna rzecz zbudowana na bazie Berkeley DB, ale była podobna. Był używany w produkcji (nadal jest).

Powodem, dla którego użyliśmy bazy danych grafów, było to, że dane przechowywane przez system i operacje, które system wykonywał z danymi, były dokładnie słabym punktem relacyjnych baz danych i były dokładnie mocnym punktem baz danych grafów. System potrzebny do przechowywania zbiorów obiektów, których brak stały schemat i są ze sobą powiązane relacjami. Aby zrozumieć dane, system musiał wykonać wiele operacji, które byłyby kilkoma trawersami w bazie danych grafu, ale byłyby to dość złożone zapytania w SQL.

Głównymi zaletami modelu grafowego były szybki czas rozwoju i elastyczność. Możemy szybko dodać nowe funkcje bez wpływu na istniejące wdrożenia. Jeśli potencjalny klient chciał zaimportować część własnych danych i zaszczepić je na naszej model, zwykle może to być wykonane na miejscu przez przedstawiciela handlowego. elastyczność pomogła również przy projektowaniu nowej funkcji, oszczędzając nam od próby wyciśnięcia nowych danych w sztywny model danych.

Posiadanie dziwnej bazy danych pozwoliło nam zbudować wiele innych dziwnych technologii, dając nam wiele tajnych sosów, aby odróżnić nasz produkt od naszych konkurentów.

Główną wadą było to, że nie korzystaliśmy ze standardowej technologii relacyjnych baz danych, co może być problemem, gdy twoi klienci są przedsiębiorczy. Nasi klienci pytali, dlaczego nie możemy po prostu hostować naszych danych w ich gigantycznych klastrach Oracle (nasi klienci zwykle mieli duże centra danych). Jeden z zespołów faktycznie przepisał warstwę bazy danych, aby użyć Oracle( lub PostgreSQL, lub MySQL), ale był nieco wolniejszy niż oryginał. Co najmniej jedno duże przedsiębiorstwo miało nawet politykę tylko Oracle, ale na szczęście Oracle kupił Berkeley DB. Musieliśmy również napisać wiele dodatkowych narzędzi - nie mogliśmy po prostu użyć Crystal Reports do przykład.

Inną Wadą naszej bazy danych grafów było to, że sami ją zbudowaliśmy, co oznaczało, że gdy napotkamy problem (zwykle ze skalowalnością), musieliśmy go rozwiązać samodzielnie. Gdybyśmy użyli relacyjnej bazy danych, sprzedawca rozwiązałby problem dziesięć lat temu.

Jeśli budujesz produkt dla klientów enterprisey, a Twoje dane pasują do modelu relacyjnego, użyj relacyjnej bazy danych, jeśli możesz. Jeśli Twoja aplikacja nie pasuje do modelu relacyjnego, ale pasuje do modelu wykresu, użyj bazy danych Wykresów. Jeśli pasuje Tylko do czegoś innego, użyj tego.

Jeśli Twoja aplikacja nie musi pasować do aktualnej architektury blub, użyj bazy danych Wykresów, CouchDB, BigTable lub cokolwiek pasuje do Twojej aplikacji i uważasz, że jest fajne. To może dać ci przewagę, a jego zabawa próbować nowych rzeczy.

Cokolwiek wybrałeś, staraj się nie budować silnika bazy danych samodzielnie, chyba że naprawdę lubisz budować silniki bazy danych.

 177
Author: Will Harris,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-06-16 11:07:10

Pracujemy z zespołem Neo od ponad roku i jesteśmy bardzo zadowoleni. Modelujemy artefakty naukowe i ich relacje, które są na miejscu dla grafu db, i uruchamiamy algorytmy rekomendacji w sieci.

Jeśli już pracujesz w Javie, myślę, że modelowanie przy użyciu Neo4j jest bardzo proste i ma najbardziej płaską / najszybszą wydajność dla R / W spośród innych rozwiązań, które próbowaliśmy.

Szczerze mówiąc, ciężko miNie myśleć w kategoriach grafu / sieci, ponieważ jest to o wiele łatwiejsze niż projektowanie zwartych struktur tabeli do przechowywania właściwości i relacji obiektów.

To powiedziawszy, przechowujemy pewne informacje w MySQL po prostu dlatego, że łatwiej jest stronie biznesowej uruchamiać szybkie zapytania SQL. Aby wykonywać te same funkcje Z Neo musielibyśmy napisać kod, na który po prostu nie mamy przepustowości. Jak tylko to zrobimy, przenoszę wszystkie dane do Neo!

Powodzenia.

 31
Author: DataRiot,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-25 21:46:11

Dwa punkty:

Po pierwsze, na danych, z którymi pracowałem przez ostatnie 5 lat w SQL Server, ostatnio Uderzyłem w ścianę skalowalności za pomocą SQL dla typu zapytań, które musimy uruchomić (zagnieżdżone relationhsips...wiesz...wykresy). Bawiłem się neo4j, a moje czasy wyszukiwania są o kilka rzędów wielkości szybsze, gdy potrzebuję tego rodzaju wyszukiwania.

Po drugie, do tego stopnia, że bazy danych Wykresów są nieaktualne. Um...no. na początku, jak ludzie próbowali dowiedzieć się, jak efektywnie Przechowuj i wyszukiwaj dane, tworzyli i odtwarzali modele baz danych w stylu grafowym i sieciowym. Zostały one zaprojektowane tak, aby model fizyczny odzwierciedlał model logiczny, więc ich wydajność nie była taka wielka. Ten typ struktury danych był dobry dla danych półstrukturalnych, ale nie tak dobre dla gęstych danych strukturalnych. Ten IBM o imieniu Codd badał efektywne sposoby porządkowania i przechowywania ustrukturyzowanych danych i wpadł na pomysł na relacyjny model bazy danych. I to było dobre, i ludzie byli szczęśliwi.

Co my tu mamy? Dwa narzędzia do dwóch różnych celów. Wykresowe modele baz danych są bardzo dobre do reprezentowania danych półstrukturalnych i relacji między podmiotami (które mogą lub nie mogą istnieć). Relacyjne bazy danych są dobre dla danych strukturyzowanych, które mają bardzo statyczny schemat i gdzie głębokości łączenia nie idą zbyt głęboko. Jeden jest dobry dla jednego rodzaju danych, drugi jest dobry dla innych rodzajów danych.

Aby nadać frazę, nie ma srebrnej kuli. Bardzo krótkowzroczne jest stwierdzenie, że modele baz danych są nieaktualne, a korzystanie z nich daje 40 lat postępu. To tak, jakby powiedzieć, że używanie C to rezygnacja z całego postępu technologicznego, przez który przeszliśmy, aby uzyskać rzeczy takie jak Java i C#. To nieprawda. C jest narzędziem, które jest potrzebne do niektórych zadań. A Java jest narzędziem do innych zadań.

 21
Author: Turbo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-25 21:44:03

Używam MySQL od lat do zarządzania danymi inżynierskimi, i to działało dobrze, ale jednym z problemów, które mieliśmy (ale nie zdawaliśmy sobie sprawy, że mamy) było to, że zawsze musieliśmy planować schemat z góry. Innym problemem, o którym wiedzieliśmy, było mapowanie danych do obiektów domeny i z powrotem.

Teraz dopiero zaczęliśmy testować neo4j i wygląda na to, że rozwiązuje oba problemy dla nas. Możliwość dodawania różnych właściwości do każdego węzła (i relacji) pozwoliła nam na ponowne przemyślenie całego podejście do danych. Jest jak języki dynamiczne kontra statyczne (Ruby kontra Java), ale dla baz danych. Budowanie modelu danych w bazie danych może odbywać się w znacznie bardziej zwinny i dynamiczny sposób, co znacznie upraszcza nasz kod.

A ponieważ model obiektowy w kodzie jest na ogół strukturą grafu, mapowanie z bazy danych jest również prostsze, z mniejszą ilością kodu, a co za tym idzie mniejszą ilością błędów.

I jako dodatkowy bonus, nasz początkowy prototypowy kod do ładowania naszych danych do neo4j faktycznie działa szybciej niż poprzednia wersja MySQL. Nie mam solidnych liczb na ten temat (jeszcze), ale to była miła dodatkowa funkcja.

Ale na koniec dnia, wybór prawdopodobnie powinien być oparty głównie na naturze modelu domeny. Czy lepiej mapować tabele lub wykresy? Zdecyduj, wykonując kilka prototypów, załaduj Dane i baw się nimi. Użyj neoclipse, aby spojrzeć na różne widoki danych. Gdy już to zrobisz, mam nadzieję, że wiesz, czy jesteś na dobrej rzeczy lub nie.

 14
Author: Craig Taverner,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-06-16 12:58:06

Buduję intranet w mojej firmie.

Interesuje mnie jak wczytać dane zapisane w tabelach (Oracle, MySQL, SQL Server, Excel, Access, różne listy losowe) i załadować je do Neo4J, lub innej bazy danych Wykresów. Konkretnie, co się dzieje, gdy wspólne dane nakładają się na istniejące dane już w systemie.

Tak, Wiem, że niektóre dane najlepiej modelować w RDBMS, ale mam taki pomysł, że gdy trzeba nałożyć kilka odrębnych tabel, model wykresu jest lepszy od struktury tabeli.

Na przykład, pracuję w środowisku produkcyjnym. Istnieje duży projekt, nad którym pracujemy, a ze względu na złożoność, każdy dział stworzył oddzielny arkusz kalkulacyjny Excel, który ma hierarchię BOM (Bill of Materials) w kolumnie po lewej stronie, a następnie kilka kolumn notatek i kontroli dokonanych przez osoby, które wykonały te arkusze.

Więc jednym z problemów jest połączenie wszystkich tych notatek razem w jeden "widok", aby ktoś mógł zobaczyć wszystkie problemy, które należy rozwiązać w danej części.

Drugi problem polega na tym, że arkusz kalkulacyjny Excel jest do bani w reprezentowaniu hierarchicznego BOM, gdy wspólny komponent jest używany w więcej niż jednym podzespole. Co oznacza, że jeśli ktoś napisze notkę o przekaźniku P34 w podzespole zapłonu, ten sam komentarz powinien być powiązany z przekaźnikami P34 używanymi w podzespole sterownika silnika. To nie nastąpi w arkuszu kalkulacyjnym excel.

Dla firmowego intranetu chcę mieć możliwość łatwego wyszukiwania czegokolwiek. Takie jak dane związane z numerem części, strukturą BOM, numerem telefonu, adresem e-mail, polityką firmy lub procedurą. Chcę nawet rozszerzyć to na zarządzanie zasobami sprzętu komputerowego i zainstalowanym oprogramowaniem.

Wyobrażam sobie, że gdy sieć informacyjna zacznie się wypełniać, możesz zacząć robić fajne trawersy, takie jak "chcę napisać e-mail do wszystkich pracujących nad projektem XYZ". Ludzie zostaną powiązane z projektem, ponieważ zostaną Oznaczone jako tworzenie i modyfikowanie danych w ramach projektu XYZ. Tak więc, używając projektu XYZ jako klucza wyszukiwania, zostanie utworzony ogromny zestaw ze wszystkim, co związane z projektem XYZ. W tym linki do osób, które zbudowały projekt XYZ. Łącza osób połączą się z ich adresami e-mail. Dzięki ich zaangażowaniu w projekt XYZ, zostaną one uwzględnione w moim mailu. Jest to w przeciwieństwie do jakiegoś sekretarza próbującego utrzymuj listę osób pracujących nad projektem. Generujemy wiele list. Poświęcamy dużo czasu na utrzymywanie list i upewnianie się, że są one aktualne. A większość z nich nie wnosi żadnej wartości do naszych produktów.

Kolejny fajny traversal może zgłosić wszystkie komputery, które mają zainstalowane pewne oprogramowanie, według wersji. Ten raport może być używany do generowania zadań w celu usunięcia dodatkowych kopii starego oprogramowania i aktualizacji osób, które muszą mieć najnowszą kopię. Byłoby również przydatne do śledzenia licencji.

 3
Author: Paul Bock,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-09 19:08:59

Oto dobry artykuł, który mówi o potrzebach, które wypełniają nie relacyjne bazy danych: http://www.readwriteweb.com/enterprise/2009/02/is-the-relational-database-doomed.php

To robi dobrą robotę w wskazywaniu (oprócz nazwy), że relacyjne bazy danych nie są wadliwe lub złe, to po prostu, że te dni ludzie zaczynają przetwarzać coraz więcej danych w głównym nurcie oprogramowania i stron internetowych, i że relacyjne bazy danych po prostu nie będzie skalować dla tych potrzeb.

 3
Author: Angular University,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-18 12:47:42

Może być trochę późno, ale jest coraz więcej projektów wykorzystujących Neo4j, bardziej znanych z Neo4j . NeoTechnology, firma stojąca za Neo4j, posiada referencje na stronie swoich klientów

Uwaga: jestem częścią zespołu Neo4j

 2
Author: Peter Neubauer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-05-11 15:54:20