Heim > Backend-Entwicklung > PHP-Tutorial > Optimierungspraxis für vertikales Sharding und horizontales Sharding in der PHP-Programmierung

Optimierungspraxis für vertikales Sharding und horizontales Sharding in der PHP-Programmierung

王林
Freigeben: 2023-06-22 21:38:01
Original
1254 Leute haben es durchsucht

Mit der kontinuierlichen Entwicklung des Internetgeschäfts und der zunehmenden Datenmenge kann ein einzelner Datenbankserver die Geschäftsanforderungen nicht mehr erfüllen. In diesem Fall entstand die horizontale Sharding- und vertikale Sharding-Technologie der Datenbank. In diesem Artikel werden die Optimierungspraktiken des vertikalen und horizontalen Shardings in der PHP-Programmierung untersucht.

1. Vertikales Sharding

Vertikales Sharding (vertikales Sharding) bezieht sich auf die Aufteilung von Daten in einer einzelnen Datenbank auf verschiedene Datenbanken basierend auf der Geschäftslogik. Der Vorteil des vertikalen Sharding besteht darin, dass es die Anzahl der Datensätze in der Tabelle (Sammlung) reduzieren und die Zeit für die Datenabfrage verkürzen kann. Für Geschäftsszenarien mit mehr Lesevorgängen und weniger Schreibvorgängen kann vertikales Sharding die Lese- und Schreibleistung und Stabilität der Datenbank verbessern.

Bei der PHP-Programmierung erfordert die Implementierung von Vertical Sharding die Klassifizierung von Daten gemäß der Geschäftslogik. Beispielsweise kann eine E-Commerce-Website Produktinformationen, Benutzerinformationen und Bestellinformationen in verschiedenen Datenbanken speichern. Im PHP-Code können Sie über PDO eine Verbindung zu mehreren Datenbanken herstellen und Hinzufügungs-, Lösch-, Änderungs- und Abfragevorgänge für verschiedene Datenbanken durchführen.

Beispielcode:

$pdo1 = new PDO("mysql:host=localhost;dbname=db1", "user", "password");
$pdo2 = new PDO("mysql:host=localhost;dbname=db2", "user", "password");
$pdo3 = new PDO("mysql:host=localhost;dbname=db3", "user", "password");

// 查询商品信息
$pdo1->query("SELECT * FROM products");

// 添加用户信息
$pdo2->query("INSERT INTO users(name, age) VALUES('Tom', 18)");

// 查询订单信息
$pdo3->query("SELECT * FROM orders");
Nach dem Login kopieren

2. Horizontales Sharding

Horizontales Sharding (horizontales Sharding) bezieht sich auf die Verteilung der Daten einer einzelnen Tabelle (Sammlung) auf verschiedene Datenbanken. Dieselben Daten können verschiedenen Datenbanken zugeordnet werden. Der Vorteil des horizontalen Shardings besteht darin, dass die Leistung mehrerer Datenbankserver voll ausgenutzt werden kann und die Lese- und Schreibfähigkeiten sowie die Zuverlässigkeit der Datenbank verbessert werden.

Bei der PHP-Programmierung erfordert die Implementierung von horizontalem Sharding die Aufteilung von Tabellendaten in verschiedene Datenbanken basierend auf der Geschäftslogik. Beispielsweise kann die Bestelltabelle nach Benutzer-IDs unterteilt werden und Bestellungen verschiedener Benutzer können zur Verwaltung unterschiedlichen Datenbanken zugeordnet werden. Im PHP-Code können Daten durch Algorithmen fragmentiert und in verschiedene Datenbanken geschrieben werden.

Beispielcode:

// 根据用户ID计算数据库编号
function getDbIndex($userId, $dbCount) {
    return $userId % $dbCount;
}

// 获取数据库连接
function getPdo($userId) {
    $dbCount = 3; // 数据库数量
    $dbIndex = getDbIndex($userId, $dbCount);
    $dsn = "mysql:host=localhost;dbname=db" . ($dbIndex + 1);
    return new PDO($dsn, "user", "password");
}

// 添加订单信息
function addOrder($userId, $product, $price) {
    $pdo = getPdo($userId);
    $pdo->query("INSERT INTO orders(user_id, product, price) VALUES($userId, '$product', $price)");
}

// 查询订单信息
function queryOrder($userId) {
    $pdo = getPdo($userId);
    $pdo->query("SELECT * FROM orders WHERE user_id=$userId");
}
Nach dem Login kopieren

3. Umfassende Anwendung

In der PHP-Programmierung kann die umfassende Anwendung von vertikalem Sharding und horizontalem Sharding die Leistung und Zuverlässigkeit der Datenbank weiter verbessern. Beispielsweise kann eine E-Commerce-Website Produktinformationen, Benutzerinformationen und Bestellinformationen in verschiedenen Datenbanken speichern und Bestelltabellen basierend auf Benutzer-IDs in verschiedene Datenbanken verteilen. Im PHP-Code können Sie verstreute Daten über mehrere PDO-Verbindungen hinzufügen, löschen, ändern und abfragen.

Beispielcode:

// 根据用户ID查询订单信息
function queryOrder($userId) {
    $pdo1 = new PDO("mysql:host=localhost;dbname=db1", "user", "password");
    $pdo2 = new PDO("mysql:host=localhost;dbname=db2", "user", "password");
    $pdo3 = new PDO("mysql:host=localhost;dbname=db3", "user", "password");

    // 查询商品信息
    $pdo1->query("SELECT * FROM products");

    // 查询用户信息
    $pdo2->query("SELECT * FROM users WHERE id=$userId");

    // 根据用户ID查询订单信息
    $pdo3->query("SELECT * FROM orders WHERE user_id=$userId");
}

// 添加订单信息
function addOrder($userId, $product, $price) {
    $dbCount = 3; // 数据库数量
    $dbIndex = getDbIndex($userId, $dbCount);
    $dsn = "mysql:host=localhost;dbname=db" . ($dbIndex + 1);
    $pdo = new PDO($dsn, "user", "password");
    $pdo->query("INSERT INTO orders(user_id, product, price) VALUES($userId, '$product', $price)");
}
Nach dem Login kopieren

Zusammenfassung

Vertikales Sharding und horizontales Sharding sind häufig verwendete Datenbankoptimierungstechnologien in Internetunternehmen, die die Lese- und Schreibleistung und Zuverlässigkeit der Datenbank effektiv verbessern können. Bei der PHP-Programmierung können das Hinzufügen, Löschen, Ändern und Abfragen verstreuter Daten über mehrere PDO-Verbindungen realisiert werden, wodurch die Leistung und Zuverlässigkeit des Systems weiter verbessert werden kann.

Das obige ist der detaillierte Inhalt vonOptimierungspraxis für vertikales Sharding und horizontales Sharding in der PHP-Programmierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage