Rumah >pembangunan bahagian belakang >tutorial php >Amalan pengoptimuman sharding menegak dan sharding mendatar dalam pengaturcaraan PHP

Amalan pengoptimuman sharding menegak dan sharding mendatar dalam pengaturcaraan PHP

王林
王林asal
2023-06-22 21:35:101258semak imbas

Dengan perkembangan berterusan perniagaan Internet dan jumlah data yang semakin meningkat, satu pelayan pangkalan data tidak lagi dapat memenuhi keperluan perniagaan. Dalam kes ini, teknologi sharding mendatar dan menegak pangkalan data telah wujud. Artikel ini akan meneroka amalan pengoptimuman sharding menegak dan sharding mendatar dalam pengaturcaraan PHP.

1. Perkongsian Menegak

Perkongsian Menegak merujuk kepada penyebaran data dalam satu pangkalan data ke dalam pangkalan data yang berbeza berdasarkan logik perniagaan. Kelebihan sharding menegak ialah ia dapat mengurangkan bilangan rekod dalam jadual (pengumpulan) dan memendekkan masa pertanyaan data. Untuk senario perniagaan dengan lebih banyak membaca dan kurang menulis, sharding menegak boleh meningkatkan prestasi baca dan tulis serta kestabilan pangkalan data.

Dalam pengaturcaraan PHP, pelaksanaan sharding menegak memerlukan pengelasan data mengikut logik perniagaan. Sebagai contoh, tapak web e-dagang boleh menyimpan maklumat produk, maklumat pengguna dan maklumat pesanan dalam pangkalan data yang berbeza. Dalam kod PHP, anda boleh menyambung kepada berbilang pangkalan data melalui PDO, dan melakukan operasi penambahan, pemadaman, pengubahsuaian dan pertanyaan untuk pangkalan data yang berbeza.

Kod sampel:

$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. Sharding mendatar

Sharding Mendatar (Horizontal Sharding) merujuk kepada penyebaran data satu jadual (koleksi) ke dalam pangkalan data yang berbeza , yang sama data boleh diperuntukkan kepada pangkalan data yang berbeza. Kelebihan sharding mendatar ialah ia boleh menggunakan sepenuhnya prestasi pelbagai pelayan pangkalan data dan meningkatkan keupayaan membaca dan menulis serta kebolehpercayaan pangkalan data.

Dalam pengaturcaraan PHP, pelaksanaan sharding mendatar memerlukan data jadual dibahagikan kepada pangkalan data yang berbeza berdasarkan logik perniagaan. Sebagai contoh, jadual pesanan boleh dibahagikan mengikut ID pengguna, dan pesanan daripada pengguna yang berbeza boleh diperuntukkan kepada pangkalan data yang berbeza untuk pengurusan. Dalam kod PHP, data boleh dipecahkan melalui algoritma dan ditulis ke pangkalan data yang berbeza.

Kod contoh:

// 根据用户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. Aplikasi Komprehensif

Dalam pengaturcaraan PHP, aplikasi komprehensif bagi sharding menegak dan sharding mendatar boleh meningkatkan lagi prestasi dan kebolehpercayaan pangkalan data. . Sebagai contoh, tapak web e-dagang boleh menyimpan maklumat produk, maklumat pengguna dan maklumat pesanan dalam pangkalan data yang berbeza, dan menyebarkan jadual pesanan ke dalam pangkalan data yang berbeza berdasarkan ID pengguna. Dalam kod PHP, anda boleh menambah, memadam, mengubah suai dan menanyakan data bertaburan melalui berbilang sambungan PDO.

Kod contoh:

// 根据用户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 Ringkasan

Sharding menegak dan sharding mendatar ialah teknologi pengoptimuman pangkalan data yang biasa digunakan dalam perniagaan Internet, yang boleh meningkatkan prestasi baca dan tulis dengan berkesan. pangkalan data dan kebolehpercayaan. Dalam pengaturcaraan PHP, operasi penambahan, pemadaman, pengubahsuaian dan pertanyaan data bertaburan boleh direalisasikan melalui sambungan PDO berbilang, yang boleh meningkatkan lagi prestasi dan kebolehpercayaan sistem.

Atas ialah kandungan terperinci Amalan pengoptimuman sharding menegak dan sharding mendatar dalam pengaturcaraan PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn