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

Jun 22, 2023 pm 09:35 PM
pengaturcaraan php serpihan menegak serpihan mendatar

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");
Salin selepas log masuk

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");
}
Salin selepas log masuk

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)");
}
Salin selepas log masuk

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 Laman Web ini
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

Tag artikel panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Baris format PHP ke CSV dan tulis penuding fail Baris format PHP ke CSV dan tulis penuding fail Mar 22, 2024 am 09:00 AM

Baris format PHP ke CSV dan tulis penuding fail

PHP menukar umask semasa PHP menukar umask semasa Mar 22, 2024 am 08:41 AM

PHP menukar umask semasa

PHP mencipta fail dengan nama fail yang unik PHP mencipta fail dengan nama fail yang unik Mar 21, 2024 am 11:22 AM

PHP mencipta fail dengan nama fail yang unik

PHP mengira cincangan fail MD5 PHP mengira cincangan fail MD5 Mar 21, 2024 pm 01:42 PM

PHP mengira cincangan fail MD5

PHP mengembalikan tatasusunan dengan nilai kunci dibalikkan PHP mengembalikan tatasusunan dengan nilai kunci dibalikkan Mar 21, 2024 pm 02:10 PM

PHP mengembalikan tatasusunan dengan nilai kunci dibalikkan

PHP mencipta pautan simbolik PHP mencipta pautan simbolik Mar 21, 2024 am 10:21 AM

PHP mencipta pautan simbolik

PHP memotong fail kepada panjang tertentu PHP memotong fail kepada panjang tertentu Mar 21, 2024 am 11:42 AM

PHP memotong fail kepada panjang tertentu

PHP mengembalikan pengekodan berangka mesej ralat dalam operasi MySQL sebelumnya PHP mengembalikan pengekodan berangka mesej ralat dalam operasi MySQL sebelumnya Mar 22, 2024 pm 12:31 PM

PHP mengembalikan pengekodan berangka mesej ralat dalam operasi MySQL sebelumnya

See all articles