Quellcodestruktur der Cantian-Engine
Inhalt der Spalte :
Santian Engine-Kernel-Architektur
In dieser Kolumne sprechen wir über die Santian Engine-Kernel-Architektur und wie man Multi-Lesen und Multi-Schreiben von Multi-Maschinen-Datenbankknoten erreicht, den Unterschied zu herkömmlichen Aktiv- und Standby-Knoten, MPP, Analyse technischer Schwierigkeiten, Daten-Metadaten-Synchronisierung, Multi-Master. Unterstützung für Fehlerbehebung bei Knoten.In dieser Kolumne werden hauptsächlich die Entwicklung der handgeschriebenen Datenbank toadb
von Grund auf, die Entwicklungsschritte, die Prinzipien des Entwicklungsprozesses, die aufgetretenen Probleme usw. vorgestellt, damit alle mithalten und sich gemeinsam weiterentwickeln können, sodass jeder, der sie benötigt, dies tun kann Werden Sie Teilnehmer.
Diese Spalte wird regelmäßig aktualisiert, und der entsprechende Code wird ebenfalls regelmäßig aktualisiert. Der Code in jeder Phase wird mit Tags versehen, um das Lernen in jeder Phase zu erleichtern.
Open- Source-Beiträge :
Persönliche Homepage : Meine Homepage
Management-Community : Open-Source-Datenbank
Motto: Wenn der Himmel stark ist, strebt ein Gentleman nach Selbstverbesserung; wenn das Gelände gut ist, trägt ein Gentleman große Tugenden.
Artikelverzeichnis
Vorwort
Die Entwicklung inländischer Datenbanken ist in vollem Gange und jedes Jahr gibt es auf verschiedenen Konferenzen gute Nachrichten. Zusätzlich zu den verschiedenen technologischen Entwicklungen der Datenbank selbst hat Huawei in diesem Jahr die Shentian Engine veröffentlicht, die eine Basisform der Datenbank darstellt. Das heißt, alle Datenbanken. Die Datenbank kann auf der Grundlage der Santian Engine erstellt werden, um ein Datenbanksystem mit einer verteilten Multi-Master-Architektur zu bilden, weshalb sie als Engine bezeichnet wird.
In dieser Kolumne geht es ausführlich um die interne Architektur der Santian Engine und um die Anpassung an die Santian Engine.
Überblick
Der Kerncode der Cantian-Engine ist im Wesentlichen Open Source, was Enthusiasten dazu veranlasst, ihn auszuprobieren. Heute werde ich Ihnen die Quellcodestruktur der Cantian-Engine mitteilen.
Quellcode-Adresse
Quellcode-Verzeichnisstruktur
Der Quellcode befindet sich hauptsächlich im Verzeichnis pkg/src:
[senllang@hatch src]$ ll
total 44
drwxr-xr-x. 2 senllang develops 4096 Dec 9 14:03 cluster
-rw-r--r--. 1 senllang develops 792 Dec 9 14:03 CMakeLists.txt
drwxr-xr-x. 4 senllang develops 94 Dec 9 14:03 cmd
drwxr-xr-x. 4 senllang develops 56 Dec 9 14:03 cms
drwxr-xr-x. 3 senllang develops 8192 Dec 9 14:03 common
drwxr-xr-x. 3 senllang develops 39 Dec 9 14:03 driver
drwxr-xr-x. 2 senllang develops 4096 Dec 9 14:03 gstbox
drwxr-xr-x. 18 senllang develops 4096 Dec 9 14:03 kernel
drwxr-xr-x. 2 senllang develops 4096 Dec 9 14:03 mec
drwxr-xr-x. 2 senllang develops 4096 Dec 9 14:03 protocol
drwxr-xr-x. 2 senllang develops 66 Dec 9 14:03 rc
drwxr-xr-x. 3 senllang develops 4096 Dec 9 14:03 server
drwxr-xr-x. 4 senllang develops 4096 Dec 9 14:03 tse
drwxr-xr-x. 2 senllang develops 60 Dec 9 14:03 upgrade_check
drwxr-xr-x. 4 senllang develops 52 Dec 9 14:03 utils
drwxr-xr-x. 2 senllang develops 72 Dec 9 14:03 version
Wie oben gezeigt, sehen Sie das nach dem Modul benannte Verzeichnis.
Einführung in die Hauptmodule
Es gibt mehrere Hauptmodule:
cantianLib
Er kann als separater Knoten existieren, beispielsweise als Datenknoten oder Koordinationsknoten. Im Allgemeinen wird er als Datenknoten verwendet und dient der Speicherung von Verwaltungsdaten. Er hat nur die Funktion der Verwaltung und Koordination. Der CMS-Knoten ist für die Implementierung von Daten und Geräten verantwortlich.
cantianlib ist die Brücke zwischen der Datenbank-Engine und dem CMS-Knoten. Sie verarbeitet Datenanforderungen in verschiedenen SQL-Ausführungsszenarien und zeichnet Transaktionsprotokolle auf.
Quellcodeverzeichnis
Der cantianLib-Code befindet sich in
./pkg/src/server/
Systemstruktur
Es ist außerdem mit einer Multithread-Architektur implementiert. Sein Front-End ist ein DB-Agent, der auf Netzwerkanfragen von ihm lauscht, wie etwa die Anmeldung bei der Datenbank, die Ausführung von DDL, DML usw., und diese in Datenanfragen umwandelt und sendet sie dann an das CMS. Es umfasst im Wesentlichen mehrere Dienstleistungen:
- Der Kernel-Dienst wird hauptsächlich für die Daten- und Sperranforderungsverarbeitung verwendet und ist für die Pufferverwaltung, Katalogmetadatenverwaltung usw. verantwortlich.
- Der DB-Hintergrunddienst verarbeitet hauptsächlich Anfragen vom DB-Agenten und wandelt SQL-Szenarien in Datenanfragen um. Durch die Bindung von Sitzungen an Thread-Dienste kann er den gleichzeitigen Zugriff auf Daten verarbeiten.
CMS-Modul
CMS ist ein Kerndienst, der hauptsächlich verteilte Ressourcen, verteilte Sperren und Speichergeräte plant und verwaltet. Das Ganze ist eine Multithread-Architektur, die über das Netzwerk mit dem Front-End interagiert, auf Ressourcenanforderungen reagiert und diese vom Speicherdateisystem abruft.
Quellcodeverzeichnis
Der Quellcode des CMS-Moduls befindet sich in
./pkg/src/cms/cms
Systemstruktur
Die Codestruktur ist in der folgenden Abbildung dargestellt
Das Modul besteht aus drei Hauptphasen:
- Initialisierung; einschließlich Laden und Initialisieren der Konfiguration, Initialisierung jedes Dienstes und Start von Dienst-Threads, Geräten und Netzwerken;
- Die laufende Phase; verarbeitet hauptsächlich Ereignisse von Nachrichten und Prozessen und reagiert auf Nachrichten; hier sind die Hauptanforderungen die Zuweisung verschiedener Ressourcen und Sperren;
- Beenden; wenn CMS beendet wird, Daten bereinigen und herunterladen;
Zusammenfassen
Im Allgemeinen ist die Santian-Engine in drei Hauptteile unterteilt.
- Der erste ist der Agent, der mit Datenbankberechnungen kombiniert wird. Hier ist kein Open Source zu sehen. Er gilt hauptsächlich für den Datenknoten zur Freigabe der Daten, die während der Datenbankberechnung benötigt werden.
- Die zweite ist cantianLib, der Datenknoten. Dieser Teil verwaltet datenbankbezogene Daten wie Datencache, Datenbankmetadaten usw., synchronisiert zwischen mehreren Knoten und verfügt auch über einige Dienste, die von mehreren Knoten koordiniert werden müssen, z als Backup, Checkpoint, Transaktionseinreichung usw.;
- Der dritte Teil ist CMS, der physische Speicherteil. Es verteilt Datenzeilen auf Speichergeräte, verwaltet die Datenverteilung und kann bei Datenanforderung Daten von physischen Geräten lesen und schreiben.
Als vierter Teil gilt natürlich auch das entsprechende physische Speichergerät, das NFS oder DBstor entsprechen kann. Für die Optimierung dieses Teils gibt es keine Open Source.
Ende
Vielen Dank für Ihre Unterstützung. Vergessen Sie nicht, beim Stöbern Ihre wertvollen Kommentare zu hinterlassen. Wenn Sie der Meinung sind, dass es eine Ermutigung wert ist, liken Sie es bitte und speichern Sie es. Ich werde härter arbeiten!
E-Mail des Autors: [email protected]
Wenn es Fehler oder Auslassungen gibt, weisen Sie bitte darauf hin und lernen Sie voneinander.