5 Stimmen

Ist die Leistung von RavenDb im Vergleich zu relationalen Datenbanken besser?

Welche Faktoren machen RavenDb (als Beispiel für eine NoSQL-Dokumentendatenbank) im Vergleich zu relationalen Datenbanken effizienter?

Ich kenne zwei Faktoren:

  1. Alle Abfragen werden auf Indizes ausgeführt. Aber Sie können es in RDBMS tun
  2. Indizes werden auf Hintergrund-Threads aktualisiert (was Fehlsynchronisation). Ja, das ist ein guter Punkt, aber ich bezweifle, dass er sehr Bedeutung ist.

Eigentlich dachte ich, die größte Leistungssteigerung ist die Abwesenheit von Joins, aber es sieht so aus, als ob Multi Maps / Reduce Index ziemlich ähnlich zu join ist.

Welche Faktoren machen RavenDb also effizienter?

2 Stimmen

RavenDB macht verschiedene Dinge von RDBMSs. Sie können eine Dokumentendatenbank nicht mit einer relationalen Datenbank vergleichen.

2 Stimmen

@Oded, viele Leute verwenden RavenDb und Beziehungsdatenbanken für die Lösung ziemlich ähnlicher Aufgaben. Meiner Meinung nach können und sollten wir sie also vergleichen

1 Stimmen

Warum fragen Sie dann nicht nach CoucheDB? Oder MongoDB? Cassandra?

7voto

Ayende Rahien Punkte 22590

Idsa, Es gibt mehrere Gründe, warum eine RavenDB-Anwendung in der Regel viel schneller ist als eine relationale DB-Anwendung.

a) Wie Daniel erwähnte, ist der Unterschied in der Datenmodellierung erheblich. Das bedeutet, dass Sie die Daten auf viel billigere Weise laden können.

b) Sie fragen immer auf Indizes ab. Das ist wichtig, denn es bedeutet, dass der Abfrageplan für RavenDB immer ein INDEX_SEEK ist. Sicher, Sie können Versuchen Sie mit RDBMS, aber in vielen Fällen trifft man nicht immer auf einen Index. Insbesondere müssen Sie normalerweise viel mehr Arbeit leisten, um dorthin zu gelangen, und dann müssen Sie Joins und andere Dinge verwenden, um die Daten herauszuholen, was wiederum den Abfrageplan verkompliziert.

c) RavenDB arbeitet hinter den Kulissen, um sich für Sie zu optimieren. Je mehr Sie es nutzen, desto mehr wird es sich an Ihr Nutzungsverhalten anpassen.

d) Sie führen bei den Abfragen keinerlei Berechnungen durch. Das ist entscheidend, denn es bedeutet, dass Dinge wie Aggregationsabfragen bereits vorberechnet werden, so dass sie vraiment billig.

5voto

Daniel Lang Punkte 6769

Ich glaube nicht, dass man sagen kann, dass RavenDB im Vergleich zu einer relationalen Datenbank generell schneller ist. Es hängt sicherlich davon ab, welche Art von Datenoperationen Sie in Ihrer Anwendung durchführen wollen.

Der einzige Grund, warum Die meisten Anwendungen schneller sind, ist, dass RavenDB sowohl auf der Lese- als auch auf der Schreibseite gleich schnell ist, da Indizes asynchron aktualisiert werden. Dies geht jedoch auf Kosten der möglichen Konsistenz. Das ist zwar für die meisten Anwendungen in Ordnung, aber nicht unbezahlbar.

Der andere gewichtige Grund betrifft eher Dokumentendatenbanken im Allgemeinen. Ein einzelnes Dokument in RavenDB (und auch in anderen Datenbanken) kann einen kompletten Objektgraphen und auch denormalisierte Referenzen enthalten, wodurch viele Anfragen an die Datenbank entfallen. In den meisten Szenarien ist es nicht die Datenbank selbst, die eine Anwendung langsam macht, sondern eher eine übermäßige Anzahl von Anfragen an den Datenbankserver (man denke an die Netzwerklatenz und den Overhead). Dokumentendatenbanken eignen sich gut für zustandslose Anwendungen wie Webanwendungen, bei denen eine einzige Ansicht Informationen über einen ganzen Objektgraphen anzeigt (man denke an eine Bestellung mit allen Artikeln, Kundeninformationen, Rechnungsinformationen usw.).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X