sehen Sowohl ArangoDB und Neo4j sind in der Lage, die Arbeit zu tun, die Sie im Auge haben. Beide Projekte haben erstaunliche Dokumentation und Antworten für beide ist einfach. Beide können von Java verwendet werden (obwohl Neo4j can be embedded).
Eine Sache, die Ihnen bei der Entscheidungsfindung helfen kann, ist zu erkennen, dass viele NoSQL-Datenbanken ein viel enger gefächertes Problem lösen, als die Leute zu schätzen wissen.
Sarah Mei schrieb eine epic blog post about MongoDB, mit einem Beispiel mit einigen Daten über TV-Shows. Aus der Zusammenfassung:
MongoDBs idealer Anwendungsfall ist noch schmaler als unsere Fernsehdaten. Das einzige, was gut ist, ist die Speicherung beliebiger JSON-Teile.
Ich glaube, dass Neo4j ein ähnlich enges Problem löst, wie durch, wie verbreitet es ist Neo4j alongsidesome other Datenspeicher zu verwenden.
Ich weiß nicht, dass das Speichern von Bild- oder Videodaten in ArangoDB oder Neo4j eine gute Idee ist.Ich würde versuchen, es auf einem anderen Server (wie S3) zu speichern und die URL in dieser Datei in Neo4j/Arango zu speichern.
Während es wahr ist, dass it is possible to create queries that only a graph database can answer, die Leistung der Grafik-Datenbank auf eine beliebige Abfrage varies wildly und kann Ihnen einige ziemlich überraschende Ergebnisse geben. Hier ist zum Beispiel a paper from the International Journal of Computer Science and Information Technologies einen Vergleich von Neo4j vs MySQL, Vertica und VoltDB mit Abfragen tun würden annehmen, dass Sie Neo4j bei wäre erstaunlich:
Die Idee ist, dass ein „soziales Netzwerk“ bedeutet nicht automatisch die Überlegenheit, oder sogar die Verwendung einer Graphdatenbank (insbesondere seit GraphQL und Falcor veröffentlicht wurden).
Um Ihre Frage zu Abfragesprachen zu beantworten. Es gibt keine Standardsprache für Graph-Datenbanken.
AQL ist eine Abfragesprache, die eine einheitliche Schnittstelle für die Arbeit mit Schlüssel/Wert-, Dokument- und Diagrammdaten bietet.
Cypher ist eine Graphabfragesprache.
Badwolf Query Language ist eine von SPARQL inspirierte Sprache für temporäre Graphen.
Diese Sprachen existieren, weil sie verschiedene Probleme angehen. Die Datenbanken, die sie unterstützen, lösen auch verschiedene Probleme.
Neo4j hat an example von „polyglotte Persistenz“ auf ihrer Website:
Ich denke, dass ist das Problem, dass ArangoDB und AQL zu lösen, ist aus, wobei die Hypothese, dass es möglich ist, zu lösen ohne schlechter zu sein als Spezialisten wie Neo4j. So weit sieht es aus wie sie might be right.
Cypher wird eine offene Anstrengung, siehe opencypher.org –