Heim  >  Artikel  >  Datenbank  >  Welche Möglichkeiten gibt es für Unterdatenbanken und Tabellen in MySQL?

Welche Möglichkeiten gibt es für Unterdatenbanken und Tabellen in MySQL?

WBOY
WBOYnach vorne
2023-06-02 12:34:143324Durchsuche

    1. Warum müssen wir Datenbanken und Tabellen aufteilen?

    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.

    2. Was ist Sharding und Sharding?

    • 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

    Drei Möglichkeiten zur Unterdatenbank und Untertabellen

    Welche Möglichkeiten gibt es für Unterdatenbanken und Tabellen in MySQL?

    1. Vertikale Aufteilung der Datenbank

    Je nach Geschäftsaufteilung, wie gezeigt In der Abbildung ist das E-Commerce-System in eine Bestelldatenbank, eine Mitgliederdatenbank und eine Produktdatenbank unterteilt. Welche Möglichkeiten gibt es für Unterdatenbanken und Tabellen in MySQL?

    (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 unterschiedlichWelche Möglichkeiten gibt es für Unterdatenbanken und Tabellen in MySQL?

    Jeder Die Daten in den Bibliotheken (Tabellen) müssen in mindestens einer Spalte gleich sein

    Die Vereinigung jeder Bibliothek (Tabelle) ergibt die gesamte Datenmenge
    • Vorteile und Nachteile der vertikalen Aufteilung
    • Vorteile:
    Geschäft nach der Aufteilung klar (dedizierte Datenbankaufteilung nach Unternehmen)

    Einfache Datenpflege, verschiedene Unternehmen werden auf verschiedenen Maschinen platziert

      Nachteile:
    • Wenn die Datenmenge in einer einzelnen Tabelle groß ist, wird der Schreib- und Lesedruck

    von einem bestimmten Unternehmen bestimmt oder eingeschränkt, was bedeutet, dass ein Unternehmen häufig den Engpass der Datenbank beeinträchtigt (Leistungsprobleme, z. B Double Eleven Rush Sales)

    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

    • Wie in der Abbildung gezeigt, Aufteilung nach Mitgliedsbibliothek, Aufteilung in Mitglieder 1-Bibliothek, Mitglied 2-Bibliothek, Aufteilung nach Benutzer-ID, Benutzer-ID-Endnummer 0-5 ist 1 Bibliothek, 6-9 ist 2 Bibliothek, Es gibt andere Möglichkeiten, Modulo zu verwenden: gerade Zahlen werden in einer Bibliothek platziert, ungerade Zahlen werden in zwei Bibliotheken platziert Tabelle „Benutzer1“ und Tabelle „Benutzer2“, aufgeteilt nach Benutzer-ID, nehmen Sie das Modulo, gerade Zahlen werden in die Tabelle „Benutzer1“ und ungerade Zahlen in die Tabelle „Benutzer2“ eingefügt Die Datenbank verfügt normalerweise über einen kontinuierlichen Datenbereich, der jedoch im Allgemeinen weniger genutzt wird, da eine große Anzahl von Datenverkehren auf den neuesten Daten basiert : Beim Erweitern ist es sehr einfach, da Sie nur für jeden Monat eine Bibliothek vorbereiten müssen. Wenn ein neuer Monat kommt, wird natürlich eine neue Bibliothek geschrieben. Nachteile: Die meisten Anfragen greifen auf die neuesten Daten zu. Der Bereich wird in der tatsächlichen Produktion verwendet. Es hängt vom Szenario ab, dass Ihre Benutzer nicht nur auf die aktuellen Daten zugreifen, sondern auch auf die historischen Daten Anforderungsdruck: Die Erweiterung ist schwieriger und es kommt zu einem Prozess der Datenmigration
    • Die Daten jeder Datenbank (Tabelle) sind unterschiedlich.

    Die Vereinigung jeder Datenbank (Tabelle) ist die gesamte Datenmenge.

    (4) Vor- und Nachteile der horizontalen Aufteilung

    Welche Möglichkeiten gibt es für Unterdatenbanken und Tabellen in MySQL? 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

    4. Probleme durch Unterdatenbanken und Untertabellen

    • verteilte Transaktionen

    • datenbankübergreifende Join-Abfrage

    • verteilte globale eindeutige ID

    • Entwicklung Die Kosten für Programmierer sind hoch Schicht:

      shardingsphere, tddl

    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

      (2) Proxy-Schicht ausgeführt

    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-SchichtWelche Möglichkeiten gibt es für Unterdatenbanken und Tabellen in MySQL?

    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 FunktionWelche Möglichkeiten gibt es für Unterdatenbanken und Tabellen in MySQL?

    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!

    Stellungnahme:
    Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen