Topik ini menyiapkan lingkungan kerja PostgreSQL, mulai dari instalasi pada tiga sistem operasi, koneksi pertama melalui psql, sampai pembuatan basis data contoh yang dipakai sepanjang jalur. Setelah seluruh langkah dijalankan, server PostgreSQL berjalan di lokal dan basis data perpustakaan siap menerima query.
Memasang PostgreSQL#
Paket resmi tersedia untuk Linux, macOS, dan Windows. Pada Ubuntu dan Debian, pemasangan dilakukan melalui APT dengan paket postgresql. Perintah berikut membutuhkan hak administratif sehingga tidak dijalankan di lingkungan penulisan tutorial ini.
# tidak-dijalankan (membutuhkan hak administratif di luar sandbox)
# pasang PostgreSQL di Ubuntu atau Debian
sudo apt update
sudo apt install postgresqlPada macOS, paket tersedia melalui Homebrew dengan brew install postgresql@18, sedangkan Windows menggunakan pemasang grafis resmi dari EnterpriseDB yang sekaligus memasang pgAdmin, yaitu antarmuka administrasi berbasis gambar. Petunjuk resmi per sistem operasi dirujuk di bagian Referensi dan menjadi rujukan yang paling mutakhir.
Setelah terpasang, layanan server biasanya langsung berjalan secara otomatis. Statusnya dapat diperiksa dengan utilitas pg_isready, yang menjawab singkat apakah server menerima koneksi atau belum.
Koneksi pertama dengan psql#
psql adalah klien baris perintah bawaan PostgreSQL dan menjadi klien utama sepanjang jalur ini. Mode kerjanya ada dua, yaitu interaktif dengan prompt per query, dan satu tembakan melalui flag -c yang menjalankan satu perintah lalu keluar. Mode kedua dipakai pada seluruh contoh di jalur ini karena keluarannya dapat direkam dan diulang persis.
Koneksi membutuhkan nama basis data dan nama role, yaitu akun di sisi server. Instalasi baru hanya memiliki role postgres, sehingga koneksi pertama memakainya.
# uji koneksi pertama ke server lokal
psql -U postgres -d postgres -c "SELECT version();" version
-----------------------------------------------------------------------------------------------------------
PostgreSQL 16.2 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 10.2.1 20210130 (Red Hat 10.2.1-11), 64-bit
(1 row)Keluaran di atas direkam pada PostgreSQL 16.2 di lingkungan penulisan, sedangkan jalur ini menargetkan PostgreSQL 17 dan 18. Setiap fitur yang didemonstrasikan berperilaku sama pada ketiga lini tersebut kecuali dinyatakan lain pada topiknya.
Membuat basis data contoh#
Jalur ini memakai satu basis data contoh bernama perpustakaan yang berisi tabel kategori, buku, anggota, dan peminjaman. Basis datanya dibuat dengan utilitas createdb, dan perintah dropdb --if-exists di depan membuat blok ini aman dijalankan ulang kapan pun, karena basis data lama dihapus terlebih dahulu.
# buat basis data contoh; --if-exists membuat blok ini aman diulang
dropdb --if-exists -U postgres perpustakaan
createdb -U postgres perpustakaan
psql -U postgres -d perpustakaan -c "SELECT current_database();" current_database
------------------
perpustakaan
(1 row)Tabel-tabelnya tidak dibuat pada topik ini. Setiap topik tersendiri menyertakan blok penyiapan yang membangun ulang tabel dan data yang dibutuhkannya, sehingga setiap topik dapat dipraktikkan secara mandiri tanpa bergantung pada urutan baca.
Opsi Docker#
Pemasangan tanpa menyentuh sistem operasi dapat dilakukan dengan Docker, yaitu kontainer server PostgreSQL yang berdiri sendiri. Perintah berikut menarik citra resmi versi 18 dan menjalankannya pada port 5432. Blok ini tidak dijalankan di lingkungan penulisan karena membutuhkan daemon Docker.
# tidak-dijalankan (membutuhkan daemon Docker)
# jalankan PostgreSQL 18 di dalam kontainer
docker run --name pg-tutorial -e POSTGRES_PASSWORD=postgres -p 5432:5432 -d postgres:18Kontainer ini menghasilkan konfigurasi yang sama untuk dipraktikkan, yaitu basis data postgres dan role postgres dengan kata sandi yang dideklarasikan pada flag -e. Pengguna Docker tetap mengikuti seluruh contoh lain tanpa penyesuaian.
Dataset perpustakaan dan pagila#
Dataset perpustakaan dipilih karena kecil, netral, dan mencakup pola relasi yang dibutuhkan jalur ini, yaitu rujukan satu-ke-banyak dan banyak-ke-banyak melalui tabel peminjaman. Seluruh datanya dibangun ulang dari blok penyiapan sehingga tidak ada berkas unduhan.
Apabila dataset yang lebih besar dan lebih menyerupai produksi diinginkan, proyek contoh resmi bernama pagila menyediakan basis data penyewaan film yang cukup kaya untuk latihan query lanjutan. Pagila bersifat opsional dan tidak digunakan pada jalur ini, tetapi cocok sebagai tempat berlatih setelah jalur selesai.
Kesalahan umum#
Kesalahan pertama adalah memanggil psql tanpa flag -U pada sistem yang pengguna sistem operasinya tidak memiliki role di PostgreSQL, yang menghasilkan pesan berupa role tidak ada. Kebiasaan yang benar menyertakan -U postgres secara eksplisit selama fase belajar. Kesalahan kedua adalah mencoba koneksi sebelum layanan server berjalan, yang jawabannya diperiksa dengan pg_isready terlebih dahulu.
Kesalahan ketiga adalah lupa flag -d sehingga psql mencoba terhubung ke basis data yang namanya sama dengan nama role, padahal basis data tersebut belum tentu ada. Selama jalur ini berlangsung, -d perpustakaan ditulis secara eksplisit pada setiap perintah.
Ringkasan#
- PostgreSQL dipasang melalui paket resmi per sistem operasi atau melalui kontainer Docker tanpa menyentuh sistem.
- psql menjalankan query lewat mode
-cyang keluarannya dapat direkam dan diulang persis, sehingga menjadi klien utama jalur ini. - Basis data contoh
perpustakaandibuat dengan createdb, dan setiap topik menyediakan blok penyiapan mandiri untuk tabelnya. pg_isreadymemeriksa kesiapan server, dan-U postgresmenjadi koneksi bawaan selama fase belajar.
Referensi#
- Getting Started — PostgreSQL Documentation — Panduan instalasi resmi per sistem operasi.
- createdb — PostgreSQL Documentation — Referensi utilitas pembuatan basis data beserta flag-nya.
- psql — PostgreSQL Documentation
— Referensi lengkap klien psql beserta mode
-c.