Bagikan melalui


Model sharding pada Kluster Elastis di Azure Database for PostgreSQL - Server Fleksibel

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