Reka bentuk dan amalan pembahagian pangkalan data mendatar: Aplikasi dalam pengaturcaraan PHP
Apabila jumlah data meningkat, cara mengurus dan mengoptimumkan pangkalan data dengan lebih baik telah menjadi kebimbangan setiap pembangun. Antaranya, pangkalan data sharding mendatar adalah kaedah pengoptimuman yang sangat biasa. Artikel ini akan memperkenalkan konsep, prinsip, reka bentuk dan amalan pembahagian pangkalan data mendatar, dan akan memberi tumpuan kepada cara menggunakan teknologi ini dalam pengaturcaraan PHP.
1. Konsep dan prinsip sharding mendatar
Sharding mendatar merujuk kepada penyebaran data jadual secara mendatar kepada beberapa jadual fizikal mengikut medan tertentu. Sebagai contoh, kami membahagikan jadual pengguna kepada berbilang jadual mengikut julat nilai ID pengguna, seperti pengguna_0, pengguna_1, pengguna_2, dsb. Pada masa ini, apabila menanyakan maklumat pengguna, anda perlu terlebih dahulu mengira nama jadual melalui ID, dan kemudian mencari data dalam jadual yang sepadan.
Fungsi utama sharding mendatar adalah untuk membahagikan jadual besar kepada jadual kecil untuk menyelesaikan masalah kecekapan pertanyaan rendah apabila jadual tunggal terlalu besar. Di samping itu, memandangkan data jadual berbeza disimpan secara berasingan, penggunaan teragih dan pemprosesan ketersediaan tinggi boleh dilakukan dengan mudah.
2. Reka bentuk sharding mendatar
Apabila mereka bentuk sharding mendatar, kita perlu mempertimbangkan isu berikut:
Jom selesaikan masalah ini satu persatu.
Pemilihan kunci sharding ialah kunci dalam reka bentuk sharding mendatar, yang secara langsung mempengaruhi kualiti kesan sharding. Biasanya, kami akan memilih kunci utama atau indeks unik jadual tertentu sebagai kunci sharding. Medan mana yang hendak dipilih sebagai kunci sharding perlu diputuskan berdasarkan keadaan perniagaan tertentu, contohnya, sharding berdasarkan ID pengguna, sharding berdasarkan status pesanan, dsb.
Selepas memilih medan serpihan, kita juga perlu mempertimbangkan kebutiran serpihan. Lebih halus butiran sharding, lebih kecil volum data satu jadual dan kecekapan pertanyaan akan dipertingkatkan dengan sewajarnya. Walau bagaimanapun, butiran sharding tidak boleh terlalu kecil, dan terlalu banyak jadual fizikal tidak kondusif untuk pengurusan dan penyelenggaraan pangkalan data.
Selepas sharding, kita perlu mempertimbangkan cara menyimpan data yang berbeza di bawah kunci shard yang sama dalam jadual fizikal yang berbeza, sambil memastikan ketekalan ini data. Terdapat dua kaedah pelaksanaan khusus:
(1) Pembahagian menegak: Letakkan medan yang berbeza dalam jadual yang berbeza Contohnya, maklumat asas pengguna dan maklumat pesanan disimpan dalam jadual yang berbeza. Kelebihan kaedah ini ialah tidak perlu mempertimbangkan isu cantuman jadual silang, dan ia juga mengelakkan masalah konsistensi data antara rekod jadual silang.
(2) Perpecahan mendatar: Sebarkan data jadual yang sama ke dalam beberapa jadual fizikal. Kelebihan kaedah ini ialah ia boleh menggunakan sepenuhnya sumber perkakasan sambil mengelakkan masalah volum data yang berlebihan dalam satu jadual. Walau bagaimanapun, pertanyaan silang jadual dan isu konsistensi data perlu dipertimbangkan, dan beberapa teknologi khas perlu digunakan untuk mengelakkan masalah ini.
Apabila membuat pertanyaan merentasi serpihan, kita perlu terlebih dahulu menentukan senarai serpihan yang terlibat dalam pertanyaan, dan kemudian antara serpihan ini Lakukan operasi pertanyaan. Jika syarat pertanyaan termasuk kunci shard, pertanyaan boleh diletakkan terus dalam jadual fizikal yang sepadan jika syarat pertanyaan tidak termasuk kunci shard, pertanyaan perlu dilakukan dalam semua serpihan, dan kemudian hasilnya akan digabungkan dan dikembalikan ke hujung pelanggan. Walaupun ini boleh menyelesaikan masalah pertanyaan merentas berbilang serpihan, ia memerlukan kos sumber dan kos masa yang lebih tinggi.
3. Gunakan PHP untuk melaksanakan sharding mendatar
Dalam aplikasi PHP, kita boleh melaksanakan sharding mendatar melalui rangka kerja seperti ShardingSphere dan Doctrine ORM. Di sini kami mengambil ShardingSphere sebagai contoh untuk memperkenalkan cara menggunakan rangka kerja ini untuk melaksanakan sharding mendatar.
ShardingSphere ialah perisian tengah pangkalan data teragih sumber terbuka kelas pertama di China, menyediakan dua versi: Java dan PHP. Pelaksanaan khusus adalah seperti berikut:
"require": {
" php": " ^7.2.5",
"sharding-sphere/sharding-proxy": "^5.3",
"sharding-sphere/sharding-core": "^5.3"
}
gunakan ShardingSphereShardingAutoConfiguration;
$parser = new ShardingSphereParserMySQLMySQLParser();
$executor ShardingSphereExecutorExecutorEngine baharu ();
$shardingConfig = new ShardingAutoConfiguration();
$shardingConfig->setDataSource($dataSource.$shardingConfig;$sharding;$sharding); ($ shardingRuleConfig); // Tetapkan peraturan sharding
>
Peraturan sharding khusus perlu dirumus berdasarkan senario perniagaan tertentu. Contohnya, untuk peraturan sharding ID pengguna, hasil pembahagian ID pengguna dengan 10 boleh digunakan sebagai kunci sharding, dan kemudian tersebar ke berbilang jadual fizikal berdasarkan hasilnya.
Pada ketika ini, kami telah menyelesaikan semua pelaksanaan kod untuk menggunakan ShardingSphere untuk melaksanakan sharding mendatar pangkalan data.
Ringkasan
Artikel ini memperkenalkan konsep, prinsip, reka bentuk dan amalan penggolongan mendatar pangkalan data dan memperkenalkan cara menggunakan rangka kerja ShardingSphere untuk melaksanakan pembahagian mendatar dalam pengaturcaraan PHP. Melalui sharding mendatar, kami boleh membahagikan jadual besar kepada jadual kecil, meningkatkan kecekapan pertanyaan dan memudahkan penggunaan teragih dan pemprosesan ketersediaan tinggi.
Atas ialah kandungan terperinci Reka bentuk dan amalan pembahagian pangkalan data mendatar: aplikasi dalam pengaturcaraan PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!