Mampu menulis query dan mampu mengoperasikan database adalah dua keterampilan yang berbeda. Tugas operasional — memilih index yang tepat, membaca query plan, memahami isolation level, menjalankan backup, mengatur replikasi — menuntut dokumentasi dengan sudut pandang administrasi, bukan sekadar referensi sintaks. Chapter ini mengumpulkan halaman-halaman operasional resmi untuk tiga engine yang dipakai course ini, ditambah PgBouncer untuk connection pooling. Kolom tingkat di sini mengukur kedalaman bahasan, bukan tingkat kesulitan membacanya.
PostgreSQL: Struktur Data dan Performa Query #
Empat halaman berikut membentuk rangkaian kerja tuning yang utuh: rancang skema, buat index, baca rencana eksekusi, lalu terapkan pola penulisan query yang ramah terhadap planner.
| Sumber | Untuk apa | Tingkat |
|---|---|---|
| Schema Definition | Tabel, tipe data, constraint, dan dasar partitioning | pemula |
| Indexes | Jenis index (B-tree, GIN, dan lainnya) serta kapan masing-masing dipakai | menengah |
| Using EXPLAIN | Membaca rencana eksekusi EXPLAIN dan EXPLAIN ANALYZE | menengah |
| Performance Tips | Kebiasaan menulis query yang memudahkan kerja planner | menengah |
PostgreSQL: Transaksi dan Konkurensi #
Bagian ini menjelaskan bagaimana PostgreSQL menjaga konsistensi ketika banyak transaksi berjalan bersamaan: MVCC sebagai mekanisme dasarnya, lalu isolation level sebagai kebijakan yang bisa kita pilih.
| Sumber | Untuk apa | Tingkat |
|---|---|---|
| Concurrency Control dan MVCC | Locking, MVCC, resolusi konflik, dan proses vacuum | mahir |
| Transaction Isolation | Perbandingan perilaku Read Committed hingga Serializable | mahir |
| Routine Vacuuming | Pengelolaan VACUUM dan ANALYZE secara rutin | menengah |
PostgreSQL: Ketersediaan, Pemulihan, dan Monitoring #
Pipeline produksi menuntut rencana pemulihan yang jelas. Halaman-halaman berikut membahas arsitektur standby, mekanisme backup, statistik aktivitas yang perlu dipantau, hingga pengaturan server yang menentukan perilaku semuanya.
| Sumber | Untuk apa | Tingkat |
|---|---|---|
| High Availability | Arsitektur standby, log shipping, switchover, dan failover | mahir |
| Logical Replication | Replikasi tingkat tabel untuk publikasi dan konsumsi selektif | mahir |
| Write-Ahead Log | Bagaimana WAL menjamin durabilitas dan mendukung pemulihan | mahir |
| Backup and Restore | pg_dump, pg_basebackup, WAL archiving, dan point-in-time recovery | menengah |
| Monitoring Database Activity | Statistik aktivitas, progress reporting, dan katalog sistem | menengah |
| Server Configuration | Parameter postgresql.conf: memori, koneksi, WAL | mahir |
| pgbench | Alat benchmark bawaan untuk mengukur kapasitas transaksi | mahir |
SQLite dan DuckDB #
SQLite dan DuckDB punya model operasional yang jauh lebih sederhana karena keduanya berjalan tertanam di dalam aplikasi: tanpa server terpisah, tanpa proses daemon, dan seluruh data berada di satu berkas. Konsekuensinya, topik operasionalnya bergeser dari administrasi server ke pengaturan mode berkas dan pemeliharaan berkala. Dokumentasi berikut menutup kebutuhan praktis keduanya.
| Sumber | Untuk apa | Tingkat |
|---|---|---|
| Dokumentasi SQLite | Indeks induk seluruh dokumentasi SQLite | pemula |
| Appropriate Uses for SQLite | Batas wajar pemakaian SQLite dibanding client/server database | pemula |
| PRAGMA Statements | Pengaturan runtime: journal mode, foreign keys, wal, dan sejenisnya | menengah |
| Write-Ahead Logging | Mode WAL: pembaca dan penulis bersamaan tanpa saling mengunci | menengah |
| VACUUM | Memadatkan berkas database dan membangun ulang strukturnya | menengah |
| Backup API | Menyalin database secara online tanpa menghentikan aplikasi | menengah |
| Query Optimizer Overview | Cara SQLite memilih index dan urutan join | mahir |
| Query Planner | Penjelasan bertahap cara planner menyusun rencana eksekusi | menengah |
| Dokumentasi DuckDB | Konfigurasi, performa, dan panduan praktis DuckDB | pemula |
| Benchmarks DuckDB | Hasil benchmark resmi untuk menyusun ekspektasi performa | menengah |
Connection Pooling dengan PgBouncer #
Setiap koneksi PostgreSQL memakan satu proses server, sehingga aplikasi dengan banyak client memakai connection pooler agar koneksi dipakai bergantian. PgBouncer adalah pooler yang paling umum di ekosistem PostgreSQL, dan dokumentasi resminya menjelaskan tiga mode pooling — session, transaction, statement — beserta konsekuensi masing-masing terhadap fitur yang menyimpan state di sesi.
| Sumber | Untuk apa | Tingkat |
|---|---|---|
| Dokumentasi PgBouncer | Instalasi, konfigurasi pool, dan pemilihan mode pooling | mahir |
Sebelum memilih strategi backup, empat pertanyaan berikut menentukan halaman mana yang perlu dibaca mendalam:
- Seberapa banyak data yang boleh hilang saat gangguan terjadi (RPO) — makin kecil toleransinya, makin jauh kita bergeser dari
pg_dumpmenuju WAL archiving dan point-in-time recovery. - Berapa lama layanan boleh berhenti sampai data kembali tersedia (RTO) — menentukan pilihan antara pemulihan dari cadangan dan failover ke server standby.
- Siapa yang menjalankan pemulihan — prosedur yang hanya dikuasai satu orang bukan prosedur pemulihan yang andal.
- Seberapa sering pengujian pemulihan dijalankan — strategi backup yang tidak pernah diuji pemulihannya belum layak disebut strategi.
Urutan Bacaan Sebelum Naik ke Produksi #
Untuk pembaca yang baru sekali jalan mengoperasikan PostgreSQL, urutan bacaan berikut terbukti efisien — setiap tahap membangun kosakata untuk tahap berikutnya:
- Baca Schema Definition dan buat skema latihan sendiri dengan constraint yang realistis.
- Latih membaca rencana eksekusi di Using EXPLAIN dengan query agregasi sederhana.
- Pahami Transaction Isolation, lalu amati perbedaan anomali antar isolation level dengan dua sesi paralel.
- Pelajari Backup and Restore dan praktikkan
pg_dumpserta pemulihannya di lingkungan latihan. - Tutup dengan Monitoring Database Activity untuk tahu metrik apa yang layak dipantau.
- Baca Logical Replication bila arsitektur memakai replikasi antar server.
Urutan ini bisa dibaca terbalik saat kebutuhan mendesak: buka halaman spesifik yang sedang dibutuhkan, lalu mundur ke halaman konsep untuk memahami konteks lengkapnya. Yang penting, setiap halaman resmi selalu dibuka dengan kesadaran penuh terhadap versi yang sedang dipakai.
Seluruh konsep di atas dibahas secara praktis di section Database dan Penyimpanan Data — mulai dari Indexing, Query Planning, dan Connection Pooling sampai Backup dan Recovery serta Replikasi Database — lalu diperdalam di section Optimasi dan Performa. Untuk pekerjaan transformasi data di atas database tersebut, kita lanjutkan ke Referensi ETL dan ELT.