Memahami arsitektur PostgreSQL
PostgreSQL adalah sistem manajemen database relasional klien/server (RDMS). PostgreSQL juga mendukung berbagai ekstensi, seperti ekstensi Citus di opsi Azure Cosmos DB for PostgreSQL. Setelah ekstensi dimuat ke dalam database, ekstensi tersebut berfungsi seperti fitur bawaan biasanya.
PostgreSQL memiliki bahasa pemrogram kuerinya sendiri, yang disebut sebagai pgsql. Selain itu, PostgreSQL juga mendukung bahasa pemrogram prosedural, seperti Ruby on Rails.
Arsitektur klien/server
PostgreSQL didasarkan pada arsitektur klien/server. Server menyimpan, mengelola, dan mengembalikan data ke program klien. Program klien meminta data dengan menggunakan pgSQL, atau salah satu bahasa pemrogram prosedural yang didukung oleh PostgreSQL, seperti PL/pgSQL.
Suatu sesi PostgreSQL terdiri dari tiga bagian dasar:
- Postmaster
- Aplikasi Klien
- Server
Kepala Kantor Pos
Postmaster adalah proses daemon pengawasan yang mengelola server PostgreSQL. Daemon postmaster mengelola komunikasi di antara berbagai proses server termasuk menginisialisasi server, mematikan server, menangani permintaan koneksi, dan melakukan proses latar belakang lainnya. Dalam Azure Database for PostgreSQL, Anda tidak memiliki akses ke sistem file, atau ke proses Postmaster.
Aplikasi klien
Klien menjalankan kueri dan berinteraksi dengan database di server Azure Database for PostgreSQL. Untuk menjalankan kueri, Anda memerlukan alat klien seperti Azure Data Studio, DBeaver, pgAdmin, atau psql. Anda akan mempelajari alat klien di modul berikutnya.
Proses server
Kluster - satu server PostgreSQL dapat menghosting beberapa database pengguna. PostgreSQL menyebut koleksi database ini sebagai kluster. Setiap database terpisah dari database yang lain, dan pengguna serta aplikasi berinteraksi dengan database tunggal. Pengguna dibuat di tingkat kluster atau server.
Data untuk database ini disimpan dalam direktori data kluster yang disebut PGDATA. Direktori data PGDATA menyertakan file yang berisi versi PostgreSQL yang dijalankan, pg_tblspc, yang berisi tautan ke tablespaces, serta pg_xlog yang berisi file log write-ahead.
Catatan
Azure Databases for PostgreSQL adalah layanan yang mengelola penyimpanan dan sistem file yang mendasar. Sebagai pengguna server ini, Anda tidak memiliki akses langsung ke direktori PGDATA maupun subdirektorinya.
Selain database yang Anda buat, ada juga tiga database sistem:
- postgres - database default. Setelah server Anda membuat, Anda menyambungkan ke database postgres.
- azure_maintenance - database yang mengelola proses layanan. Anda tidak memiliki akses langsung ke database ini.
- azure_sys - Database untuk Penyimpanan Kueri. Jangan ubah database azure_sys maupun skemanya. Mengubah apa pun di azure_sys mencegah Penyimpanan Kueri dan fitur performa lainnya berfungsi dengan benar.
Skema - Skema adalah pengelompokan bernama yang berisi objek database. Database berukuran besar dengan banyak objek memanfaatkan pengaturan objek ke dalam skema. Misalnya, membuat skema untuk objek terkait penjualan, dan skema untuk objek terkait klien memudahkan untuk menemukan objek yang benar.
Parameter server - PostgreSQL memiliki beberapa file konfigurasi yang menentukan cara kerja mesin database. File konfigurasi PostgreSQL utama disebut postgresql.conf.
Azure Database for PostgreSQL mengganti file konfigurasi ini dengan parameter Server, yang dapat diakses melalui portal Azure, atau menggunakan Azure CLI.
Cara menampilkan atau mengubah parameter server di portal Azure:
- Buka server Azure Database for PostgreSQL Anda.
- Di menu sebelah kiri, di bagian Pengaturan, pilih Parameter server.
- Gunakan bilah pencarian untuk memfilter daftar parameter, atau pilih nomor halaman yang Anda butuhkan.
Penyimpanan - Azure Database for PostgreSQL mengelola penyimpanan data untuk Anda yang tersedia di tingkat server. Baik Anda memilih Tingkat komputasi burstable, tujuan umum, atau Memori yang dioptimalkan, Anda dapat menggunakan penyimpanan hingga 32 TB. Untuk memprovisikan penyimpanan, navigasikan ke server Azure Database for PostgreSQL Anda, dan dari bagian Gambaran Umum pilih Konfigurasi Anda. Bagian Komputasi + Penyimpanan akan ditampilkan. Di bagian Penyimpanan dan ukuran Penyimpanan, (dalam GB) gunakan penggeser untuk memilih jumlah penyimpanan yang ingin Anda sediakan.
Penyimpanan yang Anda tentukan adalah jumlah kapasitas I/O yang tersedia untuk server Azure Database for PostgreSQL Anda. Anda dapat memantau konsumsi I/O Anda pada portal Microsoft Azure atau dengan menggunakan perintah Azure CLI. Metrik yang relevan untuk dipantau adalah batas penyimpanan, persentase penyimpanan, penyimpanan yang digunakan, dan IO persen.
Catatan
Anda dapat meningkatkan jumlah penyimpanan ini setelah membuat server Azure Database for PostgreSQL, tetapi Anda tidak dapat mengurangi jumlahnya.
Tablespaces - Dengan implementasi PostgreSQL lokal, Anda dapat membuat tablespaces yang ditautkan ke area penyimpanan utama yang disebut sebagai PGDATA dengan menggunakan subdirektori pg_tblspc. Azure Database for PostgreSQL tidak mendukung tablespaces: semua tabel dibuat di area penyimpanan utama.
Katalog sistem - PostgreSQL berisi banyak tabel sistem dan tampilan yang menyimpan informasi terkait objek database. Misalnya, pg_database mengembalikan semua database di server dan pg_class menyimpan statistik tentang tabel.
Catatan
Azure Database for PostgreSQL mengizinkan akses ke beberapa, tetapi tidak semua katalog sistem.
Ekstensi - PostgreSQL mendukung berbagai ekstensi yang memperluas fungsionalitas inti mesin database. Ekstensi ini tersedia di repositori yang disebut PostgreSQL Extensions Network (PGXN).
Untuk menggunakan ekstensi PostgreSQL, ekstensi tersebut harus dipasang di database Anda. Untuk memasang ekstensi, jalankan perintah CREATE EXTENSION dari alat psql untuk memuat ekstensi ke dalam database Anda. Contohnya:
SELECT create_extension('postgis');
Untuk mengetahui ekstensi mana yang mendukung Azure Database for PostgreSQL, jalankan kueri berikut:
SELECT * FROM pg_available_extensions;
Semua server Azure Database for PostgreSQL menyertakan ekstensi pg_stat_statements. Ekstensi ini sudah diinstal untuk menyediakan fungsionalitas untuk melacak statistik eksekusi pernyataan SQL. Parameter server pg_stat_statements.track menentukan pernyataan apa yang dihitung oleh ekstensi. Opsinya adalah:
- Teratas - melacak semua pernyataan yang dikeluarkan langsung oleh klien (default).
- Tidak ada - tidak ada pernyataan yang dilacak.
- Semua - melacak semua pernyataan, termasuk pernyataan berlapis serta pernyataan yang dipanggil oleh fungsi.
Catatan
Ada overhead performa di server untuk mencatat setiap pernyataan SQL. Jika Anda tidak selalu menggunakan pg_stat_statements, atur parameter ini menjadi tidak ada. Selain itu, perhatikan bahwa beberapa layanan pemantauan pihak ketiga mungkin mengandalkan pg_stat_statements.
Pengoptimal kueri - PostgreSQL menggunakan metode pengoptimalan kueri berdasarkan biaya. Pengurai memeriksa sintaks kueri dan memisahkan kueri menjadi bagian yang berbeda. Pengurai membuat pohon urai dan meneruskan kueri ke penulis ulang, yang menerapkan aturan ke kueri. Perencana mencari cara terbaik untuk menjalankan kueri sebelum kueri dijalankan.
Proses backend - Proses PostgreSQL, yaitu model per transaksi. Saat pengguna baru tersambung, PostgreSQL akan mengautentikasi pengguna tersebut dan membuat proses server backend untuk menangani sambungan. Klien hanya berinteraksi dengan proses server saat mengirimkan kueri dan menerima hasil kueri.