Topik ini menjelaskan prasyarat, latar belakang, mekanisme, prosedur, serta pertanyaan umum (FAQ) terkait fitur konsistensi global.
Ikhtisar
dan PolarDB for PostgreSQL (Compatible with Oracle) menyediakan fitur konsistensi global pada tingkat kernel database yang memastikan permintaan baca yang dikirim ke node mana pun dalam kluster mengembalikan hasil yang konsisten secara kuat.
Edisi kompatibel Oracle
PolarDB for PostgreSQL (Compatible with Oracle) mendukung fitur ini pada Oracle syntax compatibility 2.0 dengan versi mesin minor 2.0.14.22.0 atau lebih baru.
Anda dapat melihat versi mesin minor di Konsol atau dengan menjalankan pernyataan SHOW polardb_version;. Jika versi mesin minor kluster Anda tidak memenuhi persyaratan, upgrade versi mesin minor.
Latar Belakang
Pada arsitektur asli PolarDB satu writer-multi reader, node read-only secara default menyediakan konsistensi sesi. Meskipun replikasi fisik dan penyimpanan bersama dapat secara efektif mengurangi lag replikasi pada node read-only, keduanya tidak dapat menjamin bahwa permintaan baca akan mengambil data terbaru yang ditulis ke node read-write. Di industri yang sensitif terhadap latensi seperti keuangan dan gaming, lag baca ini dapat menyebabkan inkonsistensi logika bisnis.
Seperti yang ditunjukkan pada gambar, aplikasi bisnis sering kali didekopel menggunakan framework layanan mikro. Setelah Layanan A menulis data, ia mengirim pesan sukses tulis ke Layanan B melalui antrian pesan. Dalam skenario konsistensi sesi, jika Layanan A segera membaca data tersebut dalam sesi yang sama setelah memperbarui col menjadi 20, ia menerima hasil terbaru yaitu 20, bahkan jika permintaan diarahkan ke node read-only. Namun, setelah menerima notifikasi pembaruan, jika Layanan B membaca langsung dari node read-only, ia mungkin masih mengambil nilai lama yaitu 10. Skenario ini dapat menyebabkan masalah konsistensi data bagi aplikasi. Untuk memastikan konsistensi baca-setelah-tulis, aplikasi harus mengarahkan permintaan baca ke node read-write, sehingga sumber daya node read-only menjadi menganggur.
Cara Kerja
dan PolarDB for PostgreSQL (Compatible with Oracle) menyediakan kemampuan baca konsistensi kuat untuk node read-only pada tingkat kernel database, yang memastikan node read-only selalu melihat data terbaru yang ditulis ke node read-write. Kemampuan ini memberikan konsistensi kuat di seluruh kluster untuk operasi baca. Saat konsistensi global diaktifkan, setiap transaksi read-write yang dikomit pada node read-write diberi nomor urutan komitmen (CSN). CSN merepresentasikan urutan komitmen transaksi dan digunakan untuk membangun snapshot transaksi yang lebih efisien, menggantikan daftar transaksi aktif PostgreSQL asli. Node read-write mencatat CSN dalam write-ahead log (WAL), dan node read-only memutar ulang WAL untuk membangun status transaksi lengkap.
Langkah-langkah berikut menjelaskan proses eksekusi SQL untuk baca konsistensi kuat pada node RO:
-
Klien mengirim permintaan kueri ke node read-only.
-
Node read-only mengambil CSN terbaru dari node read-write melalui jaringan.
-
Node read-only menggunakan CSN terbaru dari node read-write untuk membangun tampilan baca konsistensi kuat dan menunggu status transaksinya diputar ulang hingga titik tersebut.
-
Node read-only menentukan visibilitas data berdasarkan tampilan ini dan mengembalikan hasilnya ke klien.
Prosedur
-
Masuk ke PolarDB console. Di panel navigasi kiri, klik Clusters. Pilih region tempat kluster Anda berada, lalu klik ID kluster tersebut.
-
Di panel navigasi kiri, pilih . Atur parameter
polar_csn_enabledanpolar_global_csn_enablemenjadionuntuk mengaktifkan fitur CSN transaksi.CatatanModifikasi parameter ini memerlukan restart kluster agar berlaku. Rencanakan sesuai kebutuhan. Untuk informasi lebih lanjut tentang cara mengatur parameter kluster di Konsol, lihat Set cluster parameters.
-
Di halaman Basic Information, pada bagian Database Connections, klik Configure di samping Cluster Endpoint (Recommended), atau klik Modify pada kotak dialog yang muncul.
-
Di halaman Edit Endpoint, atur tingkat konsistensi menjadi Global Consistency (Strong) dan konfigurasikan dua parameter terkait berikut:
Parameter
Description
Global Consistency Timeout
Waktu maksimum, dalam milidetik, yang ditunggu oleh node read-only untuk menyinkronkan dengan node primary. Nilai valid: 1 hingga 1.000.000. Default: 100.
Global Consistency Timeout Policy
Aksi yang diambil saat node read-only mengalami timeout. Nilai valid:
-
Send Requests to Primary Node (Default)
-
Return Error Messages Due to Timeout
-
Automatic Downgrade to Inconsistent Read Due to Timeout
-