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?)
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:)
Die NoSQL-Sprache kann zu Missverständnissen führen, da einige Konzepte Namen verwenden, die eine andere Bedeutung haben als die traditionelle:
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.
Um eine Idee zu bekommen, überlegen Sie sich folgendes:
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.
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.