Ich werde eine Anwendung mit vielen ähnlichen Elementen (Millionen) erstellen, und ich möchte sie in einer MySQL-Datenbank speichern, weil ich eine Menge Statistiken machen und nach bestimmten Werten für bestimmte Spalten suchen möchte.Ist es eine gute Idee, MySQL und Neo4j zusammen zu verwenden?
Aber gleichzeitig werde ich Beziehungen zwischen allen Elementen speichern, die in vielen verbundenen binärbaumartigen Strukturen (transitive Schließung) verwandt sind, und Beziehungsdatenbanken sind nicht gut in dieser Art von Strukturen, also ich möchte alle Beziehungen in Neo4j speichern, die eine gute Leistung für diese Art von Daten haben.
Mein Plan ist es, alle Daten außer den Beziehungen in der MySQL-Datenbank und alle Relationen mit item_id
in der Neo4j-Datenbank gespeichert zu haben. Wenn ich einen Baum nachschlagen möchte, suche ich zuerst die Neo4j für die ganze item_id
: s in den Baum, dann suche ich die MySQL-Datenbank für alle angegebenen Elemente in einer Abfrage, die wie folgt aussehen würde:
SELECT * FROM items WHERE item_id = 45 OR item_id = 345435 OR item_id = 343 OR item_id = 78 OR item_id = 4522 OR item_id = 676 OR item_id = 443 OR item_id = 4255 OR item_id = 4345
Ist das eine gute Idee, oder bin ich sehr falsch? Ich habe noch keine Graph-Datenbanken benutzt. Gibt es bessere Ansätze für mein Problem? Wie würde die MySQL-Abfrage in diesem Fall funktionieren?
Konnte die verschiedenen "OR" durch eine "IN" -Klausel ersetzen :) – Mik378
@Jonas Was hast du am Ende getan. Ich bin interessiert zu wissen, wie Sie das Problem gelöst haben? – Medorator
Für neue Leser dieser Frage: Im Buch [Kontinuierliche Unternehmensentwicklung in Java] (http://shop.oreilly.com/product/0636920025368.do) und [diesen Code] (https://github.com/arquillian/Continuous-Enterprise-Entwicklung) nutzt diese architektonische Lösung. Es gibt ein Kapitel, das die Auswahl der beiden Datenbanken rechtfertigt. – Mats