Review Performa dan Keamanan PostgreSQL 14
PostgreSQL terus membuat kemajuan di bidang tipe data yang kompleks, termasuk akses JSON yang lebih mudah diakses dan dukungan untuk rentang data yang tidak berdekatan. Dengan kemajuan dalam konkurensi koneksi, beban kerja penulisan tinggi, paralelisme kueri dan replikasi logis, versi terbaru ini melanjutkan sejarah PostgreSQL dalam meningkatkan kinerja tinggi dan beban kerja data terdistribusi .
Magnus Hagander, anggota tim inti PostgreSQL, menyatakan bahwa “Rilis terbaru PostgreSQL meningkatkan kapasitas pengguna kami untuk menangani beban kerja data dalam skala besar, meningkatkan observabilitas, dan menyertakan kemampuan baru yang menguntungkan pengembang aplikasi. PostgreSQL 14 menunjukkan komitmen komunitas PostgreSQL global untuk menyelesaikan kritik dan terus mengembangkan perangkat lunak basis data inovatif yang digunakan oleh perusahaan besar dan kecil”.
Performa PostgreSQL 14
Sebuah bisnis atau proyek yang besar biasanya akan membutuhkan database yang besar. Maka, sangat masuk akal jika performa database dapat ditingkatkan untuk mengakomodasi beban kerja kelas enterprise. Database ini meningkatkan beberapa hal seperti, mengendalikan lebih banyak konektivitas yang berjalan bersamaan dan juga penambahan power di fitur parallel query.
PostgreSQL 14 memberikan peningkatan performa yang cukup besar pada workload yang membutuhkan koneksi dalam jumlah besar dalam benchmark 2x lebih cepat.
PostgreSQL versi terbaru ini juga memperkenalkan fitur untuk menyalurkan query ke database, yang secara signifikan dapat meningkatkan performanya melalui koneksi latensi tinggi atau untuk workload dengan banyak operasi kecil seperti (INSERT/UPDATE/DELETE). Karena ini adalah fitur sisi klien dapat menggunakan mode pipeline dengan database PostgreSQL modern apa pun dengan klien versi 14 atau driver klien yang dibuat dengan libpq versi 14.
Libpq PostgreSQL memungkinkan klien untuk mengirim beberapa transaksi di waktu bersamaan. Hal ini mendorong performa PostgreSQL sehingga dapat bekerja lebih baik. Terlebih lagi karena ini adalah fitur sisi klien, libpq PostgreSQL 14 bahkan dapat digunakan dengan versi server PostgreSQL yang terdahulu.
Selain itu, TOAST, sebuah sistem yang dirancang untuk menyimpan data dalam jumlah besar secara efektif, kini memiliki dukungan kompresi LZ4 di PostgreSQL 14. LZ4 adalah metode kompresi lossless yang memprioritaskan kinerja kompresi dan dekompresi dan LZ4 dapat diatur pada bagian kolom sekaligus sistem.
Sebelum ini, satu-satunya pilihan adalah kompresi pglz, yang cepat tetapi memiliki rasio kompresi yang rendah.
Peningkatan Visibilitas
Blok perubahan terbesar berikutnya berkaitan dengan mendapatkan visibilitas pada proses yang berjalan. Berikut daftar semua hal yang tidak dapat dilihat sebelumnya, tetapi dapat melihatnya sekarang.
- Status operasi SALIN di pg_stat_progress_copy.
- Status log tulis di depan ada di pg_stat_wal.
- Status replikasi sekarang ada di pg_stat_replication_slots.
- Status penanganan kueri backend ada di pg_backend_memory_contexts, yang juga dapat dipaksa ke dalam log menggunakan pg_log_backend_memory_contexts.
- Kolom baru di pg_stat_database.
- Menambahkan pengarsip ke pg_stat_activity.
- Menambahkan kunci waktu tunggu mulai ke pg_locks.
- Menambahkan tampilan di information_schema yang disebut routine_column_usage untuk melacak kolom yang direferensikan oleh ekspresi default fungsi dan prosedur.
- Menambahkan % P ke log_line_prefix untuk melihat PID pemimpin grup.
- Menambahkan parameter server log_recovery_conflict_wais untuk melaporkan waktu tunggu konflik pemulihan yang lama.
- Menambahkan fungsi pg_get_wal_replay_pause_state() untuk melaporkan status pemulihan.
- Menambahkan fungsi pg_xact_commit_timestamp_origin() untuk mengembalikan stempel waktu komit dan asal replikasi dari transaksi yang ditentukan.
- Menambahkan asal replikasi ke catatan yang dikembalikan oleh pg_last_committed_xact()
- pg_stat_statements melacak pernyataan teratas dan bersarang secara terpisah.
- Menambahkan flag –verbose (-vvv) kumulatif ke beberapa utilitas untuk pencatatan layar.
Keamanan PostgreSQL 14
pg_read_all_data dan pg_write_all_data yang telah ditentukan sebelumnya di PostgreSQL 14 membuat database ini mudah untuk menyediakan akses read-only dan write-only kepada pengguna pada table, schema dan views.
Otentikasi SCRAM-SHA-256 diperkenalkan di PostgreSQL 10 dan saat ini merupakan metode otentikasi default di PostgreSQL 14.
Otentikasi MD5 default yang terdahulu memiliki berbagai kelemahan yang bisa membuat data yang tersimpan di dalam database kurang terjamin keamanannya.
Setelah melalui beberapa update, SCRAM menjadi jauh lebih kuat, dan memfasilitasi peraturan yang cukup ketat untuk keamanan data yang disimpan di PostgreSQL 14.
Observabilitas PostgreSQL 14
Salah satu perubahan paling signifikan dalam PostgreSQL 14 adalah relokasi sistem hash query dari pg_stat_statement ke database inti. Ini memungkinkan pemantauan query di beberapa penginstallan PostgreSQL dan fungsi logging menggunakan satu ID.
Versi ini juga menyertakan fungsionalitas tambahan untuk melacak informasi COPY, aktivitas WAL (write-ahead-log), dan statistik slot replikasi.
Selain itu, di versi ini, mengaktifkan compute_query_id memungkinkan untuk melacak query secara unik melalui beberapa fitur, termasuk pg_stat_activity, EXPLAIN VERBOSE, dan banyak lagi.
Fitur PostgreSQL 14
PostgreSQL 14 memperkenalkan sejumlah fitur dan peningkatan baru, termasuk yang berikut :
- Parameter OUT sekarang dapat digunakan untuk mengembalikan data dari prosedur tersimpan.
- Untuk ekspresi tabel umum, opsi SEARCH dan CYCLE standar SQL telah diterapkan.
- Berlangganan sekarang dapat digunakan dengan tipe data apa pun yang notasinya berguna, tidak hanya array.
- Operator berlangganan telah ditambahkan ke jenis jsonb dan hstore dalam rilis ini.
- Multirentang telah ditambahkan ke jenis rentang, memungkinkan representasi rentang data yang tidak bersebelahan.
- Kueri paralel, beban kerja yang sangat bersamaan, basis data yang dipartisi, replikasi logis, dan penyedot debu, semuanya mengalami peningkatan kinerja yang signifikan.
- Pembaruan pada indeks B-tree dikelola dengan lebih efisien, menghasilkan lebih sedikit indeks yang membengkak.
- Ketika database mendekati kondisi sampul ID transaksi, VACUUM secara otomatis menjadi lebih agresif dan melewati pembersihan yang tidak penting.
- Statistik yang diperluas pada ekspresi sekarang dapat dikumpulkan, memungkinkan perencanaan hasil yang lebih tepat untuk pencarian yang kompleks.
- libpq sekarang mendukung kueri berpipa, yang dapat meningkatkan throughput secara signifikan melalui koneksi latensi tinggi.
Keunggulan PostgreSQL Versi Terbaru
PostgreSQL melakukan update tidak hanya sekadar memberikan beberapa perubahan fungsionalitas untuk penggunanya, tetapi juga beberapa keunggulan lain seperti :
1. Parameter OUT
PostgreSQL 14 memperkenalkan parameter OUT, yang memungkinkan developer untuk mengembalikan data dari prosedur tersimpan dengan berbagai parameter.
Fungsionalitas ini familiar dengan developer yang menggunakan Oracle dan akan menjadi tambahan yang disambut baik bagi siapa saja yang bermigrasi dari Oracle ke PostgreSQL.
2. Mengakses JSON dengan Subscript
Sejak versi 9.2, PostgreSQL telah mendukung tipe data yang tidak terstruktur namun memiliki sintaks yang berbeda untuk mengambil data.
Kini dukungan untuk subscript telah ditambahkan di versi 14, sehingga memudahkan developer untuk mendapatkan data dari JSON menggunakan sintaks standar.
3. Support Multi-range
PostgreSQL versi terbaru ini sekarang sudah menyertakan dukungan ‘multirange’, yang memungkinkan developer untuk membuat pencarian yang lebih sederhana untuk urutan yang rumit. Contohnya adalah mengatur rentang waktu untuk ruang konferensi yang dipesan sepanjang hari.