Kilka przemyśleń na ten temat:
Spróbowałbym zamodelować twój model domeny Neo4j, aby uwzględnić atrybuty każdego węzła na wykresie. Dzieląc dane na dwa różne magazyny danych, możesz ograniczyć niektóre operacje, które możesz chcieć wykonać.
Myślę, że sprowadza się to do tego, co będziesz robił ze swoim wykresem. Jeśli na przykład chcesz znaleźć wszystkie węzły połączone z konkretnym węzłem, którego atrybuty (np. imię, wiek... cokolwiek) są pewnymi wartościami, czy najpierw musisz znaleźć poprawny identyfikator węzła w swojej bazie danych MySQL, a następnie przejść do Neo4j? Wydaje się to po prostu powolne i zbyt skomplikowane, kiedy można to wszystko zrobić w Neo4j. Pytanie brzmi:czy będziesz potrzebować atrybutów węzła podczas przechodzenia przez graf?
Czy Twoje dane się zmienią, czy są statyczne? Posiadanie dwóch oddzielnych magazynów danych skomplikuje sprawy.
Podczas gdy generowanie statystyk przy użyciu bazy danych MySQL może być łatwiejsze niż robienie wszystkiego w Neo4j, kod wymagany do przechodzenia przez wykres w celu znalezienia wszystkich węzłów spełniających określone kryteria nie jest zbyt trudny. To, jakie są te statystyki, powinno napędzać Twoje rozwiązanie.
Nie mogę komentować wydajności zapytania MySQL w celu wybrania identyfikatorów węzłów. Myślę, że sprowadza się to do tego, ile węzłów będziesz musiał wybrać i twojej strategii indeksowania. Zgadzam się jednak co do wydajności rzeczy, jeśli chodzi o przechodzenie przez wykres.
To jest dobry artykuł na ten temat:MySQL vs. Neo4j na Przechodzenie przez wykres na dużą skalę w tym przypadku, kiedy mówią duże, mają na myśli tylko milion wierzchołków/węzłów i cztery miliony krawędzi. Więc nie był to nawet szczególnie gęsty wykres.