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.
Penting
Azure Cosmos DB for PostgreSQL tidak lagi didukung untuk proyek baru. Jangan gunakan layanan ini untuk proyek baru. Sebagai gantinya, gunakan salah satu dari dua layanan ini:
Gunakan Azure Cosmos DB for NoSQL untuk solusi database terdistribusi yang dirancang untuk skenario skala tinggi dengan perjanjian tingkat layanan ketersediaan (SLA) 99,999%, skala otomatis instan, dan failover otomatis di beberapa wilayah.
Gunakan fitur Elastic Clusters dari Azure Database For PostgreSQL untuk PostgreSQL yang dipecah menggunakan ekstensi Citus sumber terbuka.
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.
Azure Cosmos DB for PostgreSQL menawarkan dua jenis pemecahan data, yaitu berbasis baris dan berbasis skema. Setiap opsi dilengkapi dengan tradeoff Sharding sendiri, memungkinkan Anda memilih pendekatan yang paling sesuai dengan kebutuhan aplikasi Anda.
Sharding berbasis baris
Cara tradisional di mana Azure Cosmos DB untuk PostgreSQL memecah tabel adalah melalui model skema bersama dalam satu database yang juga dikenal sebagai sharding berbasis baris, di mana penyewa berbagi tempat sebagai baris dalam tabel yang sama. Penyewa ditentukan dengan menentukan kolom distribusi kolom distribusi, yang memungkinkan pemisahan tabel secara horizontal.
Sharding berbasis baris merupakan cara yang paling efisien untuk perangkat keras. Penyewa ditempatkan secara padat dan didistribusikan di antara simpul-simpul dalam kluster. Namun, pendekatan ini mengharuskan memastikan bahwa semua tabel dalam skema memiliki kolom distribusi dan bahwa semua kueri dalam aplikasi memfilter berdasarkan 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 perubahan kueri aplikasi
- Semua penyewa harus berbagi skema yang sama
Sharding berbasis skema
Tersedia dengan Citus 12.0 di Azure Cosmos DB for PostgreSQL, sharding berbasis skema adalah database bersama, model skema terpisah, skema menjadi pecahan 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 serta bagi Vendor Perangkat Lunak Independen (ISV) yang menerapkan aplikasi yang tidak dapat menjalani perubahan yang diperlukan untuk menggunakan pemecahan berbasis baris.
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 untuk setiap penyewa | Tabel-tabel yang dibagikan dengan kolom ID penyewa di dalamnya |
| 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-10 ribu | 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 pemartisian) di setiap tabel serta dalam kunci primer dan kunci asing. |
| Persyaratan SQL untuk kueri simpul tunggal | Menggunakan skema terdistribusi tunggal per kueri | Klausa JOIN dan WHERE harus menyertakan kolom tenant_id |
| Permintaan paralel antar penyewa | Tidak | Ya |
| Definisi tabel kustom per pengguna | 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 | Menurut definisi, setiap penyewa memiliki grup shard-nya sendiri. | Dapat memberikan ID penyewa tertentu grup shard mereka sendiri dengan memisahkan penyewa ke shard baru. |