Der Kerninhalt der Datenbankverteilung ist nichts anderes als die Datensegmentierung (Sharding) und die Positionierung und Integration von Daten nach der Segmentierung. Bei der Datensegmentierung werden Daten verteilt in mehreren Datenbanken gespeichert, sodass die Datenmenge in einer einzelnen Datenbank kleiner wird und das Leistungsproblem einer einzelnen Datenbank durch die Erweiterung der Anzahl der Hosts gemildert wird, wodurch das Ziel einer Verbesserung der Datenbankbetriebsleistung erreicht wird. Die Datensegmentierung kann je nach Segmentierungstyp in zwei Typen unterteilt werden: vertikale (längs verlaufende) Segmentierung und horizontale (quer verlaufende) Segmentierung. 1. Vertikales (längsseitiges) SchneidenEs gibt zwei gängige Arten der vertikalen Segmentierung: vertikale Datenbanksegmentierung und vertikale Tabellensegmentierung. 1.1 Vertikale DatenbankDas heißt, dass aufgrund der Geschäftskopplung unterschiedliche Tabellen mit geringer Korrelation in unterschiedlichen Datenbanken gespeichert werden. Der Ansatz ähnelt der Aufteilung eines großen Systems in mehrere kleine Systeme, basierend auf Geschäfts Die Kategorien sind unabhängig voneinander unterteilt. Ähnlich dem Ansatz der „Microservice Governance“ verwendet jeder Microservice eine separate Datenbank. Wie in der Abbildung gezeigt: Die Datentabellen verschiedener Module werden in separaten Bibliotheken gespeichert. Die Module stehen in keinem Zusammenhang miteinander. Wenn ja, muss das Problem durch Datenredundanz oder sekundäre Verarbeitung gelöst werden. Diese Geschäftsmethode und Datenstruktur ist am klarsten. Wenn wir jedoch datenbankübergreifende Abfragen nicht verhindern können, deklarieren wir diesen Pfad anders. 1.2 Vertikale TabellenaufteilungEs basiert auf den „Spalten“ in der Datenbank. Wenn eine Tabelle viele Felder hat, können Sie eine neue erweiterte Tabelle erstellen und die Felder, die nicht häufig verwendet werden oder eine große Feldlänge haben, in die erweiterte Tabelle aufteilen. Wenn viele Felder vorhanden sind (eine große Tabelle hat beispielsweise mehr als 100 Felder), erleichtert das „Aufteilen der großen Tabelle in kleine Tabellen“ die Entwicklung und Wartung und vermeidet seitenübergreifende Probleme. MySQL speichert Daten über Datenseiten auf der untersten Ebene. Wenn ein Datensatz zu viel Platz einnimmt, wird er seitenübergreifend ausgeführt, was zu zusätzlichem Leistungsaufwand führt. Darüber hinaus lädt die Datenbank Daten zeilenweise in den Speicher, sodass die Felder in der Tabelle kürzer sind und häufiger aufgerufen werden. Der Speicher kann mehr Daten mit einer höheren Trefferquote laden, was die Festplatten-E/A reduziert und somit die Datenbankleistung verbessert. Vorteile der vertikalen Segmentierung:
Mangel:
2. Horizontale (Querschnitts-)SegmentierungWenn sich eine Anwendung nur schwer vertikal mit höherer Granularität aufteilen lässt oder die Menge der Datenzeilen nach dem Aufteilen sehr groß ist und es Engpässe bei der Lese-, Schreib- und Speicherleistung einer einzelnen Datenbank gibt, ist eine horizontale Aufteilung erforderlich. Horizontales Sharding wird in Intra-Datenbank-Sharding und Sub-Datenbank-Sharding unterteilt. Dabei wird dieselbe Tabelle auf mehrere Datenbanken oder mehrere Tabellen verteilt, je nach den inhärenten logischen Beziehungen der Daten in der Tabelle. Jede Tabelle enthält nur einen Teil der Daten, wodurch die Datenmenge in einer einzelnen Tabelle reduziert und ein verteilter Effekt erzielt wird. Wie in der Abbildung gezeigt:
Das Aufteilen von Tabellen innerhalb einer Datenbank löst nur das Problem zu vieler Daten in einer einzelnen Tabelle, verteilt die Tabelle jedoch nicht auf Datenbanken auf verschiedenen Computern. Daher ist es nicht sehr hilfreich, den Druck auf die MySQL-Datenbank zu verringern. Alle konkurrieren weiterhin um die CPU, den Speicher und die Netzwerk-E/A derselben physischen Maschine. Dieses Problem lässt sich am besten durch Aufteilen der Datenbank und der Tabellen lösen. Vorteile der horizontalen Sharding:
Mangel:
Nach dem horizontalen Sharding wird dieselbe Tabelle in mehreren Datenbanken/Tabellen angezeigt und der Inhalt jeder Datenbank/Tabelle ist unterschiedlich. Einige typische Regeln für die Datenteilung sind: 2.1 Nach dem ZahlenbereichDurch Zeitintervall oder ID-Intervall teilen. Beispiel: Verteilen Sie Daten aus verschiedenen Monaten oder sogar Tagen nach Datum auf unterschiedliche Datenbanken. Verteilen Sie Datensätze mit Benutzer-IDs von 1 bis 9999 an die erste Datenbank, Datensätze mit Benutzer-IDs von 10000 bis 20000 an die zweite Datenbank und so weiter. In gewissem Sinne handelt es sich auch bei der in einigen Systemen angewandten „Trennung von kalten und heißen Daten“, bei der einige weniger genutzte historische Daten in andere Datenbanken migriert werden und in Geschäftsfunktionen nur Abfragen für heiße Daten möglich sind, um eine ähnliche Vorgehensweise. Die Vorteile hiervon sind:
Mangel:
2.2 Modulo nach WertIm Allgemeinen wird die Hash-Modul-Segmentierungsmethode verwendet. Beispielsweise wird die Tabelle „Customer“ gemäß dem Feld „cusno“ in 4 Datenbanken segmentiert. Die Daten mit einem Rest von 0 werden in die erste Datenbank gestellt, die Daten mit einem Rest von 1 in die zweite Datenbank und so weiter. Auf diese Weise werden die Daten desselben Benutzers in derselben Datenbank verstreut. Wenn die Abfragebedingung das Feld cusno enthält, kann die entsprechende Datenbank für die Abfrage eindeutig lokalisiert werden. Vorteil:
Mangel:
Oben finden Sie Einzelheiten zur Datensegmentierung durch Sharding von MySQL-Tabellen und -Datenbanken. Weitere Informationen zur Datensegmentierung durch Sharding von MySQL-Tabellen und -Datenbanken finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM! Das könnte Sie auch interessieren:
|
<<: Eigenschaften von JavaScript-Pfeilfunktionen und Unterschiede zu normalen Funktionen
>>: Die Neugestaltung einer Website ist für jede Familie eine schwierige Aufgabe
Schauen wir uns zunächst einige einfache Daten an:...
Vorwort In den meisten Projekten werden Sie auf e...
Inhaltsverzeichnis benutzerdefinierte Vue-Direkti...
Einstellungen für Hintergrundfarbe und Transparen...
In diesem Artikelbeispiel wird der spezifische Co...
In diesem Artikelbeispiel wird der spezifische Co...
Deaktivieren Sie SeLinux setenforce 0 Dauerhaft g...
Auch wenn nicht Halloween ist, lohnt es sich, sic...
Hintergrund Alle Unternehmenswebsites müssen das ...
Nach chinesischem Brauch feiern wir das neue Jahr...
Die MySQL-Versionsnummer ist 5.7.28. Tabelle A ha...
Die nativen Komponenten des WeChat-Miniprogramms ...
Inhaltsverzeichnis Vorwort Text Parameter Beispie...
Inhaltsverzeichnis 1. Proxy im LAN 2. Intranet-Pe...
Apple-Becher-Symbole und Extras HD StorageBox – Z...