Reka bentuk dan amalan pembahagian pangkalan data mendatar: aplikasi dalam pengaturcaraan PHP

WBOY
Lepaskan: 2023-06-23 11:28:01
asal
1661 orang telah melayarinya

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:

  1. Medan mana yang harus digunakan sebagai medan sharding.
  2. Kebutiran serpihan.
  3. Cara mengekalkan konsistensi data yang dipecahkan.
  4. Cara mengendalikan isu pertanyaan silang serpihan.

Jom selesaikan masalah ini satu persatu.

  1. Pemilihan kunci sharding

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.

  1. Kebutiran serpihan

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.

  1. Ketekalan data yang dipecahkan

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.

  1. Pengendalian isu pertanyaan rentas serpihan

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:

  1. Pertama, kita perlu menambah kebergantungan ShardingSphere dalam fail konfigurasi composer.json:

"require": {
" php": " ^7.2.5",
"sharding-sphere/sharding-proxy": "^5.3",
"sharding-sphere/sharding-core": "^5.3"
}

  1. Kemudian, logik permulaan ShardingSphere perlu ditambahkan pada kod PHP. Mengambil MySQL sebagai contoh, kita perlu menambah kandungan berikut pada kod permulaan:

gunakan ShardingSphereShardingAutoConfiguration;

$parser = new ShardingSphereParserMySQLMySQLParser();
$executor ShardingSphereExecutorExecutorEngine baharu ();

$shardingConfig = new ShardingAutoConfiguration();

$shardingConfig->setDataSource($dataSource.$shardingConfig;$sharding;$sharding); ($ shardingRuleConfig); // Tetapkan peraturan sharding

$config = ShardingSphereProxyCommandLineConfig();

$instance = ShardingSphereProxyShardingInstanceLoader($parser, $executor);

>

  1. Akhir sekali, kita perlu menulis peraturan sharding yang sepadan berdasarkan keadaan perniagaan tertentu.

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!

Label berkaitan:
sumber:php.cn
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!