Bab 1 Pengenalan PostgreSQL
Kenali PostgreSQL, sistem manajemen database open source yang dikenal karena keandalan, kepatuhan standar SQL, dan kekayaan fitur.
Buka → # PostgreSQL dan Relational DatabasePahami model relational database: tabel, baris, kolom, relasi, dan bagaimana PostgreSQL menerapkannya.
Buka → # PostgreSQL vs MySQLBandingkan PostgreSQL dan MySQL secara adil: filosofi, fitur SQL, performa, dan kapan memilih yang mana.
Buka → # Cara Kerja PostgreSQLTelusuri perjalanan sebuah query di dalam PostgreSQL, dari koneksi client hingga hasil dikembalikan.
Buka → # Arsitektur PostgreSQLBedah arsitektur proses PostgreSQL: postmaster, backend process, shared memory, dan background process.
Buka → # Use Case PostgreSQLLihat peta penggunaan PostgreSQL di dunia nyata: aplikasi web, analitik, geospasial, hingga sistem keuangan.
Buka → # Lisensi dan Ekosistem PostgreSQLPahami lisensi PostgreSQL, model pengembangan komunitas, dan ekosistem tool di sekelilingnya.
Buka →Bab 2 Persiapan Lingkungan
Pasang PostgreSQL di Linux, macOS, dan Windows, lalu verifikasi bahwa server berjalan dengan benar.
Buka → # Konfigurasi PostgreSQL ServerKenali file konfigurasi utama server dan pengaturan dasar yang perlu dipahami sejak awal.
Buka → # Menggunakan psqlKuasai psql, terminal interaktif resmi PostgreSQL: meta-command, format output, dan alur kerja harian.
Buka → # Menggunakan pgAdminJelajahi pgAdmin, antarmuka grafis paling populer untuk mengelola PostgreSQL.
Buka → # Koneksi ke Database ServerPahami parameter koneksi PostgreSQL: host, port, user, database, dan cara meresolving-nya.
Buka → # Konfigurasi KoneksiKelola koneksi lewat environment variable, connection string, dan file .pgpass.
Buka → # Lingkungan PengembanganSusun lingkungan pengembangan PostgreSQL yang nyaman: database latihan, user khusus, dan kebiasaan kerja yang aman.
Buka →Bab 3 Dasar SQL
Kenali anatomi perintah SQL, kategori DDL DML DCL, dan aturan penulisan di PostgreSQL.
Buka → # Membuat DatabaseBuat database baru dengan CREATE DATABASE dan pahami database bawaan PostgreSQL.
Buka → # Membuat SchemaAtur objek database dengan schema: namespace logis di dalam satu database.
Buka → # Memilih DatabaseBerpindah konteks antar database: kapan bisa dan kapan harus membuka koneksi baru.
Buka → # Membuat TabelDefinisikan tabel pertama dengan CREATE TABLE beserta kolom dan tipe datanya.
Buka → # Melihat Struktur TabelPeriksa struktur tabel lewat \d, information_schema, dan pg_catalog.
Buka → # Mengubah Struktur TabelUbah tabel yang sudah terlanjur berjalan dengan ALTER TABLE tanpa kehilangan data.
Buka → # Menghapus Database dan TabelHapus objek dengan DROP DATABASE dan DROP TABLE, beserta risiko dan prosedur amannya.
Buka → # Komentar dalam SQLDokumentasikan query dan objek database dengan komentar SQL dan COMMENT ON.
Buka →Bab 4 Tipe Data
Kuasai tipe bilangan bulat smallint, integer, dan bigint beserta rentang dan jebakan overflow-nya.
Buka → # Numeric dan DecimalHitung uang dan nilai presisi tinggi dengan tipe numeric yang bebas galat pembulatan.
Buka → # Floating PointPahami real dan double precision, format binernya, dan mengapa 0.1 tidak pernah tepat.
Buka → # Character dan TextBandingkan char, varchar, dan text, serta mitos performa yang menyertainya.
Buka → # BooleanGunakan tipe boolean dengan benar: nilai true false null dan idiom query-nya.
Buka → # Date dan TimeKelola tanggal dan waktu: date, time, timestamp, timestamptz, dan zona waktu.
Buka → # IntervalHitung durasi antar waktu dengan tipe interval untuk aritmetika tanggal yang ekspresif.
Buka → # UUIDHasilkan dan gunakan identifier universal yang unik lintas server dan waktu.
Buka → # EnumBatasi nilai kolom pada daftar tetap dengan tipe ENUM yang ringkas dan terbaca.
Buka → # ArraysSimpan daftar nilai dalam satu kolom dengan tipe array asli PostgreSQL.
Buka → # JSON dan JSONBSimpan data semi-terstruktur dengan json dan jsonb, dua format JSON dengan karakter berbeda.
Buka → # ByteaSimpan data biner seperti gambar dan file di dalam kolom bytea.
Buka → # Network Address TypesSimpan IP address dan network dengan tipe cidr, inet, dan macaddr yang tervalidasi otomatis.
Buka → # Geometric TypesRepresentasikan titik, garis, dan poligon dengan tipe geometric bawaan PostgreSQL.
Buka → # Range dan Multirange TypesModelkan interval nilai seperti jadwal dan harga dengan range type dan gabungannya.
Buka → # Memilih Tipe DataRangkum panduan praktis memilih tipe data yang tepat untuk setiap kolom.
Buka →Bab 5 Table Design
Rancang struktur tabel lengkap: penamaan, urutan kolom, dan dokumentasi COMMENT.
Buka → # Primary KeyTetapkan identitas baris dengan primary key dan pahami index implisit yang menyertainya.
Buka → # Foreign KeyJaga konsistensi antartabel dengan foreign key dan aksi referensial ON DELETE dan ON UPDATE.
Buka → # Unique ConstraintCegah duplikasi nilai kolom dengan unique constraint dan null yang berperilaku istimewa.
Buka → # Not Null ConstraintWajibkan nilai dengan NOT NULL dan pahami kapan NULL justru dibutuhkan.
Buka → # Check ConstraintValidasi aturan bisnis pada level baris dengan CHECK yang fleksibel.
Buka → # Default ValueIsi kolom otomatis dengan DEFAULT, dari konstanta hingga ekspresi waktu.
Buka → # Generated ColumnsTurunkan nilai kolom dari kolom lain secara otomatis dengan generated column.
Buka → # Identity ColumnsBuat kolom penomoran otomatis dengan IDENTITY sesuai standar SQL.
Buka → # Composite KeyGunakan kombinasi beberapa kolom sebagai primary key dan unique constraint.
Buka → # Exclusion ConstraintsCegah rentang yang saling tumpang tindih dengan exclusion constraint khas PostgreSQL.
Buka → # Mengubah Struktur TabelUbah constraint dan struktur tabel yang sudah berjalan dengan aman lewat ALTER TABLE.
Buka →Bab 6 Manipulasi Data
Tambahkan baris baru ke tabel dengan INSERT dalam berbagai bentuknya.
Buka → # SELECTAmbil data dengan SELECT: memilih kolom, memberi alias, dan menyusun hasil.
Buka → # UPDATEUbah data yang sudah ada dengan UPDATE yang presisi dan aman dari kesalahan target.
Buka → # DELETEHapus baris dengan DELETE dan pahami perbedaannya dengan TRUNCATE.
Buka → # RETURNING ClauseDapatkan kembali baris yang baru diubah tanpa query tambahan dengan RETURNING.
Buka → # Insert Multiple RowsMasukkan banyak baris sekaligus dengan multi-row VALUES yang jauh lebih efisien.
Buka → # ON CONFLICTTangani benturan primary key dengan upsert melalui ON CONFLICT DO UPDATE.
Buka → # MERGEGabungkan logika insert, update, dan delete dalam satu perintah standar SQL: MERGE.
Buka → # TRUNCATE TABLEKosongkan tabel seketika dengan TRUNCATE beserta opsi dan risikonya.
Buka →Bab 7 Filtering dan Sorting
Saring baris dengan klausa WHERE sebagai fondasi semua query yang berguna.
Buka → # Operator PerbandinganBandingkan nilai dengan operator sama dengan, tidak sama dengan, kurang dari, dan lebih dari.
Buka → # Operator LogikaGabungkan kondisi dengan AND, OR, dan NOT beserta tabel kebenarannya.
Buka → # AND OR NOTBedah urutan evaluasi AND dan OR yang menjadi sumber bug klasik filtering.
Buka → # IN dan NOT INCocokkan daftar nilai dengan IN dan pahami jebakan NULL pada NOT IN.
Buka → # BETWEENSaring rentang nilai dengan BETWEEN, inklusif di kedua ujungnya.
Buka → # LIKE dan ILIKECari pola teks dengan LIKE dan variasi case-insensitive ILIKE beserta wildcard-nya.
Buka → # Regular ExpressionsCocokkan pola kompleks dengan operator regex PostgreSQL yang berbasis POSIX.
Buka → # IS NULLPeriksa nilai NULL dengan IS NULL dan IS NOT NULL, plus perbandingan IS DISTINCT FROM.
Buka → # DISTINCTBuang baris duplikat dari hasil query dengan DISTINCT dan variasinya.
Buka → # ORDER BYUrutkan hasil dengan ORDER BY: satu kolom, banyak kolom, NULL, dan ekspresi.
Buka → # LIMIT dan OFFSETBatasi dan lompati baris hasil dengan LIMIT dan OFFSET untuk pagination sederhana.
Buka → # FETCH FIRSTGunakan FETCH FIRST, sintaks standar SQL yang lebih ekspresif dari LIMIT.
Buka →Bab 8 Fungsi SQL
Olah teks dengan length, upper, lower, trim, substring, concat, dan teman-temannya.
Buka → # Fungsi NumerikHitung dengan abs, round, ceil, floor, mod, dan fungsi pembulatan khusus numeric.
Buka → # Fungsi Date dan TimeBaca komponen tanggal dengan EXTRACT, atur pembulatan dengan date_trunc, dan hitung usia.
Buka → # Fungsi Konversi Tipe DataKonversi nilai antar tipe dengan CAST dan notasi :: beserta aturan gagalnya.
Buka → # Fungsi NULLKelola NULL dengan COALESCE, NULLIF, dan pemahaman three-valued logic.
Buka → # Fungsi KondisionalPilih nilai bersyarat dengan CASE WHEN dan fungsi GREATEST LEAST.
Buka → # Fungsi AgregatRangkul agregat dasar sebagai pembuka sebelum Section Agregasi Data.
Buka → # Operator dan EkspresiPeta operator PostgreSQL: aritmetika, perbandingan, string, dan prioritasnya.
Buka → # Type CastingPahami casting eksplisit dan implisit PostgreSQL beserta jebakan konversi diam-diam.
Buka →Bab 9 Agregasi Data
Hitung baris dan nilai dengan COUNT dalam empat wujudnya yang berbeda.
Buka → # SUMJumlahkan nilai numerik dengan SUM beserta perlakuannya terhadap NULL.
Buka → # AVGHitung rata-rata dengan AVG dan jebakan pembulatannya pada integer.
Buka → # MIN dan MAXTemukan nilai terkecil dan terbesar, dari angka hingga teks dan tanggal.
Buka → # GROUP BYKelompokkan baris sebelum diagregasi dengan GROUP BY dan aturan kolomnya.
Buka → # HAVINGSaring hasil agregasi dengan HAVING dan bedakan perannya dari WHERE.
Buka → # FILTER ClauseAgregasi selektif dengan klausa FILTER yang lebih bersih daripada CASE WHEN.
Buka → # Grouping SetsHasilkan beberapa level agregasi sekaligus dengan GROUPING SETS.
Buka → # ROLLUP dan CUBEBuat subtotal bertingkat dengan ROLLUP dan pivoted agregasi dengan CUBE.
Buka → # Agregasi dengan KondisiKombinasikan agregat dengan kondisi: pola CASE WHEN versus FILTER.
Buka →Bab 10 JOIN
Pahami mengapa data dipecah antartabel dan bagaimana relasi menghubungkannya kembali.
Buka → # INNER JOINGabungkan baris yang cocok di kedua tabel dengan INNER JOIN, join paling dasar.
Buka → # LEFT JOINPertahankan seluruh baris tabel kiri dengan LEFT JOIN beserta NULL pengisinya.
Buka → # RIGHT JOINGunakan RIGHT JOIN dan lihat mengapa banyak tim menuliskannya ulang sebagai LEFT JOIN.
Buka → # FULL OUTER JOINTemukan data yang hanya ada di salah satu tabel dengan FULL OUTER JOIN.
Buka → # CROSS JOINHasilkan semua kombinasi baris dengan CROSS JOIN dan kasus penggunaannya.
Buka → # SELF JOINGabungkan tabel dengan dirinya sendiri untuk data berhierarki seperti karyawan dan atasan.
Buka → # Multiple JoinsRangkaikan banyak JOIN dalam satu query dengan alias yang rapi.
Buka → # LATERAL JoinReferensikan hasil join sebelumnya per baris dengan subquery LATERAL.
Buka → # NATURAL JOINKenali NATURAL JOIN, kenyamanannya yang menggoda, dan risiko kolom yang berubah.
Buka → # Menghindari Duplikasi Hasil JoinDiagnosis dan obati hasil join yang membengkak karena relasi satu-ke-banyak.
Buka →Bab 11 Subquery dan CTE
Pahami konsep query bersarang dan posisi-posisinya dalam perintah SQL.
Buka → # Scalar SubqueryGunakan subquery yang menghasilkan satu nilai sebagai bagian dari ekspresi.
Buka → # Subquery dalam WHERESaring baris berdasarkan hasil query lain dengan IN, ANY, dan ALL.
Buka → # Subquery dalam FROMPerlakukan subquery sebagai tabel sementara dengan derived table dan alias kolom.
Buka → # Correlated SubqueryHubungkan subquery dengan baris terluarnya dan pahami biaya perulangannya.
Buka → # EXISTS dan NOT EXISTSUji keberadaan baris dengan EXISTS yang berhenti di temuan pertama.
Buka → # Common Table ExpressionsRapikan query bertingkat dengan WITH dan beri nama tahapan perhitungannya.
Buka → # Recursive CTELalui data berhierarki dan deret berulang dengan recursive CTE.
Buka → # Subquery vs JoinBandingkan subquery dan join: keterbacaan, performa, dan kapan keduanya setara.
Buka →Bab 12 Relational Database Design
Terjemahkan dunia nyata menjadi entitas, atribut, dan tabel database.
Buka → # Relasi One-to-OneModelkan relasi satu-ke-satu dan alasan sah yang menyertainya.
Buka → # Relasi One-to-ManyModelkan relasi satu-ke-banyak, pola paling umum di seluruh desain database.
Buka → # Relasi Many-to-ManyHubungkan dua entitas yang saling berhubungan banyak dengan tabel perantara.
Buka → # Junction TableRancang tabel perantara yang benar, dengan atau tanpa atribut tambahan.
Buka → # Normalisasi DatabasePahami tujuan normalisasi: menghilangkan redudansi dan anomali data.
Buka → # First Normal FormTerapkan 1NF: satu nilai per sel dan atomicity yang menyertainya.
Buka → # Second Normal FormTerapkan 2NF: hilangkan ketergantungan parsial pada composite key.
Buka → # Third Normal FormTerapkan 3NF: hilangkan ketergantungan transitif antar kolom non-key.
Buka → # DenormalisasiSengaja menambah redudansi demi kecepatan baca, dan harga yang harus dibayar.
Buka → # Schema dan Search PathAtur objek lintas schema dan pahami search_path yang menentukan resolusi nama.
Buka → # Merancang Skema DatabaseSusun proses perancangan skema dari narasi kebutuhan hingga tabel final.
Buka →Bab 13 Indexes
Pahami index sebagai struktur data terpisah yang mempercepat pencarian dengan biaya tulis.
Buka → # Membuat dan Menghapus IndexKelola index dengan CREATE INDEX, IF NOT EXISTS, DROP INDEX, dan CONCURRENTLY.
Buka → # B-tree IndexBedah B-tree, index default PostgreSQL untuk perbandingan dan rentang.
Buka → # Hash IndexGunakan hash index untuk kesetaraan murni dan pahami keterbatasannya.
Buka → # Composite IndexRancang index multi-kolom dan urutan kolom yang menentukan kegunaannya.
Buka → # Unique IndexCegah duplikasi lewat index unik yang mendasari unique constraint dan primary key.
Buka → # Partial IndexIndex hanya baris yang memenuhi kondisi: kecil, cepat, dan hemat tulis.
Buka → # Expression IndexIndex hasil ekspresi seperti lower(email) untuk pencarian yang tak cocok dengan kolom asli.
Buka → # Covering IndexPenuhi query seluruhnya dari index dengan INCLUDE dan index-only scan.
Buka → # GIN IndexPercepat array, JSONB, dan full-text search dengan inverted index GIN.
Buka → # GiST IndexGunakan GiST untuk data geometri, range, dan pencarian tetangga terdekat.
Buka → # BRIN IndexIndex blok range yang super ringkas untuk tabel besar terurut alami.
Buka → # SP-GiST IndexKenali SP-GiST untuk struktur data berpartisi ruang seperti quadtree.
Buka → # Index pada JSONBGabungkan GIN dan expression index untuk query JSONB yang cepat.
Buka → # Memilih Jenis IndexPetakan pola query ke jenis index yang tepat dalam satu rangkuman praktis.
Buka → # Biaya Pemeliharaan IndexHitung harga index: tulis lebih lambat, storage, dan disiplin index yang tidak terpakai.
Buka →Bab 14 View dan Materialized View
Bungkus query menjadi view yang dapat dipakai seperti tabel biasa.
Buka → # Mengubah ViewSesuaikan definisi view dengan CREATE OR REPLACE VIEW dan batas perubahannya.
Buka → # Menghapus ViewHapus view dengan DROP VIEW dan pahami ketergantungan yang ikut terpengaruh.
Buka → # Updatable ViewUbah data lewat view sederhana yang otomatis bisa ditulis.
Buka → # Materialized ViewBekukan hasil query ke tabel fisik dengan materialized view untuk laporan berat.
Buka → # Refresh Materialized ViewSegarkan data materialized view, termasuk refresh concurrent yang tak mengunci baca.
Buka → # View dan Keamanan DataSembunyikan kolom dan baris sensitif di balik view berlapis.
Buka →Bab 15 Transactions
Pahami transaksi sebagai unit kerja all-or-nothing yang menjamin konsistensi.
Buka → # BEGIN, COMMIT, dan ROLLBACKKendalikan transaksi dengan tiga perintah dasar dan perilaku autocommit.
Buka → # SAVEPOINTBerikan titik kembali di dalam transaksi untuk pulih dari error sebagian.
Buka → # ACID PropertiesBedah jaminan Atomicity, Consistency, Isolation, dan Durability di PostgreSQL.
Buka → # Isolation LevelsPilih isolation level yang tepat di antara Read Committed hingga Serializable.
Buka → # MVCCPahami Multi-Version Concurrency Control: cara PostgreSQL menghindari reader memblok writer.
Buka → # Row LockingKunci baris dengan FOR UPDATE dan pola locking optimistic versus pessimistic.
Buka → # Table LockingKenali mode kunci tabel dan bagaimana DDL mengunci akses data.
Buka → # DeadlocksDiagnosis deadlock dari log server dan cegah dengan urutan akses yang konsisten.
Buka → # Advisory LocksKoordinasi aplikasi lewat kunci level database tanpa tabel khusus.
Buka → # Serializable TransactionsCapai isolasi paling ketat dengan SSI dan penanganan serialization failure.
Buka → # Penanganan KonkurensiSusun strategi menulis data bersamaan: retry, locking, dan desain yang meminimalkan konflik.
Buka →Bab 16 Window Functions
Pahami jendela baris: agregasi tanpa meringkas dan kolom hasil yang per baris.
Buka → # OVER dan PARTITION BYSusun jendela dengan OVER dan partisinya yang menggantikan GROUP BY.
Buka → # ROW_NUMBERNomori baris dalam partisi untuk deduplikasi dan pemilihan baris ke-N.
Buka → # RANK dan DENSE_RANKRanking yang melompat, tidak melompat, dan persentilenya dengan NTILE.
Buka → # LAG dan LEADBandingkan baris dengan tetangga sebelum dan sesudahnya untuk pertumbuhan dan selisih.
Buka → # Running TotalJumlahkan berjalan dengan agregat berurutan sebagai window function.
Buka → # Moving AverageHaluskan deret waktu dengan rata-rata bergerak tiga periode dan seterusnya.
Buka → # Window FrameBatasi jendela per baris dengan ROWS dan RANGE, dari sejauh mana fungsi melihat.
Buka → # Window Function untuk AnalisisTerapkan window function pada kasus nyata: top-N per kelompok dan tren kumulatif.
Buka →Bab 17 JSON dan Data Semi-Terstruktur
Pilih antara json yang menyimpan teks apa adanya dan jsonb yang terparse dan terindeks.
Buka → # Menyimpan Data JSONSimpan dokumen JSON ke kolom jsonb dan validasi strukturnya sejak masuk.
Buka → # Membaca Nilai JSONAmbil nilai dari dokumen dengan ->, ->>, dan path bertingkat.
Buka → # JSONPathQuery dokumen dengan bahasa JSONPath dan fungsi jsonb_path_query.
Buka → # Operator JSON dan JSONBPeta operator jsonb: keanggotaan ?, perbandingan @>, dan penyatuan ||.
Buka → # Mengubah Data JSONUbah dokumen jsonb dengan jsonb_set, concat, dan penghapusan kunci.
Buka → # JSON AggregationRakit baris menjadi dokumen dengan json_agg, jsonb_build_object, dan to_jsonb.
Buka → # Indexing JSONBPercepat query JSONB dengan GIN index dan pilihan operator class-nya.
Buka → # Memilih JSONB vs Kolom RelationalNimbang skema fleksibel versus skema tegas: kapan masing-masing menang.
Buka →Bab 18 Array dan Custom Type
Buat kolom array, isi nilainya, dan akses elemen dengan indeks berbasis satu.
Buka → # Operator ArrayTelusuri array dengan ANY, ALL, @>, && dan operator array lainnya.
Buka → # Fungsi ArrayOlah array dengan array_agg, unnest, array_length, dan fungsi pembentuknya.
Buka → # Composite TypeDefinisikan tipe baris sendiri dan gunakan sebagai nilai terstruktur.
Buka → # Enum TypesBuat enum sendiri, urutannya, dan risiko menambah nilai baru.
Buka → # Domain TypesBungkus tipe existing dengan constraint validasi lewat domain.
Buka → # Range TypesModelkan interval nilai dengan range type dan operator overlapcontainsnya.
Buka → # Kapan Menggunakan Custom TypeNimbang custom type terhadap tabel dan kolom biasa sebelum tergiur kekleihannya.
Buka →Bab 19 Full-Text Search
Pahami pencarian berbasis token dan lexeme, bukan pola karakter.
Buka → # tsvector dan tsqueryKenali dua tipe inti full-text search: dokumen terpraproses dan query pencarian.
Buka → # to_tsvector dan to_tsqueryKonversi teks mentah dan query manusiawi dengan konfigurasi bahasa.
Buka → # Pencarian TeksJalankan pencarian dengan operator @@ dan variasi tsquery untuk frasa dan prioritas.
Buka → # Ranking Hasil PencarianUrutkan hasil berdasarkan relevansi dengan ts_rank dan ts_rank_cd.
Buka → # Konfigurasi BahasaAtur stemming dan stop word per bahasa, termasuk opsi untuk teks Indonesia.
Buka → # GIN Index untuk PencarianPercepat @@ dengan GIN index pada kolom tsvector, plus index expression.
Buka → # Pencarian Teks dan JSONBBawa full-text search ke dalam dokumen JSONB lewat index expression.
Buka →Bab 20 Stored Programs
Kenali PL/pgSQL, bahasa prosedural default PostgreSQL, dan posisinya di antara SQL murni.
Buka → # Membuat FunctionTulis function SQL dan PL/pgSQL pertama lalu panggil dengan SELECT.
Buka → # Parameter FunctionKirim data masuk dan keluar function: IN, OUT, INOUT, dan VARIADIC.
Buka → # Return TypeKembalikan skalar, SETOF, TABLE, dan record dari function yang kita definisikan.
Buka → # Variables dan AssignmentsDeklarasikan variabel dan isi nilainya dengan := dan SELECT INTO.
Buka → # Kondisi dan PerulanganKendalikan alur PL/pgSQL dengan IF, CASE, LOOP, FOR, dan WHILE.
Buka → # Record dan Row TypeProses satu baris penuh dalam variabel record dan row type.
Buka → # Exception HandlingTangkap error dengan EXCEPTION dan blok BEGIN END yang bersarang.
Buka → # Stored ProcedureBuat prosedur dengan CALL yang bisa mengelola transaksinya sendiri.
Buka → # CursorsLalui hasil query baris demi baris dengan cursor eksplisit dan refcursor.
Buka → # Kapan Menggunakan Stored ProgramNimbang stored program terhadap logika aplikasi: performa, deployability, dan testability.
Buka →Bab 21 Trigger dan Event
Pahami trigger sebagai fungsi yang menempel pada event tabel.
Buka → # BEFORE dan AFTER TriggerPilih momen trigger berjalan: memodifikasi baris sebelum ditulis atau bereaksi setelahnya.
Buka → # Row-Level vs Statement-LevelBedakan trigger per baris dan per pernyataan beserta konteks NEW OLD dan transition table.
Buka → # Trigger FunctionTulis function khusus trigger dengan variabel NEW, OLD, dan TG_ARGV.
Buka → # INSERT UPDATE DELETE TriggerPasang trigger pada perintah data yang berbeda, termasuk UPDATE OF kolom tertentu.
Buka → # Constraint TriggerValidasi lintas baris dengan constraint trigger yang tertunda hingga COMMIT.
Buka → # Event TriggerAwasi perintah DDL dengan event trigger pada level database.
Buka → # Auditing dengan TriggerBangun jejak audit perubahan data: siapa, kapan, dan apa yang berubah.
Buka → # Keterbatasan TriggerKenali biaya dan jebakan trigger: debugging yang sulit dan efek berantai.
Buka →Bab 22 Query Optimization
Baca node, biaya, dan baris execution plan sebagai bahasa diagnosa utama.
Buka → # EXPLAINTampilkan rencana eksekusi tanpa menjalankannya dan tafsirkan cost serta rows.
Buka → # EXPLAIN ANALYZEJalankan query sungguhan dan bandingkan perkiraan planner dengan kenyataannya.
Buka → # Sequential Scan vs Index ScanPahami kapan Seq Scan justru lebih cepat dan bagaimana planner memutuskan.
Buka → # Join StrategyKenali Nested Loop, Hash Join, dan Merge Join beserta kondisi pilihannya.
Buka → # Query PlannerPahami cara planner menaksir biaya dan mengapa statistik menentukan kualitas rencana.
Buka → # Statistik dan ANALYZERawat statistik dengan ANALYZE dan baca pg_stats untuk memahami estimasi planner.
Buka → # VACUUM dan AutovacuumKelola ruang kosong dan visibility map dengan VACUUM beserta autovacuum-nya.
Buka → # Mengoptimalkan JoinPerbaiki query join lambat: index kolom kunci, urutan tabel, dan filter dini.
Buka → # Mengoptimalkan PaginationGanti OFFSET besar dengan keyset pagination yang stabil dan murah.
Buka → # Mendeteksi Slow QueryTemukan query lambat lewat pg_stat_statements dan log min duration statement.
Buka → # Mengukur Performa QueryUkur dengan benar: timing client, buffer, dan bias cache yang menipu.
Buka →Bab 23 User Management dan Keamanan
Pahami model role PostgreSQL yang menyatukan user dan group dalam satu konsep.
Buka → # Membuat dan Menghapus RoleKelola role dengan CREATE ROLE, atribut login dan superuser, serta DROP ROLE.
Buka → # PrivilegesPahami privilege per objek: SELECT, INSERT, UPDATE, DELETE, dan USAGE.
Buka → # GRANT dan REVOKEBerikan dan cabut hak akses dengan GRANT dan REVOKE secara bertingkat.
Buka → # Schema PrivilegesAtur hak pada schema dan default privileges untuk objek baru.
Buka → # Row Level SecurityBatasi baris yang terlihat per pengguna dengan Row Level Security.
Buka → # Policy RLSTulis policy RLS dengan USING dan WITH CHECK beserta perannya untuk tenant.
Buka → # AuthenticationKenali metode authentication PostgreSQL dari trust hingga scram-sha-256.
Buka → # pg_hba.confAtur siapa yang boleh terhubung lewat file pg_hba.conf.
Buka → # TLS dan Koneksi AmanAmankan jalur koneksi dengan TLS dan verifikasi sslmode.
Buka → # SQL InjectionPahami anatomy serangan SQL injection dan pertahanan berlapisnya di PostgreSQL.
Buka → # Prepared StatementPisahkan kode SQL dari data dengan prepared statement di psql dan aplikasi.
Buka → # Least PrivilegeTerapkan prinsip hak paling kecil untuk user aplikasi dan operator.
Buka →Bab 24 Administrasi PostgreSQL
Kelola konfigurasi server dengan postgresql.conf dan ALTER SYSTEM.
Buka → # File Konfigurasi PostgreSQLKenali postgresql.conf, pg_hba.conf, pg_ident.conf, dan urutan pembacaannya.
Buka → # Connection ManagementKelola jumlah koneksi: max_connections, timeout, dan state idle.
Buka → # Process dan Activity MonitoringAmati aktivitas lewat pg_stat_activity dan identifikasi koneksi yang menyumbat.
Buka → # System CatalogJelajahi pg_catalog: metadata seluruh objek hidup di tabel sistem.
Buka → # Information SchemaBaca metadata standar SQL dari information_schema untuk query lintas database.
Buka → # Server LogBaca log server PostgreSQL dan kenali pesan penting yang perlu ditindak.
Buka → # Logging ConfigurationAtur log: format, rotasi, log_statement, dan log_min_duration_statement.
Buka → # Connection PoolingPahami connection pooling dan opsi PgBouncer serta Odyssey.
Buka → # VACUUM dan ANALYZEJalankan maintenance rutin: VACUUM, ANALYZE, dan REINDEX secara sadar.
Buka → # Database MaintenanceRawat database jangka panjang: bloat, reindex, dan pemeriksaan integritas.
Buka → # Monitoring dan AlertingSusun monitoring dengan pg_stat views dan exporter untuk Prometheus.
Buka →Bab 25 Backup dan Recovery
Pahami tujuan backup, RPO, RTO, dan pilihan strategi untuk PostgreSQL.
Buka → # Logical BackupKonsep backup logis: mengekspor objek dan data sebagai SQL atau format custom.
Buka → # pg_dumpCadangkan satu database dengan pg_dump beserta format dan opsinya.
Buka → # pg_dumpallCadangkan seluruh cluster termasuk role dan tablespace dengan pg_dumpall.
Buka → # pg_restorePulihkan backup format custom dengan pg_restore dan pemilihan objek.
Buka → # Physical BackupKonsep backup fisik: menyalin file data apa adanya beserta konsistensinya.
Buka → # Base BackupBuat base backup dengan pg_basebackup untuk fondasi recovery.
Buka → # Write-Ahead LoggingPahami WAL: jaminan durability dan bahan bakar point-in-time recovery.
Buka → # Point-in-Time RecoveryPulihkan database ke menit tertentu dengan WAL replay dan recovery_target.
Buka → # Backup SchedulingSusun jadwal backup berlapis harian dan mingguan dengan retensi yang jelas.
Buka → # Menguji Prosedur RecoveryUji pemulihan secara rutin, karena backup yang tak teruji bukan backup.
Buka →Bab 26 Replication dan High Availability
Pahami tujuan replikasi: ketahanan, skala baca, dan distribusi data.
Buka → # Streaming ReplicationBangun replikasi fisik dengan WAL streaming antara primary dan standby.
Buka → # Physical vs Logical ReplicationBandingkan dua model replikasi PostgreSQL dan kapan masing-masing dipilih.
Buka → # Replication SlotCegah kehilangan WAL dengan replication slot dan kelola risikonya.
Buka → # Logical ReplicationReplikasi level tabel dengan publication dan subscription.
Buka → # Replication LagUkur dan kendalikan jeda replikasi sebelum membebani pengguna.
Buka → # Read ReplicaPergunakan standby untuk beban baca dan pahami batas konsistensinya.
Buka → # Konsep FailoverPahami promosi standby, split brain, dan keputusan failover.
Buka → # Arsitektur High AvailabilitySusun arsitektur HA dengan Patroni dan komponen pendukungnya.
Buka →Bab 27 Partitioning dan Scalability
Pahami memecah tabel besar menjadi partisi yang lebih mudah dikelola.
Buka → # Range PartitioningPartisi berdasarkan rentang nilai, pola paling umum untuk data waktu.
Buka → # List PartitioningPartisi berdasarkan daftar nilai eksplisit seperti kategori dan region.
Buka → # Hash PartitioningDistribusikan baris merata dengan partisi hash tanpa rentang yang bermakna.
Buka → # Partition PruningPastikan planner hanya menyentuh partisi yang relevan untuk query kita.
Buka → # Partitioned IndexBuat index pada partitioned table, dari index partisi hingga index global.
Buka → # Partition MaintenanceOtomatiskan pembuatan partisi baru dan pelepasan partisi lama.
Buka → # InheritanceKenali inheritance tabel warisan historis sebelum era declarative partitioning.
Buka → # Strategi ScalabilityPeta jalan skala PostgreSQL: index, partitioning, pooling, replikasi, dan batasnya.
Buka →Bab 28 Extension dan Ekosistem
Pahami mekanisme extension: control file, script, dan objek yang ikut terpasang.
Buka → # Memasang dan Mengaktifkan ExtensionKelola extension dengan CREATE EXTENSION, versi, dan availability-nya.
Buka → # pg_stat_statementsTelusuri statistik seluruh query dengan extension standar de facto profiling.
Buka → # pgcryptoEnkripsi dan hashing di dalam database dengan pgcrypto.
Buka → # UUID FunctionsHasilkan UUID di database dengan gen_random_uuid dan extension uuid-ossp.
Buka → # postgres_fdwQuery database PostgreSQL lain lewat foreign data wrapper postgres_fdw.
Buka → # dblinkEksekusi koneksi ad-hoc antar database dengan dblink dan keterbatasannya.
Buka → # PostGISKenali PostGIS, extension geospasial paling kuat di dunia open source.
Buka → # Mengevaluasi ExtensionTilik extension sebelum dipakai: maintainer, kompatibilitas, dan lisensi.
Buka →Bab 29 Integrasi Aplikasi
Sambungkan PHP ke PostgreSQL dengan PDO dan parameterized query.
Buka → # PostgreSQL dan GoSambungkan Go ke PostgreSQL dengan pgx dan pola idiomatiknya.
Buka → # PostgreSQL dan PythonSambungkan Python ke PostgreSQL dengan psycopg dan context manager.
Buka → # PostgreSQL dan Node.jsSambungkan Node.js ke PostgreSQL dengan node-postgres dan pooling.
Buka → # Database Connection PoolingKelola pool koneksi di sisi aplikasi dan koordinasikan dengan PgBouncer.
Buka → # Prepared Statement dalam AplikasiPakai prepared statement lintas driver untuk keamanan dan performa.
Buka → # Database MigrationKelola perubahan skema secara versioned dengan pola migrasi dan tool-nya.
Buka → # Database SeedingIsi data awal lingkungan pengembangan dan testing dengan seeding yang deterministik.
Buka → # Menangani Database ErrorTangkap dan klasifikasikan error PostgreSQL dari sisi aplikasi dengan SQLSTATE.
Buka → # Transaksi dalam AplikasiKelola transaksi dari kode aplikasi dengan commit rollback dan retry.
Buka →Bab 30 Advanced SQL
Selesaikan traversal hierarki dan graf dengan recursive CTE berjenjang.
Buka → # Lateral JoinBawa logika per baris ke dalam FROM dengan LATERAL untuk top-N dan ekspansi data.
Buka → # Window Function LanjutanGabungkan window frame, nested window, dan pola analitik bertingkat.
Buka → # Advanced CTERantai CTE majemuk, CTE rekursif bertingkat, dan MATERIALIZED hint-nya.
Buka → # Upsert PatternPola penulisan idempoten dengan ON CONFLICT untuk sync dan ingest.
Buka → # Gap and Island ProblemDeteksi jeda dan pulau pada deret data dengan window function.
Buka → # Analytical QuerySusun query analitik berlapis untuk funnel, kohort, dan agregasi bertingkat.
Buka → # Dynamic SQLBangun dan jalankan SQL pada runtime dengan EXECUTE yang aman dari injection.
Buka → # Query Pattern untuk Data AnalisisKumpulan pola siap pakai: cohort, retensi, YoY, dan moving metric.
Buka →Bab 31 Pengujian dan Debugging
Susun pengujian query dengan data uji yang deterministik dan hasil yang diketahui.
Buka → # Pengujian Integritas DataBuktikan constraint bekerja: uji positif negatif dan batas nilai.
Buka → # Menguji TransaksiUji rollback, isolation, dan anomali konkurensi dengan dua koneksi paralel.
Buka → # Debugging SQLDebugging bertahap: bagi query, RAISE NOTICE, dan EVALUASI ekspresi per bagian.
Buka → # Menguji Function dan TriggerUji function dengan kasus batas dan trigger dengan perubahan data terkontrol.
Buka → # Regression TestingSusun regression test SQL yang dijalankan ulang setiap skema berubah.
Buka → # Troubleshooting PostgreSQLDiagnosis masalah umum: koneksi gagal, query menggantung, dan disk penuh.
Buka →Bab 32 Proyek
Bangun database perpustakaan lengkap: katalog buku, keanggotaan, sirkulasi pinjam-kembali, dan laporan.
Lihat proyek → # Proyek: Database Inventaris BarangBangun database inventaris gudang: barang, kategori, stok, mutasi, dan laporan persediaan.
Lihat proyek → # Proyek: Database PenjualanBangun database penjualan ritel: produk, pelanggan, transaksi penjualan, dan analisis penjualan.
Lihat proyek → # Proyek: Database Keuangan PribadiBangun database keuangan pribadi: transaksi pemasukan-pengeluaran, kategori, anggaran, dan laporan bulanan.
Lihat proyek → # Proyek: Database Analisis Data PertanianBangun database analitik pertanian: hasil panen, harga komoditas, dan analisis produksi-harga.
Lihat proyek → # Proyek: REST API DatabaseRancang database backend REST API: skema, query endpoint, transaksi validasi, dan optimasi query.
Lihat proyek →Bab 33 Sumber Belajar
Navigasikan dokumentasi resmi PostgreSQL secara efektif untuk menemukan jawaban cepat.
Buka → # Referensi SQLKumpulan referensi cepat perintah SQL PostgreSQL yang paling sering dipakai.
Buka → # Panduan PraktikKurasi buku, tutorial, dan latihan lanjutan untuk pendalaman PostgreSQL.
Buka → # TroubleshootingIndeks gejala masalah PostgreSQL beserta langkah diagnosisnya.
Buka → # GlosariumKamus istilah PostgreSQL dan relational database yang dipakai di seluruh Course ini.
Buka →