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.
Sebelum kami menyelidiki langkah-langkah membangun aplikasi baru, ada baiknya untuk melihat gambaran umum singkat tentang istilah dan konsep yang terlibat.
Ikhtisar arsitektur
Azure Cosmos DB for PostgreSQL memberi Anda kekuatan untuk mendistribusikan tabel dan/atau skema di beberapa komputer dalam kluster dan secara transparan mengkuerinya sama dengan yang Anda kueri postgreSQL biasa:
Dalam arsitektur Azure Cosmos DB for PostgreSQL, ada beberapa jenis simpul:
- Node koordinator menyimpan metadata tabel terdistribusi dan bertanggung jawab atas perencanaan terdistribusi.
- Sebaliknya, simpul pekerja menyimpan data aktual, metadata, dan melakukan komputasi.
- Baik koordinator maupun pekerja adalah database PostgreSQL standar, dengan ekstensi
citusdiaktifkan.
Untuk mendistribusikan tabel PostgreSQL normal, seperti campaigns pada diagram di atas, jalankan perintah yang disebut create_distributed_table(). Setelah Anda menjalankan perintah ini, Azure Cosmos DB untuk PostgreSQL secara transparan membuat partisi untuk tabel pada simpul-simpul pekerja. Dalam diagram, pecahan direpresentasikan sebagai kotak biru.
Untuk mendistribusikan skema PostgreSQL normal, Anda menjalankan citus_schema_distribute() perintah . Setelah Anda menjalankan perintah ini, Azure Cosmos DB untuk PostgreSQL secara transparan mengubah tabel dalam skema tersebut menjadi satu tabel yang dikolokasikan sebagai shard (pecahan) yang dapat dipindahkan sebagai unit antara node dalam kluster.
Catatan
Pada kluster tanpa simpul pekerja, pecahan tabel terdistribusi ada di simpul koordinator.
Shard adalah tabel PostgreSQL biasa (tetapi diberi nama khusus) yang menyimpan irisan data Anda. Dalam contoh kami, karena kami mendistribusikan campaigns oleh company_id, shard mengadakan kampanye, di mana kampanye dari perusahaan yang berbeda ditugaskan ke shard yang berbeda.
Kolom distribusi (juga dikenal sebagai kunci pecahan)
create_distributed_table() adalah fungsi ajaib yang disediakan Azure Cosmos DB for PostgreSQL untuk mendistribusikan tabel dan menggunakan sumber daya di beberapa komputer.
SELECT create_distributed_table(
'table_name',
'distribution_column');
Argumen kedua di atas mengambil kolom dari tabel sebagai kolom distribusi. Ini bisa berupa kolom apa saja dengan jenis PostgreSQL asli (dengan bilangan bulat dan teks yang paling umum). Nilai kolom distribusi menentukan baris mana yang masuk ke pecahan mana, itulah sebabnya kolom distribusi juga disebut kunci shard.
Azure Cosmos DB for PostgreSQL memutuskan cara menjalankan kueri berdasarkan penggunaan kunci shard:
| Kueri mencakup | Tempat berjalannya |
|---|---|
| hanya satu kunci pecahan | pada node pekerja yang memegang shardnya |
| beberapa kunci pembagi | diproses secara paralel di beberapa node |
Pilihan kunci shard menentukan performa dan skalabilitas aplikasi Anda.
- Distribusi data yang tidak merata per kunci shard (juga dikenal sebagai kecondongan data) tidak optimal untuk performa. Misalnya, jangan pilih kolom yang nilai tunggalnya mewakili 50% data.
- Kunci shard dengan kardinalitas rendah dapat memengaruhi skalabilitas. Anda hanya dapat menggunakan shard sebanyak jumlah nilai kunci yang berbeda. Pilih kunci dengan kardinalitas ratusan hingga ribuan.
- Menggabungkan dua tabel besar yang memiliki kunci shard berbeda bisa menjadi lambat. Pilih kunci pecahan umum untuk tabel-tabel besar. Pelajari lebih lanjut dalam kolokasi.
Kolokasi
Konsep lain yang terkait erat dengan kunci shard adalah kolokasi. Tabel yang dipecah berdasarkan nilai kolom distribusi yang sama ditempatkan pada lokasi yang sama - Pecahan tabel yang ditempatkan bersama ini disimpan pada node yang sama.
Di bawah ini adalah dua tabel yang dipecah dengan kunci yang sama, site_id. Mereka dikolokasi.
Azure Cosmos DB for PostgreSQL memastikan bahwa baris dengan nilai site_id yang cocok di kedua tabel disimpan di node pekerja yang sama. Anda dapat melihat bahwa, untuk kedua tabel, baris dengan site_id=1 disimpan di worker 1. Demikian pula untuk ID situs lainnya.
Kolokasi membantu mengoptimalkan JOIN antara tabel-tabel ini. Jika Anda menggabungkan dua tabel di site_id, Azure Cosmos DB for PostgreSQL dapat melakukan gabungan secara lokal pada simpul pekerja tanpa perlu memindahkan data antar simpul.
Tabel dalam skema terdistribusi selalu dikolokasikan satu sama lain.