Wie ist eine Document Based DB so schnell?

8

Ich will nur besser verstehen, in dem, was ich seit Jahren gelernt habe, ist eine dokumentenbasierte Lösung langsam und erfordert eine Menge I / O. Für ein Beispiel in einem PHP-Projekt wird allgemein gesagt, dass es viel besser ist, einen Speichercache wie Redis, Memecache oder APC zu verwenden, da sie speicherbasiert sind, anstatt Daten in einer tatsächlichen Datei zwischenzuspeichern.

Jetzt sind alle diese NoSQL-DBs angekommen und ich habe gelesen, dass sie so viel schneller sind als MySql und andere, und sie sind dokumentbasiert. Kann mir jemand helfen, diese Theorie zu verstehen? Wenn jeder Datensatz ein Dokument (Datei) ist, wie ist es dann so gut in Bezug auf die Leistung? Ich habe kürzlich über einen Typen gelesen, der Redis in einem Projekt verwendet und gesagt hat, dass er zu MongoDB gewechselt ist und bessere Ergebnisse hat als mit Redis (ich weiß, dass ich einen Cache mit einer DB vergleiche), aber das ist nicht die wirkliche Frage Möchten Sie wissen, wie eine dokumentenbasierte Lösung schneller ist als nichtdokumentbasierte Lösungen?)

    
CodeDevelopr 11.01.2012, 09:22
quelle

5 Antworten

4

Dokumentbasiert bedeutet nicht notwendigerweise, dass sie vollständig im Dateisystem gespeichert sind. Einige Teile können immer noch wie ein Index im Speicher gehalten werden.

Nur dokumentbasiert bedeutet, dass die Datenbank Daten in Paketen speichert (z. B. Papierbögen, auf denen jedes Blatt ein Dataset ist und Sie frei darauf schreiben können) statt einer sehr spezifischen Struktur wie einer Tabelle.

Ссылка

Ah und warum sie schneller sein können als redis:
Angenommen, Sie müssen einige nichtlineare Informationen in einem Satz speichern (dh nicht jeder Datensatz sieht gleich aus und Sie haben unterschiedliche Datentypen in einem Satz. Auf Redis können Sie nur Schlüssel-Wert-Paare speichern, sodass Sie sie wieder miteinander verknüpfen müssen zu einer Menge in Ihrem eigenen Code / Implementierung.Auf einer NoSQL-Datenbank wird dies von der Datenbank in einer (wahrscheinlich) viel optimierteren Weise für Sie behandelt:)

    
bardiir 11.01.2012 09:26
quelle
2

Die NoSQL-Sprache kann zu Missverständnissen führen, da einige Konzepte Namen verwenden, die eine andere Bedeutung haben als die traditionelle:

  • Dateibasiert bedeutet nicht (unbedingt), dass der Datastore jeden Datensatz in eine Datei schreibt. Das bedeutet, dass Datensätze im Datenspeicher nicht einem vordefinierten Schema von Feldern entsprechen müssen, wenn ein bestimmter Datentyp vorhanden ist . Stellen Sie sich "Datei" so etwas wie XML, JSON oder Freunde vor.
  • Die Performance-Gewinne von (den meisten) NoSQL-Datastores haben ihren Preis: Typischerweise werden gut verstandene ACID-Versprechen gegen ein loseres Konsistenzmodell gehandelt.
  • Die Macht der relationalen SQL-Datenbanken kommt zu einem großen Teil von der Tatsache, dass so gut wie jede Abfrage gegen ein existierendes Schema geschrieben werden kann. Dies ist bei NoSQL-Datenspeichern nicht immer der Fall: In der extremsten Version ist der Zugriff auf einen Datensatz nur über eine Datensatz-ID möglich.
  • Die meisten NoSQL-Datastores werden viel besser skalieren als eine typische relationale Datenbank - sie sind die Antwort auf die Frage "Was müssen wir aus einer gut verstandenen relationalen Datenbank opfern, um die Skalierungsgrenzen zu überwinden"
Eugen Rieck 11.01.2012 09:34
quelle
0

Als Erstes können Sie die NoSQL-DBs nicht mit In-Memory-DBs vergleichen. NoSQL DBs sind für Daten gedacht, die nicht in den Speicher passen.

Nun, was die NoSQL-DBs betrifft, sind sie nicht einfach nur Dateien, sie haben Indizes, die schnellen Zugriff auf Offsets in den Dateien bieten, und genau dort liegt die Geschwindigkeit.

    
thedrs 11.01.2012 09:27
quelle
0

Um eine Idee zu bekommen, überlegen Sie sich folgendes:

  • Mit MongoDB würden Sie Ihr Schema so gestalten, dass ein einzelnes Dokument alles enthält, was Sie zum Rendern einer Seite benötigen.
  • Mit MySQL (oder einem anderen RDBMS) würden Sie die Daten normalisieren und in viele Tabellen aufteilen. Um die gleiche Seite darzustellen, müssten Sie viele SQL-Abfragen durchführen.

Obwohl diese eine Mongo-Abfrage möglicherweise langsamer als eine MySQL-Abfrage ist, wird der Vergleich von 1 Mongo-Abfrage mit 100 MySQL-Abfragen viel schneller.

    
milan 11.01.2012 10:27
quelle
0

Die magische Zutat ist nicht notwendigerweise eine "schnellere" Datenbank, sondern eine Datenbank, die die Entwicklung und Implementierung von "schnelleren" Systemen ermöglicht. Aus diesem Grund werden NoSQL-Datenbanken als Spielwechsler angesehen.

Seit mehreren Jahrzehnten waren relationale Datenbanken das einzige Spiel in der Stadt. Viele SQL-basierte Systeme zahlen eine doppelte Performance-Steuer: einmal für das vollständige ACID-Feature-Set (das sie wahrscheinlich sowieso nicht brauchen) und dann wiederum, um ihre Domain-Daten in ein relationales Tabellenmodell zu verwandeln.

Ein weiteres Merkmal der meisten NoSQL-Datenbanken ist, dass sie einfacher sind, da sie spezialisierter sind als der "allgemeine Fall" einer SQL-Datenbank. Das bedeutet weniger Logik / Code, die bei jeder Operation ausgeführt werden müssen, einfachere Datenstrukturen (die weniger IO erfordern) und im Allgemeinen - weniger Overhead, bessere Leistung.

    
Addys 11.01.2012 10:52
quelle

Tags und Links