Heim Backend-Entwicklung PHP-Tutorial Design und Praxis des horizontalen Shardings von Datenbanken: Anwendung in der PHP-Programmierung

Design und Praxis des horizontalen Shardings von Datenbanken: Anwendung in der PHP-Programmierung

Jun 23, 2023 am 09:54 AM
实践 php编程 数据库分片

Design und Praxis des horizontalen Shardings von Datenbanken: Anwendung in der PHP-Programmierung

Da die Datenmenge zunimmt, ist die Frage, wie die Datenbank besser verwaltet und optimiert werden kann, für jeden Entwickler zu einem Anliegen geworden. Unter diesen ist das horizontale Datenbank-Sharding eine sehr verbreitete Optimierungsmethode. In diesem Artikel werden Konzept, Prinzip, Design und Praxis des horizontalen Shardings von Datenbanken vorgestellt und der Schwerpunkt auf der Verwendung dieser Technologie in der PHP-Programmierung gelegt.

1. Das Konzept und Prinzip des horizontalen Shardings

Horizontales Sharding bezieht sich auf die horizontale Verteilung der Daten einer Tabelle in mehrere physische Tabellen entsprechend einem bestimmten Feld. Beispielsweise unterteilen wir eine Benutzertabelle entsprechend dem Wertebereich der Benutzer-ID in mehrere Tabellen, z. B. Benutzer_0, Benutzer_1, Benutzer_2 usw. Zu diesem Zeitpunkt müssen Sie beim Abfragen von Benutzerinformationen zunächst den Namen der Tabelle anhand der ID berechnen und dann in der entsprechenden Tabelle nach Daten suchen.

Die Hauptfunktion des horizontalen Shardings besteht darin, eine große Tabelle in kleine Tabellen aufzuteilen, um das Problem der geringen Abfrageeffizienz zu lösen, wenn eine einzelne Tabelle zu groß ist. Da die Daten verschiedener Tabellen außerdem unabhängig voneinander gespeichert werden, können eine verteilte Bereitstellung und eine Hochverfügbarkeitsverarbeitung problemlos durchgeführt werden.

2. Design des horizontalen Shardings

Beim Design des horizontalen Shardings müssen wir die folgenden Punkte berücksichtigen:

  1. Welches Feld soll als Sharding-Feld verwendet werden?
  2. Die Granularität des Shardings.
  3. So bewahren Sie die Konsistenz fragmentierter Daten.
  4. So gehen Sie mit Shard-übergreifenden Abfrageproblemen um.

Lassen Sie uns diese Probleme einzeln lösen.

  1. Auswahl des Sharding-Schlüssels

Die Auswahl des Sharding-Schlüssels ist der Schlüssel im horizontalen Sharding-Design, der sich direkt auf die Qualität des Sharding-Effekts auswirkt. Normalerweise wählen wir den Primärschlüssel oder den eindeutigen Index einer bestimmten Tabelle als Sharding-Schlüssel. Welches Feld als Sharding-Schlüssel ausgewählt werden soll, muss auf der Grundlage spezifischer Geschäftsbedingungen entschieden werden, z. B. Sharding basierend auf der Benutzer-ID, Sharding basierend auf dem Bestellstatus usw.

  1. Sharding-Granularität

Nach der Auswahl des Sharding-Felds müssen wir auch die Sharding-Granularität berücksichtigen. Je feiner die Sharding-Granularität, desto kleiner wird das Datenvolumen einer einzelnen Tabelle und desto besser wird die Abfrageeffizienz. Die Granularität des Shardings darf jedoch nicht zu gering sein, und zu viele physische Tabellen sind der Datenbankverwaltung und -wartung nicht förderlich.

  1. Konsistenz der Sharding-Daten

Nach dem Sharding müssen wir überlegen, wie wir verschiedene Daten unter demselben Sharding-Schlüssel in verschiedenen physischen Tabellen speichern und gleichzeitig die Konsistenz dieser Daten sicherstellen können. Es gibt zwei spezifische Implementierungsmethoden:

(1) Vertikales Sharding: Platzieren Sie verschiedene Felder in verschiedenen Tabellen. Beispielsweise werden die Basisinformationen und Bestellinformationen des Benutzers in verschiedenen Tabellen gespeichert. Der Vorteil dieser Methode besteht darin, dass das Problem der tabellenübergreifenden Verknüpfungen nicht berücksichtigt werden muss und außerdem das Problem der Datenkonsistenz zwischen tabellenübergreifenden Datensätzen vermieden wird.

(2) Horizontales Sharding: Verteilen Sie die Daten derselben Tabelle auf mehrere physische Tabellen. Der Vorteil dieser Methode besteht darin, dass sie die Hardwareressourcen voll ausnutzt und gleichzeitig das Problem einer übermäßigen Datenmenge in einer einzelnen Tabelle vermeidet. Es müssen jedoch Probleme bei tabellenübergreifenden Abfragen und der Datenkonsistenz berücksichtigt werden, und es müssen einige spezielle Technologien verwendet werden, um diese Probleme zu vermeiden.

  1. Umgang mit Shard-übergreifenden Abfrageproblemen

Bei der Abfrage über Shards hinweg müssen wir zunächst die Liste der an der Abfrage beteiligten Shards ermitteln und dann Abfragevorgänge für diese Shards durchführen. Wenn die Abfragebedingungen den Shard-Schlüssel enthalten, kann die Abfrage direkt in der entsprechenden physischen Tabelle platziert werden. Wenn die Abfragebedingungen den Shard-Schlüssel nicht enthalten, muss die Abfrage in allen Shards ausgeführt werden, und dann werden die Ergebnisse zusammengeführt an den Kunden zurückgegeben. Dies kann zwar das Abfrageproblem über mehrere Shards hinweg lösen, erfordert jedoch höhere Ressourcenkosten und Zeitkosten.

3. Verwenden Sie PHP, um horizontales Sharding zu implementieren.

In PHP-Anwendungen können wir horizontales Sharding über Frameworks wie ShardingSphere und Doctrine ORM implementieren. Hier nehmen wir ShardingSphere als Beispiel, um vorzustellen, wie dieses Framework zur Implementierung von horizontalem Sharding verwendet wird.

ShardingSphere ist die erstklassige Open-Source-Middleware für verteilte Datenbanken in China und bietet zwei Versionen: Java und PHP. Die spezifische Implementierung ist wie folgt:

  1. Zuerst müssen wir die ShardingSphere-Abhängigkeit in der Composer.json-Konfigurationsdatei hinzufügen:

"require": {
"php": "^7.2.5",
"sharding- sphere/sharding-proxy": "^5.3",
"sharding-sphere/sharding-core": "^5.3"
}

  1. Dann muss die Startlogik von ShardingSphere zum PHP-Code hinzugefügt werden. Am Beispiel von MySQL müssen wir dem Startcode Folgendes hinzufügen:

use ShardingSphereShardingAutoConfiguration;

$parser = new ShardingSphereParserMySQLMySQLParser();
$executor = new ShardingSphereExecutorExecutorEngine();

$shardingConfig = new ShardingAutoConfiguration () ;

$shardingConfig->setDataSource($dataSource); // Datenquelle festlegen
$shardingConfig->setShardingRule($shardingRuleConfig); // Sharding-Regeln festlegen

$config = new ShardingSphereProxyCommandLineConfig();

$ Instanz = new ShardingSphereProxyShardingInstanceLoader($parser, $executor);

$instance->load($config, $shardingConfig);

  1. Schließlich müssen wir entsprechende Sharding-Regeln schreiben, die auf spezifischen Geschäftsbedingungen basieren.

Spezifische Sharding-Regeln müssen auf der Grundlage spezifischer Geschäftsszenarien formuliert werden. Beispielsweise kann für die Sharding-Regel der Benutzer-ID das Ergebnis der Division der Benutzer-ID durch 10 als Sharding-Schlüssel verwendet und dann basierend auf dem Ergebnis auf mehrere physische Tabellen verteilt werden.

Zu diesem Zeitpunkt haben wir alle Code-Implementierungen für die Verwendung von ShardingSphere zur Implementierung des horizontalen Shardings der Datenbank abgeschlossen.

Zusammenfassung

In diesem Artikel werden Konzept, Prinzip, Design und Praxis des horizontalen Sharding von Datenbanken vorgestellt und erläutert, wie das ShardingSphere-Framework zum Implementieren von horizontalem Sharding in der PHP-Programmierung verwendet wird. Durch horizontales Sharding können wir große Tabellen in kleine Tabellen aufteilen, die Abfrageeffizienz verbessern und die verteilte Bereitstellung und Hochverfügbarkeitsverarbeitung erleichtern.

Das obige ist der detaillierte Inhalt vonDesign und Praxis des horizontalen Shardings von Datenbanken: Anwendung in der PHP-Programmierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
Zwei -Punkte -Museum: Alle Exponate und wo man sie finden kann
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

PHP formatiert Zeilen in CSV und schreibt Dateizeiger PHP formatiert Zeilen in CSV und schreibt Dateizeiger Mar 22, 2024 am 09:00 AM

In diesem Artikel wird ausführlich erläutert, wie PHP Zeilen in CSV formatiert und Dateizeiger schreibt. Ich hoffe, dass Sie nach dem Lesen dieses Artikels etwas daraus lernen können. Zeilen in CSV formatieren und in den Dateizeiger schreiben Schritt 1: Dateizeiger öffnen $file=fopen("path/to/file.csv","w"); in CSV-Strings umwandeln. Die Funktion akzeptiert die folgenden Parameter: $file: Dateizeiger $fields: CSV-Felder als Array $delimiter: Feldtrennzeichen (optional) $enclosure: Feldanführungszeichen (

PHP ändert die aktuelle umask PHP ändert die aktuelle umask Mar 22, 2024 am 08:41 AM

In diesem Artikel wird das Ändern der aktuellen umask in PHP ausführlich erläutert. Der Herausgeber hält dies für recht praktisch, daher teile ich es Ihnen als Referenz mit. Ich hoffe, dass Sie nach dem Lesen dieses Artikels etwas gewinnen können. Überblick über die Änderung der aktuellen umask durch PHP umask ist eine PHP-Funktion, mit der die Standarddateiberechtigungen für neu erstellte Dateien und Verzeichnisse festgelegt werden. Es akzeptiert ein Argument, eine Oktalzahl, die die Blockierungsberechtigung darstellt. Um beispielsweise die Schreibberechtigung für neu erstellte Dateien zu verhindern, würden Sie 002 verwenden. Methoden zum Ändern von umask Es gibt zwei Möglichkeiten, die aktuelle umask in PHP zu ändern: Verwendung der Funktion umask(): Die Funktion umask() ändert direkt die aktuelle umask. Seine Syntax ist: intumas

PHP erstellt eine Datei mit einem eindeutigen Dateinamen PHP erstellt eine Datei mit einem eindeutigen Dateinamen Mar 21, 2024 am 11:22 AM

In diesem Artikel wird ausführlich erklärt, wie man in PHP eine Datei mit einem eindeutigen Dateinamen erstellt. Der Herausgeber hält dies für recht praktisch, daher teile ich es Ihnen als Referenz mit und hoffe, dass Sie nach dem Lesen dieses Artikels etwas gewinnen können. Erstellen von Dateien mit eindeutigen Dateinamen in PHP Einführung Das Erstellen von Dateien mit eindeutigen Dateinamen in PHP ist für die Organisation und Verwaltung Ihres Dateisystems unerlässlich. Eindeutige Dateinamen stellen sicher, dass vorhandene Dateien nicht überschrieben werden und erleichtern das Auffinden und Abrufen bestimmter Dateien. In diesem Handbuch werden verschiedene Möglichkeiten zum Generieren eindeutiger Dateinamen in PHP behandelt. Methode 1: Verwenden Sie die Funktion uniqid(). Die Funktion uniqid() generiert eine eindeutige Zeichenfolge basierend auf der aktuellen Zeit und den Mikrosekunden. Diese Zeichenfolge kann als Grundlage für den Dateinamen verwendet werden.

PHP berechnet den MD5-Hash der Datei PHP berechnet den MD5-Hash der Datei Mar 21, 2024 pm 01:42 PM

In diesem Artikel wird ausführlich erläutert, wie PHP den MD5-Hash von Dateien berechnet. Der Herausgeber hält dies für recht praktisch, daher teile ich es Ihnen als Referenz mit. Ich hoffe, dass Sie nach dem Lesen dieses Artikels etwas gewinnen können. PHP berechnet den MD5-Hash einer Datei. MD5 (MessageDigest5) ist ein Einweg-Verschlüsselungsalgorithmus, der Nachrichten beliebiger Länge in einen 128-Bit-Hashwert fester Länge umwandelt. Es wird häufig verwendet, um die Dateiintegrität sicherzustellen, die Datenauthentizität zu überprüfen und digitale Signaturen zu erstellen. Berechnen des MD5-Hash einer Datei in PHP PHP bietet mehrere Methoden zum Berechnen des MD5-Hash einer Datei: Verwenden Sie die Funktion md5_file(). Die Funktion md5_file() berechnet direkt den MD5-Hash-Wert der Datei und gibt einen 32-stelligen Wert zurück

PHP-Codierungspraktiken: Alternativen zu Goto-Anweisungen ablehnen PHP-Codierungspraktiken: Alternativen zu Goto-Anweisungen ablehnen Mar 28, 2024 pm 09:24 PM

PHP-Codierungspraktiken: Weigerung, Alternativen zu Goto-Anweisungen zu verwenden In den letzten Jahren haben Programmierer mit der kontinuierlichen Aktualisierung und Iteration von Programmiersprachen begonnen, den Codierungsspezifikationen und Best Practices mehr Aufmerksamkeit zu schenken. In der PHP-Programmierung gibt es die goto-Anweisung als Kontrollflussanweisung schon seit langem, in praktischen Anwendungen führt sie jedoch häufig zu einer Verschlechterung der Lesbarkeit und Wartbarkeit des Codes. In diesem Artikel werden einige Alternativen vorgestellt, die Entwicklern helfen sollen, die Verwendung von goto-Anweisungen zu verweigern und die Codequalität zu verbessern. 1. Warum die Verwendung der goto-Anweisung verweigern? Lassen Sie uns zunächst darüber nachdenken, warum

PHP schneidet die Datei auf die angegebene Länge ab PHP schneidet die Datei auf die angegebene Länge ab Mar 21, 2024 am 11:42 AM

In diesem Artikel wird ausführlich erläutert, wie PHP Dateien auf eine bestimmte Länge kürzt. Der Herausgeber hält dies für recht praktisch, daher teile ich es Ihnen als Referenz mit. Ich hoffe, dass Sie nach dem Lesen dieses Artikels etwas gewinnen können. Einführung in die PHP-Dateikürzung Die Funktion file_put_contents() in PHP kann verwendet werden, um Dateien auf eine bestimmte Länge zu kürzen. Unter Abschneiden versteht man das Entfernen eines Teils des Endes einer Datei, wodurch die Dateilänge verkürzt wird. Syntax file_put_contents($filename,$data,SEEK_SET,$offset);$filename: der Dateipfad, der gekürzt werden soll. $data: Leerer String, der in die Datei geschrieben werden soll. SEEK_SET: Wird als Anfang der Datei bezeichnet

PHP gibt die numerische Kodierung der Fehlermeldung in der vorherigen MySQL-Operation zurück PHP gibt die numerische Kodierung der Fehlermeldung in der vorherigen MySQL-Operation zurück Mar 22, 2024 pm 12:31 PM

In diesem Artikel wird die digitale Kodierung der von PHP im vorherigen MySQL-Vorgang zurückgegebenen Fehlermeldung ausführlich erläutert. Der Herausgeber hält dies für recht praktisch, daher teile ich es Ihnen als Referenz mit. Ich hoffe, dass Sie nach dem Lesen dieses Artikels etwas gewinnen können . . Verwenden von PHP zum Zurückgeben von MySQL-Fehlerinformationen Einführung in die numerische Kodierung Bei der Verarbeitung von MySQL-Abfragen können Fehler auftreten. Um diese Fehler effektiv behandeln zu können, ist es wichtig, die numerische Kodierung von Fehlermeldungen zu verstehen. Dieser Artikel führt Sie durch die Verwendung von PHP, um die numerische Kodierung von MySQL-Fehlermeldungen zu erhalten. Methode zum Erhalten der numerischen Kodierung von Fehlerinformationen 1. mysqli_errno() Die Funktion mysqli_errno() gibt die aktuellste Fehlernummer der aktuellen MySQL-Verbindung zurück. Die Syntax lautet wie folgt: $erro

PHP gibt ein Array mit umgedrehten Schlüsseln zurück PHP gibt ein Array mit umgedrehten Schlüsseln zurück Mar 21, 2024 pm 02:10 PM

In diesem Artikel wird ausführlich erläutert, wie PHP nach dem Umdrehen eines Schlüsselwerts ein Array zurückgibt. Der Herausgeber hält dies für recht praktisch, daher teile ich es Ihnen als Referenz mit. Ich hoffe, dass Sie nach dem Lesen dieses Artikels etwas gewinnen können. PHP-Schlüsselwert-Flip Der Array-Schlüsselwert-Flip ist eine Operation für ein Array, bei der die Schlüssel und Werte im Array ausgetauscht werden, um ein neues Array mit dem ursprünglichen Schlüssel als Wert und dem ursprünglichen Wert als Schlüssel zu generieren. Implementierungsmethode In PHP können Sie das Schlüsselwert-Umdrehen eines Arrays mit den folgenden Methoden durchführen: array_flip()-Funktion: Die array_flip()-Funktion wird speziell für Schlüsselwert-Umdrehungsvorgänge verwendet. Es erhält ein Array als Argument und gibt ein neues Array mit vertauschten Schlüsseln und Werten zurück. $original_array=[

See all articles