Wenn sich das Geschäft einer Website schnell entwickelt, steigt auch der Datenverkehr, z. B -Commerce-Systeme, Double Eleven Der Druck auf Bestelldaten ist groß, mit Hunderttausenden gleichzeitigen Tps. Wenn die traditionelle Architektur (ein Master und mehrere Slaves) verwendet wird, wird die Hauptdatenbankkapazität definitiv nicht in der Lage sein, solch hohe Tps zu erfüllen . Das Geschäft wird immer größer und die Daten einzelner Tabellen übersteigen die Datenbankkapazität, die E/A der persistenten Festplatte, der Leistungsengpass bei herkömmlichen Datenbanken, das Produktmanager-Geschäft – müssen das Programm ändern und die Segmentierung der Datenbank optimieren. Aufgrund der unzureichenden Anzahl von Datenbankverbindungen und der großen Datenmenge in der Tabelle ist die Abfrageleistung auch nach der Optimierung immer noch gering, sodass eine Aufteilung erforderlich ist.
Die Sharding- und Sharding-Lösung ist eine Ergänzung zum Datenspeicher- und Zugriffsmechanismus relationaler Datenbanken.
Unterbibliothek: Teilen Sie die Daten einer Bibliothek in mehrere identische Bibliotheken auf und greifen Sie beim Zugriff auf eine Bibliothek zu.
Untertabelle: Fügen Sie die Daten einer Tabelle in mehrere Tabellen ein, bedienen Sie einfach die entsprechende Tabelle
Je nach Geschäftsaufteilung, wie gezeigt In der Abbildung ist das E-Commerce-System in eine Bestelldatenbank, eine Mitgliederdatenbank und eine Produktdatenbank unterteilt.
(2) Teilen Sie die Tabelle vertikal auf
Teilen Sie die Tabelle wie gezeigt nach dem Unternehmen auf Teilen Sie in der Abbildung die Benutzertabelle auf. Teilen Sie sie in die Tabelle user_base und die Tabelle user_info auf. Use_base ist für die Speicherung der Anmeldung verantwortlich, user_info ist für die Speicherung grundlegender Benutzerinformationen verantwortlich ) ist unterschiedlich
Jeder Die Daten in den Bibliotheken (Tabellen) müssen in mindestens einer Spalte gleich seinDie Vereinigung jeder Bibliothek (Tabelle) ergibt die gesamte Datenmenge
Einfache Datenpflege, verschiedene Unternehmen werden auf verschiedenen Maschinen platziert
Einige Unternehmen können nicht mit Joins verknüpft werden und können nur mit Joins der Java-Programmschnittstelle verknüpft werden, was die Entwicklungskomplexität erhöht
(1) Datenbank horizontale Aufteilung
(4) Vor- und Nachteile der horizontalen Aufteilung
Die Daten einer einzelnen Datenbank/einzelnen Tabelle werden auf einer bestimmten Menge gehalten (reduziert), was zur Verbesserung der Leistung beiträgt
und die Stabilität und Belastbarkeit des Systems verbessert Die geteilte Tabelle hat die gleiche Struktur und erfordert weniger Programmänderungen. Nachteile: Die Datenerweiterung ist sehr schwierig und die Wartung ist umfangreich. Aufteilungsregeln sind schwer zu abstrahieren. Konsistenzprobleme bei Sharded-Transaktionen. Einige Unternehmen können nicht mit Joins verknüpft werden, sondern nur mit über die Java-Programmschnittstelle aufgerufen werden verteilte Transaktionen datenbankübergreifende Join-Abfrage verteilte globale eindeutige ID Entwicklung Die Kosten für Programmierer sind hoch Schicht: proxy Proxy-Schicht: mycat, mysql-proxy (360) jdbc-Direktverbindungsschicht jdbc-Direktverbindungsschicht wird auch JDBC-Anwendungsschicht genannt, Da alle Sharding-Regeln, die gesamte Sharding-Slice-Logik, einschließlich der Verarbeitung verteilter Transaktionen, in der Anwendungsschicht liegen. Alle Shards werden als JAR-Pakete geschrieben und in das War-Paket eingefügt Ja, wenn die virtuelle Maschine ausgeführt wird, werden die Bytedateien im War-Paket von classLoder in den JVM-Speicher geladen. Die gesamte Sharding-Logik wird basierend auf der Speicherseite Wie im Bild gezeigt, sind die Proxy-Ebene, alle Sharding-Regeln und die gesamte Sharding-Logik, einschließlich der Verarbeitung verteilter Transaktionen, alle in mycat geschrieben. Die gesamte Sharding-Logik wird auf der Mycat-Seite betrieben (3) jdbc direkt Vor- und Nachteile der Verbindungsschicht und der Proxy-Schicht Die direkte JDBC-Verbindungsschicht hat eine hohe Leistung, unterstützt nur die Java-Sprache und unterstützt datenbankübergreifend Die Proxy-Proxy-Schicht hat niedrige Entwicklungskosten und unterstützt sprachübergreifend. unterstützt keine datenbankübergreifende Funktion
4. Probleme durch Unterdatenbanken und Untertabellen
Das obige ist der detaillierte Inhalt vonWelche Möglichkeiten gibt es für Unterdatenbanken und Tabellen in MySQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!