


Eine ausführliche Analyse der MongoDB-Speicher-Engine (mit schematischer Darstellung)
Dieser Artikel führt Sie in das relevante Wissen über MongoDB ein und stellt die Speicher-Engine in MongoDB vor. Ich hoffe, er wird Ihnen hilfreich sein!
Ein kurzer Rückblick
Das letzte Mal haben wir über Mongodb-Cluster gesprochen, die in „Master-Slave-Cluster“ und „Sharded-Cluster“ unterteilt sind. In Bezug auf die Shards in Sharded-Clustern müssen wir sie gemeinsam überprüfen :
Für- heiße Daten
- bestimmte
(ein Shard-Schlüssel ist ein Indexfeld oder zusammengesetztes Indexfeld, das in jedem Dokument in der Sammlung vorhanden ist) führt dazu, dass alle Lese- oder Schreibanforderungen bearbeitet werden a Single Bei Datenblöcken oder Shards führt dies dazu, dass ein einzelner Shard-Server überlastet wird und der sich selbst erhöhende Shard-Schlüssel leicht zu Schreibproblemen führt [Empfohlen: MongoDB-Video-Tutorial]
Für- unteilbare Datenblöcke
- Bei grobkörnigen Sharding-Schlüsseln
In diesem Fall können diese Dokumente nicht in mehrere Datenblöcke aufgeteilt werden, was die gleichmäßige Verteilung der Daten in der Mongodb-Fähigkeit einschränkt
Für
- Abfragehindernisse
, was zu einer schlechten Abfrageleistung führtWir müssen uns der oben genannten Punkte bewusst sein und bei tatsächlichen Arbeitsproblemen auf ähnliche Probleme stoßen Ich kann versuchen, damit umzugehen. Heute werden wir kurz verstehen, was die Speicher-Engine von Mongodb ist imMemory-Speicher-Engine
Als die Speicher-Engine zum ersten Mal herauskam, wurde standardmäßig die MMAPV1-Speicher-Engine verwendet.MMAPV1-Engine. Wenn wir uns den Namen ansehen, wissen wir wahrscheinlich, dass sie mmap verwendet und das Prinzip der Linux-Speicherzuordnung verwendet
Die MMAPV1-Engine wird jetzt nicht verwendet, da die
WiredTiger-Speicher-Engine besser ist. Im Vergleich zu WiredTiger hat sie die folgenden Vorteile:
WiredTigerLese- und Schreibvorgangsleistung ist besser
- WiredTiger kann besser genutzt werden die Verarbeitungsleistung von Multi-Core-Systemen
- WiredTiger
MMAPV1-Engine Bei Verwendung von Sperren auf Tabellenebene ist der Durchsatz begrenzt, wenn auf einer einzelnen Tabelle gleichzeitige Vorgänge ausgeführt werden
Und WiredTiger verwendet Sperren auf Dokumentebene, wodurch die Parallelität und der Durchsatz verbessert werden Komprimierungsalgorithmus , der den Verbrauch von Festplattenressourcen erheblich reduzieren kann
Das Schreibprinzip der WiredTiger-Engine- Auf dem obigen Bild können wir sehen, dass WiredTiger
- Die Anwendungsanforderung kommt an mongodb, mongodb übernimmt die Verarbeitung und speichert das Ergebnis im Cache.
Wenn der Cache 2 G
erreicht oder der60-Sekunden-Timer abläuft, werden die Daten im Cache geleert Vorsicht, xdm wird wissen, ob es jetzt genau 59 Sekunden sind. Wenn mehr als 1 GB vorhanden sind, wurden die Daten im Cache nicht mit der Festplatte synchronisiert, und Mongodb hängt nicht normal Daten verlieren?
Wir können alle mit unseren Fingern denken:
Wie konnte der Designer von Mongodb diese Situation zulassen, dann muss es eine Lösung geben- , wie folgt
Journaling-Puffer
Ein Puffer, der Mongodb-Hinzufügungs-, Lösch- und Änderungsanweisungen speichert
Ähnlich wie Transaktionsprotokolle in relationalen Datenbanken
- Der Zweck der Einführung von Journaling besteht darin:
-
Journaling kann die Mongod-B-Datenbank aufgrund der schnellen Wiederherstellung nach unerwarteten Fehlern aktivieren.Journaling-Protokollfunktion ist bereits
Standard Wenn die Journaling-Funktion aktiviert ist, prüft der Dienst beim Starten der Mongod-Instanz, ob die Daten wiederhergestellt werden müssen
Außerdem müssen wir hier wissen, dass die Protokollierungsfunktion des Journalings Protokolle schreibt, wenn mongodb Schreibvorgänge ausführen muss, d Wenn der Abrufvorgang ausgeführt wird, wird er nicht im Cache aufgezeichnet, sodass der Lesevorgang keine Auswirkungen hat. Das war's. Wenn es Abweichungen gibt, korrigieren Sie mich bitte
Das obige ist der detaillierte Inhalt vonEine ausführliche Analyse der MongoDB-Speicher-Engine (mit schematischer Darstellung). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Zu den Lösungen zur Behebung von Navicat-Ablaufproblemen gehören: Erneuern der Lizenz; Deaktivieren der automatischen Updates; Wenden Sie sich an den Navicat-Kundendienst.

Für Front-End-Entwickler hängt die Schwierigkeit, Node.js zu erlernen, von ihrer JavaScript-Grundlage, ihrer serverseitigen Programmiererfahrung, ihrer Vertrautheit mit der Befehlszeile und ihrem Lernstil ab. Die Lernkurve umfasst Module für Einsteiger und Fortgeschrittene, die sich auf grundlegende Konzepte, serverseitige Architektur, Datenbankintegration und asynchrone Programmierung konzentrieren. Insgesamt ist das Erlernen von Node.js für Entwickler, die über solide Kenntnisse in JavaScript verfügen und bereit sind, Zeit und Mühe zu investieren, nicht schwierig, aber für diejenigen, denen es an einschlägiger Erfahrung mangelt, müssen möglicherweise bestimmte Herausforderungen bewältigt werden.

Um mit Navicat eine Verbindung zu MongoDB herzustellen, müssen Sie: Navicat installieren. Eine MongoDB-Verbindung erstellen: a. Geben Sie den Verbindungsnamen, die Hostadresse und den Port ein. b. Geben Sie die Authentifizierungsinformationen ein (falls erforderlich). Überprüfen Sie die Verbindung Speichern Sie die Verbindung

Zu den am häufigsten verwendeten Modulen in Node.js gehören: Dateisystemmodul für Dateioperationen Netzwerkmodul für Netzwerkkommunikation Stream-Modul zur Verarbeitung von Datenströmen Datenbankmodul zur Interaktion mit Datenbanken Andere Hilfsmodule wie Verschlüsselung, Abfragezeichenfolgen, String-Analyse und HTTP-Framework

Bei Node.js-Anwendungen hängt die Auswahl einer Datenbank von den Anwendungsanforderungen ab. Die NoSQL-Datenbanken MongoDB bieten Flexibilität, Redis bietet hohe Parallelität, Cassandra verarbeitet Zeitreihendaten und Elasticsearch ist auf die Suche spezialisiert. Die SQL-Datenbank MySQL bietet eine hervorragende Leistung, PostgreSQL ist reich an Funktionen, SQLite ist leichtgewichtig und Oracle Database ist umfassend. Berücksichtigen Sie bei der Auswahl Datentypen, Abfragen, Leistung, Transaktionalität, Verfügbarkeit, Lizenzierung und Kosten.

Schritte zum Herstellen einer Verbindung zu einer Datenbank in Node.js: Installieren Sie das MySQL-, MongoDB- oder PostgreSQL-Paket. Erstellen Sie ein Datenbankverbindungsobjekt. Öffnen Sie eine Datenbankverbindung und behandeln Sie Verbindungsfehler.

Um eine Verbindung zu einer Datenbank in Node.js herzustellen, müssen Sie ein Datenbanksystem (relational oder nicht relational) auswählen und anschließend eine Verbindung mit für diesen Typ spezifischen Modulen herstellen. Zu den gängigen Modulen gehören MySQL (MySQL), PG (PostgreSQL), Mongodb (MongoDB) und Redis (Redis). Nachdem die Verbindung hergestellt wurde, können Sie Abfrageanweisungen zum Abrufen von Daten und Aktualisierungsanweisungen zum Ändern der Daten verwenden. Schließlich muss die Verbindung geschlossen werden, wenn alle Vorgänge abgeschlossen sind, um Ressourcen freizugeben. Verbessern Sie Leistung und Sicherheit, indem Sie diese Best Practices befolgen, z. B. die Verwendung von Verbindungspooling, parametrisierten Abfragen und eine ordnungsgemäße Fehlerbehandlung.

.NET 4.0 wird zum Erstellen einer Vielzahl von Anwendungen verwendet und bietet Anwendungsentwicklern umfangreiche Funktionen, darunter objektorientierte Programmierung, Flexibilität, leistungsstarke Architektur, Cloud-Computing-Integration, Leistungsoptimierung, umfangreiche Bibliotheken, Sicherheit, Skalierbarkeit, Datenzugriff und Mobilgeräte Entwicklungsunterstützung.
