Instalasi PostgreSQL
Gunakan Docker untuk development: docker run -d -e POSTGRES_PASSWORD=mysecretpassword -p 5432:5432 postgres:15. Untuk production, pertimbangkan managed service (RDS, Cloud SQL, Supabase).
Desain Schema yang Baik
- Normalisasi hingga 3NF untuk menghindari redundansi
- Gunakan UUID atau BIGSERIAL untuk primary key
- Timestamp dengan timezone (TIMESTAMPTZ) selalu
- Nullable vs NOT NULL: lebih baik NOT NULL dengan default
- Foreign key dengan proper ON DELETE action
Indexing Strategy
Index pada kolom yang sering di-query di WHERE, JOIN, dan ORDER BY. Terlalu banyak index memperlambat INSERT/UPDATE. Gunakan EXPLAIN ANALYZE untuk memverifikasi index digunakan.
Query Optimization
Hindari SELECT *, gunakan pagination dengan LIMIT/OFFSET atau keyset pagination, dan manfaatkan CTE (Common Table Expressions) untuk query kompleks yang readable.
Connection Pooling
Gunakan PgBouncer atau built-in pooling di Supabase/RDS untuk mengelola koneksi. PostgreSQL tidak dirancang untuk ribuan koneksi simultan.
Backup dan Monitoring
Jadwalkan backup dengan pg_dump atau Point-in-Time Recovery. Monitor dengan pg_stat_statements untuk menemukan slow queries.