Maison >développement back-end >tutoriel php >Pratique d'optimisation du partitionnement vertical et du partitionnement horizontal dans la programmation PHP

Pratique d'optimisation du partitionnement vertical et du partitionnement horizontal dans la programmation PHP

王林
王林original
2023-06-22 21:35:101237parcourir

Avec le développement continu du commerce Internet et la quantité croissante de données, un seul serveur de base de données ne peut plus répondre aux besoins des entreprises. Dans ce cas, la technologie de partitionnement horizontal et de partitionnement vertical de la base de données a vu le jour. Cet article explorera les pratiques d'optimisation du partitionnement vertical et du partitionnement horizontal dans la programmation PHP.

1. Partage vertical

Partage vertical (Partage vertical) fait référence à la dispersion des données d'une seule base de données dans différentes bases de données basées sur la logique métier. L'avantage du partitionnement vertical est qu'il peut réduire le nombre d'enregistrements dans la table (collection) et raccourcir le temps d'interrogation des données. Pour les scénarios métier avec plus de lectures et moins d'écritures, le partitionnement vertical peut améliorer les performances de lecture et d'écriture et la stabilité de la base de données.

En programmation PHP, la mise en œuvre du sharding vertical nécessite de classer les données selon la logique métier. Par exemple, un site Web de commerce électronique peut stocker des informations sur les produits, les informations sur les utilisateurs et les informations sur les commandes dans différentes bases de données. Dans le code PHP, vous pouvez vous connecter à plusieurs bases de données via PDO et effectuer des opérations d'ajout, de suppression, de modification et de requête pour différentes bases de données.

Exemple de code :

$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");

2. Partage horizontal

Partage horizontal (Partage horizontal) fait référence aux données d'une seule table (collection) Dispersées dans différentes bases de données, les mêmes données peuvent être distribuées dans différentes bases de données. L'avantage du partitionnement horizontal est qu'il peut exploiter pleinement les performances de plusieurs serveurs de bases de données et améliorer les capacités de lecture et d'écriture ainsi que la fiabilité de la base de données.

En programmation PHP, la mise en œuvre du partitionnement horizontal nécessite de diviser les données des tables en différentes bases de données basées sur la logique métier. Par exemple, le tableau des commandes peut être divisé en fonction des ID utilisateur, et les commandes de différents utilisateurs peuvent être attribuées à différentes bases de données pour la gestion. Dans le code PHP, les données peuvent être partagées via des algorithmes et écrites dans différentes bases de données.

Exemple de code :

// 根据用户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");
}

3. Application complète

Dans la programmation PHP, l'application complète du partage vertical et du partage horizontal peut être encore améliorée. performances et fiabilité. Par exemple, un site Web de commerce électronique peut stocker des informations sur les produits, les informations sur les utilisateurs et les informations sur les commandes dans différentes bases de données, et disperser les tableaux de commande dans différentes bases de données en fonction des identifiants des utilisateurs. Dans le code PHP, vous pouvez ajouter, supprimer, modifier et interroger des données dispersées via plusieurs connexions PDO.

Exemple de code :

// 根据用户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)");
}

4. Résumé

Le partitionnement vertical et le partitionnement horizontal sont des technologies d'optimisation de bases de données couramment utilisées dans les entreprises Internet, qui peuvent être efficaces Améliorez les performances de lecture et d’écriture et la fiabilité de la base de données. Dans la programmation PHP, les opérations d'ajout, de suppression, de modification et d'interrogation de données dispersées peuvent être réalisées via plusieurs connexions PDO, ce qui peut encore améliorer les performances et la fiabilité du système.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn