Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Ist es eine gute Idee, MySQL und Neo4j zusammen zu verwenden?

Ein paar Gedanken dazu:

Ich würde versuchen, Ihr Neo4j-Domänenmodell so zu modellieren, dass die Attribute jedes Knotens in das Diagramm aufgenommen werden. Indem Sie Ihre Daten in zwei verschiedene Datenspeicher aufteilen, können Sie möglicherweise einige Vorgänge einschränken, die Sie möglicherweise ausführen möchten.

Ich denke, es kommt darauf an, was Sie mit Ihrem Diagramm tun werden. Wenn Sie beispielsweise alle Knoten finden möchten, die mit einem bestimmten Knoten verbunden sind, dessen Attribute (dh Name, Alter ... was auch immer) bestimmte Werte sind, müssten Sie zuerst die richtige Knoten-ID in Ihrer MySQL-Datenbank finden und dann hineingehen Neo4j? Dies scheint nur langsam und übermäßig kompliziert zu sein, wenn Sie dies alles in Neo4j tun könnten. Die Frage ist also:Benötigen Sie die Attribute eines Knotens, wenn Sie den Graphen durchlaufen?

Werden sich Ihre Daten ändern oder sind sie statisch? Durch zwei getrennte Datenspeicher wird die Sache komplizierter.

Während das Generieren von Statistiken mit einer MySQL-Datenbank möglicherweise einfacher ist, als alles in Neo4j zu erledigen, ist der Code, der zum Durchlaufen eines Diagramms erforderlich ist, um alle Knoten zu finden, die ein definiertes Kriterium erfüllen, nicht allzu schwierig. Diese Statistiken sollten Ihre Lösung bestimmen.

Ich kann die Leistung der MySQL-Abfrage zur Auswahl von Knoten-IDs nicht kommentieren. Ich denke, das hängt davon ab, wie viele Knoten Sie auswählen müssen, und von Ihrer Indizierungsstrategie. Ich stimme jedoch der Leistungsseite der Dinge zu, wenn es darum geht, einen Graphen zu durchlaufen.

Dies ist ein guter Artikel dazu:MySQL vs. Neo4j über a Graphtraversierung im großen Maßstab und in diesem Fall, wenn sie groß sagen, meinen sie nur eine Million Scheitelpunkte/Knoten und vier Millionen Kanten. Es war also nicht einmal ein besonders dichter Graph.