Heim  >  Artikel  >  So verstehen Sie, was verteilte Datenbanken sind

So verstehen Sie, was verteilte Datenbanken sind

coldplay.xixi
coldplay.xixiOriginal
2020-10-30 14:24:569740Durchsuche

Verteilte Datenbanken umfassen: 1. Elasticsearch-Datenbank, die auf einem einzelnen Knoten oder mehreren Knoten vorhanden sein kann; 2. Redis-Datenbank, die umfangreiche Datentypen unterstützt; 4. Verteilter MySQL-Cluster; , Hohe Verfügbarkeit.

So verstehen Sie, was verteilte Datenbanken sind

Verteilte Datenbanken umfassen:

1. Elasticsearch-Datenbank

Kursempfehlung →: "Elasticsearch-Volltextsuchpraxis"(Praktisches Video)

Aus dem Kurs“ Datenparallelitätslösung auf Zehn-Millionen-Ebene (Theorie + Praxis)》

1. Einführung in Elasticsearch

Verteilter Echtzeit-Dateispeicher, jedes Feld ist indiziert und durchsuchbar, verteilte Echtzeitanalyse-Suchmaschine

kann erweitert werden an Hunderte von Servern, um strukturierte oder unstrukturierte Daten auf PB-Ebene zu verarbeiten

2. Elasticsearch-Anwendungsszenarien

Verteilte Suchmaschine und Datenanalysemaschine, Volltextabruf, strukturierter Abruf, Datenanalyse

Führen Sie eine Massendatenverarbeitung nahezu in Echtzeit durch , Vor-Ort-Suche (E-Commerce, Personalbeschaffung, Portal usw.), IT-Systemsuche (OA, CRM, ERP usw.), Datenanalyse

3 Vor- und Nachteile von Elasticsearch

Nachteile: Keine Benutzerverifizierung Und Berechtigungskontrolle, es gibt kein Transaktionskonzept, Rollback wird nicht unterstützt, versehentliches Löschen kann nicht wiederhergestellt werden und es ist eine Java-Umgebung erforderlich.

Vorteile: Teilen Sie Ihre Dokumente in verschiedene Container oder Shards auf, und es kann einen einzelnen Knoten oder geben mehrere Knoten

Das Kopieren jedes Shards bietet eine Datensicherung, um Datenverluste aufgrund von Hardwareproblemen zu verhindern.节 Leiten Sie die gegenseitigen Anforderungen aller Knoten im Cluster weiter, um sicherzustellen, dass die erhaltenen Daten Ihren Anforderungen entsprechen. Wenn der Cluster das Sharding erhöht oder neu zuweist, werden die verlorenen Knotendaten auf dem neuen Knoten wiederhergestellt. Die Lösung stellt

Gateway dar Die dauerhafte Speichermethode des Elasticsearch-Index. Standardmäßig speichert Elasticsearch den Index zuerst im Speicher und speichert ihn dann auf der Festplatte, wenn der Speicher voll ist. Wenn der Elasticsearch-Cluster heruntergefahren oder neu gestartet wird, werden Indexdaten vom Gateway gelesen. Elasticsearch unterstützt mehrere Arten von Gateways, darunter lokale Dateisysteme (Standard), verteilte Dateisysteme, HDFS von Hadoop und den S3-Cloud-Speicherdienst von Amazon.

ElasticSearch speichert zunächst den Indexinhalt im Speicher und speichert den Index dann auf der Festplatte, wenn der Speicher nicht ausreicht. Gleichzeitig verfügt es auch über eine Warteschlange, die den Index beim Systemstart automatisch auf die Festplatte schreibt ist untätig.

2. Redis-Datenbank

1. Einführung in Redis redis ist ein Open-Source-BSD-lizenziertes erweitertes Schlüsselwertspeichersystem (NoSQL), das zum Speichern von Zeichenfolgen, Hash-Strukturen, verknüpften Listen und Mengen verwendet werden kann Daher wird es häufig zur Bereitstellung von Datenstrukturdiensten verwendet. Redis unterstützt die Datenpersistenz und kann Daten im Speicher auf der Festplatte speichern und zur Verwendung beim Neustart erneut laden. Es unterstützt einfache Daten vom Typ Schlüsselwert und bietet außerdem die Speicherung von Datenstrukturen wie Liste, Menge, Zset und Hash. Redis unterstützt die Datensicherung, also die Datensicherung im Master-Slave-Modus.

2.Redis-Anwendungsszenario

A) Regelmäßige Zählung: Anzahl der Fans, Anzahl der Weibo

B) Änderungen der Benutzerinformationen

C) Cache-Verarbeitung, als MySQL-Cache

D) Warteschlangensystem, aufgebaut mit Prioritätswarteschlangensystem , Protokollsammelsystem

3. Vor- und Nachteile von Redis

Vorteile:

(1) Schnell, da die Daten im Speicher gespeichert werden, ähnlich wie bei HashMap. Der Vorteil von HashMap besteht darin, dass die Zeitkomplexität von Suche und Betrieb O ist (1)

(2) Unterstützt umfangreiche Datentypen, unterstützt Zeichenfolgen, Listen, Mengen, sortierte Mengen, Hash

(3) Unterstützt Transaktionen und Operationen sind atomar, die sogenannte Atomizität bedeutet, dass alle Änderungen an den Daten ausgeführt werden , oder sie nicht alle ausführen

(4) Umfangreiche Funktionen: können zum Zwischenspeichern, Versenden von Nachrichten und zum Festlegen der Ablaufzeit per Schlüssel verwendet werden, sie werden nach Ablauf automatisch gelöscht

Nachteile:

(1) Redis hat keinen automatischen Fehler Toleranz- und Wiederherstellungsfunktionen. Die Ausfallzeit der Host- und Slave-Maschinen führt dazu, dass einige Front-End-Lese- und Schreibanforderungen fehlschlagen. Sie müssen warten, bis die Maschine neu gestartet wird, oder die Front-End-IP manuell wechseln

(2 ) Der Host-Rechner ist ausgefallen. Einige Daten konnten nicht rechtzeitig vor dem Ausfall synchronisiert werden. Nach dem Wechsel der IP kommt es zu Dateninkonsistenzen, die die Verfügbarkeit des Systems verringern. (3) Der Master-Slave Die Replikation von Redis übernimmt die vollständige Replikation. Der Host erstellt einen Snapshot des Speichers und kopiert den Speicher-Snapshot des Prozesses als Datei Für diesen Prozess muss sichergestellt werden, dass der Host über genügend freien Speicher verfügt. Wenn die Snapshot-Datei groß ist, hat dies größere Auswirkungen auf die Servicefunktionen des Clusters, und der Replikationsprozess wird durchgeführt, wenn die Slave-Maschine dem Cluster neu beitritt oder wenn die Slave-Maschine und das Host-Netzwerk getrennt und wieder verbunden werden , Netzwerkschwankungen führen dazu, dass sich Host und Host erneut verbinden. Eine vollständige Datenkopie zwischen Slave-Maschinen verursacht große Probleme beim tatsächlichen Systembetrieb

(4) Redis ist schwierig, die Online-Erweiterung zu unterstützen. Wenn die Clusterkapazität die Obergrenze erreicht, wird die Online-Erweiterung sehr kompliziert. Um dieses Problem zu vermeiden, muss das Betriebs- und Wartungspersonal sicherstellen, dass genügend Platz vorhanden ist, wenn das System online geht, was zu einer großen Ressourcenverschwendung führt.

4. Redis-Persistenzlösung

Redis bietet zwei Möglichkeiten für die Persistenz: eine ist die RDB-Persistenz (das Prinzip besteht darin, die Datenbankdatensätze von Reids regelmäßig im Speicher in die RDB-Persistenz auf der Festplatte abzulegen) und die andere ist die RDB-Persistenz AOF-Persistenz (Append Only File) (das Prinzip besteht darin, das Betriebsprotokoll von Reids angehängt in die Datei zu schreiben).

RDB-Persistenz bezieht sich auf das Schreiben eines Snapshots des Datensatzes im Speicher innerhalb eines bestimmten Zeitintervalls auf die Festplatte. Der eigentliche Vorgang besteht darin, einen untergeordneten Prozess zu verzweigen, den Datensatz zunächst in eine temporäre Datei zu schreiben und ihn anschließend zu ersetzen Das Schreiben ist erfolgreich. Die Dateien werden mit binärer Komprimierung gespeichert.​

3. Mongodb-Datenbank

1 Einführung in Mongodb

MongoDB selbst ist eine nicht relationale Datenbank. Jeder seiner Datensätze ist ein Dokument, und jedes Dokument besteht aus einer Reihe von Schlüssel-Wert-Paaren. Dokumente in MongoDB ähneln JSON-Objekten. Die Werte der Felder im Dokument können andere Dokumente, Arrays usw. umfassen.

2.Mongodb-Anwendungsszenario

Das Hauptziel von Mongodb besteht darin, eine Brücke zwischen der Schlüssel-/Wertspeichermethode (die hohe Leistung und hohe Skalierbarkeit bietet) und dem traditionellen RDBMS-System (umfangreiche Funktionen) zu schlagen und die Vorteile beider zu integrieren ein Körper. Mongo eignet sich für die folgenden Szenarien:

a. Website-Daten: Mongo eignet sich sehr gut zum Einfügen, Aktualisieren und Abfragen in Echtzeit und verfügt über die Replikation und hohe Skalierbarkeit, die für die Echtzeit-Datenspeicherung der Website erforderlich sind.

b. Caching: Aufgrund seiner hohen Leistung eignet sich Mongo auch als Caching-Schicht für die Informationsinfrastruktur. Nach dem Neustart des Systems kann der von Mongo erstellte persistente Cache verhindern, dass die zugrunde liegende Datenquelle überlastet wird.

c. Große Datenmengen mit geringem Wert: Es kann teurer sein, einige Daten in herkömmlichen relationalen Datenbanken zu speichern. Zuvor entschieden sich viele Programmierer häufig für die Speicherung in herkömmlichen Dateien.

d. Szenarien mit hoher Skalierbarkeit: Mongo eignet sich sehr gut für Datenbanken, die aus Dutzenden oder Hunderten von Servern bestehen.

e. Wird zur Speicherung von Objekten und JSON-Daten verwendet: Das BSON-Datenformat von mongo eignet sich sehr gut zur Speicherung und Abfrage von Dokumentformaten.

3. Vor- und Nachteile von Mongodb

Vorteile:

(1) Schwache Konsistenz (eventuelle Konsistenz), die die Benutzerzugriffsgeschwindigkeit besser gewährleisten kann

(2) Die Speichermethode der Dokumentstruktur kann Daten bequemer abrufen

(3) Integriertes GridFS, unterstützt Speicher mit großer Kapazität

(4) In Anwendungsfällen mit zig Millionen Dokumentobjekten und fast 10 GB Daten ist die Abfrage für indizierte IDs nicht langsamer als MySQL, für nicht jedoch - Die Abfrage des Indexfeldes ist ein Gesamtsieg.

Nachteile:

(1) Unterstützt Dinge nicht

(2) Belegt zu viel Platz, was zu Festplattenverschwendung führt

(3) Die Standalone-Zuverlässigkeit ist relativ schlecht

(4) Große Datenmengen sind Kontinuierlich eingefügt, Schreibleistung. Es gibt große Schwankungen. Wenn der Server daher plötzlich abstürzt, spielt das Journal beim Start alle Schreibvorgänge ab, die vor dem Absturz nicht auf die Festplatte geschrieben wurden.

Die Datendatei wird standardmäßig alle 60 Sekunden auf die Festplatte geleert, sodass das Journal die geschriebenen Daten nur innerhalb von 60 Sekunden speichern muss. Zu diesem Zweck reserviert das Journal vorab mehrere leere Dateien, die sich in /data/db/journal befinden und _j.0, j.1 usw. heißen.

Wenn MongoDB längere Zeit läuft, werden im Journalverzeichnis Dateien ähnlich _j.6217, _j.6218 und _j.6219 angezeigt. Bei diesen Dateien handelt es sich um die aktuellen Journaldateien, und wenn MongoDB die ganze Zeit läuft, werden diese Zahlen weiter steigen. Wenn MongoDB ordnungsgemäß heruntergefahren wird, werden diese Dateien gelöscht, da diese Protokolle während eines ordnungsgemäßen Herunterfahrens nicht mehr benötigt werden.

Wenn der Server abstürzt oder -9 tötet, wird beim erneuten Start von mongodb die Journaldatei erneut abgespielt und es werden lange und schwer verständliche Bestätigungszeilen ausgegeben, die auf eine normale Wiederherstellung hinweisen.

4. Verteilter MySQL-Cluster

1. Einführung in den verteilten MySQL-Cluster MySQL-Cluster ist eine Speicherlösung mit verteilter Knotenarchitektur, die auf Fehlertoleranz und hohe Leistung abzielt.

Die Datenaktualisierung verwendet eine lesefestgeschriebene Isolationsstufe, um die Konsistenz der Daten auf allen Knoten sicherzustellen, und verwendet einen zweiphasigen Festschreibungsmechanismus, um sicherzustellen, dass alle Knoten über dieselben Daten verfügen (wenn ein Schreibvorgang fehlschlägt, schlägt die Aktualisierung fehl).

Shared-Nothing-Peer-Knoten machen Aktualisierungsvorgänge auf einem Server sofort auf anderen Servern sichtbar. Die Verbreitung von Updates nutzt einen komplexen Kommunikationsmechanismus, der einen hohen Durchsatz im gesamten Netzwerk gewährleisten soll.

Verteilen Sie die Last auf mehrere MySQL-Server, um die Programmleistung zu maximieren und hohe Verfügbarkeit und Redundanz sicherzustellen, indem Sie Daten an verschiedenen Orten speichern.

2. Anwendungsszenario für verteilte MySQL-Cluster

löst das Problem der Massenspeicherung, wie z. B. des von Jingdong B2B verwendeten verteilten MySQL-Clusters.

Geeignet für Milliarden PV-Zugriff auf DB.

3. Vor- und Nachteile des verteilten MySQL-Clusters

Vorteile:

a) Hohe Verfügbarkeit

b) Schnelles automatisches Failover

c) Flexible verteilte Architektur, kein Single Point of Failure

d) Hoher Durchsatz und geringe Latenz

e) Starke Skalierbarkeit, Unterstützung der Online-Erweiterung

Nachteile:

a) Es gibt viele Einschränkungen , wie zum Beispiel: Fremdschlüssel werden nicht unterstützt

b) Bereitstellung, Verwaltung und Konfiguration sind kompliziert

c) Es beansprucht viel Speicherplatz und Arbeitsspeicher

d) Sicherung und Wiederherstellung sind umständlich

e) Neustart manchmal Es dauert lange, bis der Datenknoten Daten in den Speicher lädt.

4 MySQL-Lösung für verteilte Cluster-Persistenz. Lastausgleich.

Knotensicherung verwalten.

Verwandte kostenlose Lernempfehlungen:

MySQL-Video-Tutorial

Das obige ist der detaillierte Inhalt vonSo verstehen Sie, was verteilte Datenbanken sind. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn