Ich bin ein Neuling zu Neo4j, und kann nicht ganz verstehen, warum Neo4j muss schneller sein als eine effiziente SQL-Abfrage. Liegt es an der Datenstruktur oder der zugrundeliegenden Abfrage-Implementierung? Ich schätze es sehr, wenn mir jemand dabei helfen kann.Warum Neo4j ist schneller als SQL
Antwort
Neo4j ist im Allgemeinen nicht schneller als eine SQL-Datenbank. Bei graphenbasierten Problemen ist es in vielen Fällen schneller. Wenn Sie beispielsweise den kürzesten Pfad zwischen zwei Entitäten finden möchten, wird Neo4j wahrscheinlich MySQL übertreffen, da die Daten strukturiert sind und die Algorithmen aufgrund dieser Struktur verwendet werden können. Neo4j speichert seine Daten als Knoten und Beziehungen zwischen diesen Knoten. Sie sind direkt miteinander verbunden. Ein einfacher Algorithmus für den kürzesten Weg ist eine Breitensuche. Sie beginnen an einem Knoten und erweitern seine verbundenen Knoten. Für jeden der untergeordneten Knoten machen Sie dasselbe, bis Sie den Endknoten gefunden haben. Auf diese Weise werden Sie nur eine kleine Menge von Daten berühren. In einer SQL-Abfrage können Sie dies nicht so einfach tun, also müssen Sie etwas in Ihrem Code erstellen, das die Ergebnismengen durchläuft und neue Abfragen für jedes Ergebnis generiert. Sie werden also viele Fragen haben.
- 1. Warum ist Python schneller als Ruby?
- 2. Warum ist float() schneller als int()?
- 3. Warum ist String.IsNullOrEmpty schneller als String.Length?
- 4. Warum ist MSMQ schneller als WCF QueueService?
- 5. Warum Join ist schneller als normale Verkettung
- 6. Warum ist HashMap schneller als HashSet?
- 7. Warum ist string.IsNullOrEmpty schneller als ein Vergleich?
- 8. Warum ist Core Data schneller als SQLite
- 9. Warum ist \% (\) schneller als \ (\) in Vim?
- 10. Warum ist ToUpperInvariant() schneller als ToLowerInvariant()?
- 11. Warum ist file_get_contents() schneller als mit fsock_open()?
- 12. Warum ist Crystal schneller als Ruby?
- 13. Warum ist numpy.dot viel schneller als numpy.einsum?
- 14. Warum emplace_back ist schneller als push_back?
- 15. Warum ist String.equals() schneller als sich selbst?
- 16. Warum PathPing ist schneller als Tracert?
- 17. Warum strings.HasPrefix ist schneller als bytes.HasPrefix?
- 18. Ist + = schneller als - =?
- 19. Ist `extend` schneller als` + = `?
- 20. Warum ist `-1 * x` schneller als` -x` und warum?
- 21. Warum int32_t schneller als int64_t?
- 22. Enthält ist schneller als StartsWith?
- 23. Ist DateTime.ParseExact() schneller als DateTime.Parse()
- 24. ist 'absolut' schneller als Move()?
- 25. Warum ist Publizieren in XNA schneller als Release?
- 26. Warum ist das Vergleichen doppelt schneller als Uint64?
- 27. Warum ist "hash ('md5', 'string')" schneller als 'md5 (' string ') "?
- 28. Warum ist Gießen in .NET schneller als Reflektion?
- 29. Warum ist strcmp so viel schneller als meine Funktion?
- 30. Warum ist eine for-Schleife schneller als Array.prototype.map()
Bitte akzeptieren Sie Drexins Antwort, wenn es für Sie zufriedenstellend ist. – wssbck