Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
BERLAKU UNTUK: Azure Database for PostgreSQL - Server Fleksibel
Sharding adalah teknik yang digunakan dalam sistem database dan komputasi terdistribusi untuk mempartisi data secara horizontal di beberapa server atau simpul. Ini melibatkan pemecahan database besar atau himpunan data menjadi bagian yang lebih kecil dan lebih mudah dikelola yang disebut Shard. Shard berisi subset data, dan bersama-sama, shard membentuk himpunan data lengkap.
Kluster Elastis di Server Fleksibel Azure Database for PostgreSQL menawarkan dua jenis pemecahan data: berbasis baris dan berbasis skema. Setiap opsi dilengkapi dengan tradeoff sendiri, memungkinkan Anda memilih pendekatan yang paling sesuai dengan persyaratan aplikasi Anda.
Sharding berbasis baris
Tabel pecahan dalam model skema bersama database tunggal, juga dikenal sebagai sharding berbasis baris, penyewa berdampingan sebagai baris dalam tabel yang sama. Penyewa ditentukan dengan menentukan kolom distribusi, yang memungkinkan pemisahan tabel secara horizontal.
Sharding berbasis baris adalah metode yang paling efisien perangkat keras. Penyewa dikemas dan didistribusikan secara padat di antara simpul dalam kluster. Namun, pendekatan ini mengharuskan memastikan bahwa semua tabel dalam skema memiliki kolom distribusi dan bahwa semua kueri dalam filter aplikasi menurut kolom tersebut. Sharding berbasis baris bersinar dalam beban kerja IoT dan untuk mencapai margin terbaik dari penggunaan perangkat keras.
Keuntungan:
- Performa terbaik.
- Kepadatan penyewa terbaik per simpul.
Halangan-halangan:
- Memerlukan modifikasi skema.
- Memerlukan modifikasi kueri aplikasi.
- Mengharuskan semua penyewa harus berbagi skema yang sama.
Sharding berbasis skema
Sharding berbasis skema adalah database bersama, model skema terpisah, dan skema menjadi shard logis dalam database. Aplikasi multipenyewa dapat menggunakan skema per penyewa untuk dengan mudah memecah di sepanjang dimensi penyewa. Perubahan kueri tidak diperlukan, dan aplikasi hanya memerlukan modifikasi kecil untuk mengatur search_path yang tepat saat beralih penyewa. Sharding berbasis skema adalah solusi ideal untuk layanan mikro dan untuk ISV (Vendor Perangkat Lunak Independen) yang menyebarkan aplikasi yang tidak dapat menjalani perubahan yang diperlukan untuk pemecahan berbasis baris onboard.
Keuntungan:
- Penyewa dapat memiliki skema heterogen.
- Tidak diperlukan modifikasi skema.
- Tidak diperlukan modifikasi kueri aplikasi.
- Kompatibilitas SQL sharding berbasis skema lebih baik dibandingkan dengan sharding berbasis baris.
Halangan-halangan:
- Lebih sedikit penyewa per simpul dibandingkan dengan sharding berbasis baris.
Tradeoff sharding
Sharding berbasis skema | Sharding berbasis baris | |
---|---|---|
Model multipenyewa | Skema terpisah per penyewa | Tabel bersama dengan kolom ID penyewa |
Versi Citus | 12.0+ | Semua versi |
Langkah tambahan dibandingkan dengan vanilla PostgreSQL | Tidak ada, hanya perubahan konfigurasi | Gunakan create_distributed_table pada setiap tabel untuk mendistribusikan & mengalokasikan tabel menurut ID penyewa |
Jumlah penyewa | 1-10k | 1-1 M+ |
Persyaratan pemodelan data | Tidak ada kunci asing di seluruh skema terdistribusi | Perlu menyertakan kolom ID penyewa (kolom distribusi, juga dikenal sebagai kunci sharding) di setiap tabel, dan di kunci primer, kunci asing |
Persyaratan SQL untuk kueri simpul tunggal | Menggunakan skema terdistribusi tunggal per kueri | Klausa Gabungan dan WHERE harus menyertakan kolom tenant_id |
Kueri lintas penyewa paralel | Tidak | Ya |
Definisi tabel kustom per penyewa | Ya | Tidak |
Kontrol akses | Izin skema | Izin skema |
Berbagi data di seluruh penyewa | Ya, menggunakan tabel referensi (dalam skema terpisah) | Ya, menggunakan tabel referensi |
Penyewa ke isolasi shard | Setiap penyewa memiliki grup shard sendiri menurut definisi | Dapat memberikan ID penyewa tertentu grup shard mereka sendiri melalui isolate_tenant_to_new_shard |
Konten terkait
- Gambaran Umum Kluster Elastis.
- Jenis tabel pada Kluster Elastis di Azure Database for PostgreSQL - Server Fleksibel.
- Tanya jawab umum tentang Kluster Elastis dengan batasan Azure Database for PostgreSQL.