Kata “open source” sering dibaca sebagai “gratis”, padahal yang jauh lebih menentukan adalah lisensinya: aturan tentang apa yang boleh kita lakukan terhadap kode itu — memakainya, mengubahnya, menjualnya, atau menyembunyikan perubahannya. PostgreSQL berdiri di atas salah satu lisensi paling longgar di dunia perangkat lunak, dan longgarnya itu ikut membentuk ekosistem luas di sekelilingnya: perkakas, driver, extension, hingga layanan cloud. Chapter penutup section ini membahas lisensi tersebut, cara komunitas mengelola pengembangannya, dan peta ekosistem yang akan sering Anda temui sepanjang course.

Lisensi PostgreSQL: Permisif Seperti BSD #

PostgreSQL memakai PostgreSQL License, lisensi permissive sekeluarga BSD dan MIT. Intinya ringkas: Anda bebas memakai, menyalin, memodifikasi, dan mendistribusikan PostgreSQL — untuk keperluan apa pun, termasuk produk komersial tertutup — dengan satu kewajiban utama: menyertakan pemberitahuan hak cipta PostgreSQL pada salinan atau dokumentasi produk Anda. Tidak ada kewajiban membuka kode aplikasi Anda, tidak ada royalti, tidak ada batasan jumlah server atau pengguna.

Konsekuensinya praktis dan besar. Sebuah perusahaan bisa membangun produk berbayar di atas PostgreSQL tanpa tim hukum mengurus apa pun di luar satu baris pemberitahuan. Penyedia cloud bisa menjalankan PostgreSQL sebagai layanan terkelola. Bandingkan dengan model dual licensing MySQL: servernya berlisensi GPL, sehingga skenario tertentu — misalnya mendistribusikan MySQL termodifikasi di dalam produk tertutup — menuntut pembelian lisensi komersial dari Oracle. Kedua model itu sah dan hidup berdampingan; keduanya hanya menawarkan kebebasan yang berbeda bentuk.

Dikembangkan Komunitas, Dimiliki Tidak Seorang Pun #

PostgreSQL tidak punya perusahaan tunggal di belakangnya. Pengembangannya dikoordinasikan PostgreSQL Global Development Group — kelompok sukarelawan dan karyawan ratusan perusahaan (dari vendor database sampai raksasa cloud) yang menyumbang kode, review, dan infrastruktur. Keputusan besar diambil lewat milis terbuka; siapa pun bisa ikut. Model ini menjelaskan reputasi konservatif PostgreSQL: fitur masuk pelan-pelan lewat review ketat, dan kompatibilitas mundur dijaga sungguh-sungguh.

Iramanya teratur: satu rilis besar baru setiap tahun (18 rilis besar terbaru saat materi ini ditulis), dan setiap rilis besar didukung sekitar lima tahun lewat pembaruan kecil yang hanya memuat perbaikan bug dan keamanan. Artinya bagi kita: versi yang dipelajari sekarang tidak usang mendadak, dan menjalankan versi yang masih disupport adalah syarat mutlak di produksi.

Perkakas di Sekitar PostgreSQL #

Database hanyalah inti; bekerja sehari-hari memakai sekelilingnya. Peta singkatnya:

PerkakasPeran
psqlClient terminal resmi — dipakai di seluruh course ini
pgAdminAntarmuka grafis untuk browsing, query, dan administrasi
pg_dump / pg_restoreBackup dan restore database
Driver aplikasipsycopg (Python), pgx (Go), node-postgres (JavaScript), PDO (PHP)
PgBouncerConnection pooler — merawat masalah “satu proses per koneksi” dari chapter arsitektur
PatroniPengelola klaster high availability dengan replikasi dan failover otomatis
Layanan cloudAmazon RDS dan Aurora, Google Cloud SQL dan AlloyDB, Azure Database for PostgreSQL

Banyak nama di tabel itu akan mendapat chapter sendiri di bagian akhir course; untuk sekarang, cukup kenali wujudnya. Satu hal layak digarisbawahi: karena lisensinya permisif, semua vendor cloud tadi menjalankan PostgreSQL yang asli — bukan tiruan — sehingga kemampuan yang kita pelajari di sini terbawa ke layanan mana pun.

Extension: Fitur yang Menempel #

Mekanisme paling khas dari ekosistem PostgreSQL adalah extension: paket fitur — function, tipe data, operator — yang dipasang ke server jalan tanpa mengubah intinya. Extension hidup dalam dua keadaan: tersedia (binari ada di server, siap dipasang) dan terpasang (sudah aktif di database tertentu). View pg_available_extensions memperlihatkan keduanya:

SELECT name, default_version, installed_version
FROM pg_available_extensions
WHERE name IN ('dblink', 'pg_stat_statements', 'pgcrypto', 'plpgsql', 'postgres_fdw')
ORDER BY name;

Output yang Dihasilkan:

text
        name        | default_version | installed_version 
--------------------+-----------------+-------------------
 dblink             | 1.2             | 
 pg_stat_statements | 1.11            | 
 pgcrypto           | 1.3             | 
 plpgsql            | 1.0             | 1.0
 postgres_fdw       | 1.1             | 
(5 rows)

Cara membaca hasilnya: kolom default_version menyebut versi yang tersedia di server; kolom installed_version yang kosong berarti extension itu belum dipasang di database kita. Satu-satunya yang sudah terpasang adalah plpgsql — bahasa prosedural bawaan yang memang diaktifkan otomatis di setiap database baru. Empat lainnya menunggu dipanggil lewat CREATE EXTENSION. Mari kita pasang satu: pgcrypto, kumpulan function kriptografi:

CREATE EXTENSION pgcrypto;

SELECT encode(digest('Halo, PostgreSQL!', 'sha256'), 'hex') AS sidik_jari_sha256;

Output yang Dihasilkan:

text
CREATE EXTENSION
                        sidik_jari_sha256                         
------------------------------------------------------------------
 770185a777d3eda370ff5e855c1afe2bc31067b3c01be554d3ef9767c96c0908
(1 row)

Dua baris itu merangkum seluruh mekanisme extension:

  1. CREATE EXTENSION pgcrypto;: satu perintah, dan function kriptografi resmi tersedia di database ini — tidak ada restart server, tidak ada kompilasi.
  2. SELECT encode(digest(...), 'hex'): function digest() datang dari pgcrypto (menghitung hash SHA-256), sementara encode() adalah function bawaan yang mengubah hasil biner menjadi teks heksadesimal. Rangkaian 64 karakter itu adalah sidik jari digital dari teks "Halo, PostgreSQL!" — nilai yang sama akan selalu dihasilkan di mesin mana pun.

Tujuh chapter sejak “Apa itu PostgreSQL?” telah membangun satu gambar utuh: database relational yang patuh standar, dibandingkan adil dengan saingan terdekatnya, dijalankan lewat pipa parse-plan-execute, disusun dari keluarga proses dan memori bersama, dipakai lintas domain, dan dilindungi lisensi yang membebaskan. Teorinya cukup — langkah berikutnya menyentuh mesinnya secara langsung: memasang PostgreSQL dan menyiapkan lingkungan kerja, topik pembuka Section Persiapan Lingkungan.

Referensi #

Berkas Sumber

Berkas pendukung halaman ini dapat diunduh dan dijalankan langsung sesuai penjelasan di atas.

ekstensi-tersedia.sql

Unduh berkas
sql
SELECT name, default_version, installed_version
FROM pg_available_extensions
WHERE name IN ('dblink', 'pg_stat_statements', 'pgcrypto', 'plpgsql', 'postgres_fdw')
ORDER BY name;

pasang-ekstensi.sql

Unduh berkas
sql
CREATE EXTENSION pgcrypto;

SELECT encode(digest('Halo, PostgreSQL!', 'sha256'), 'hex') AS sidik_jari_sha256;