PostgreSQL 19 (2026): Graph Query, REPACK CONCURRENTLY, dan ON CONFLICT DO SELECT — Fitur Enterprise yang Wajib Diketahui
PostgreSQL 19 hadir dengan SQL/PGQ graph query native, REPACK CONCURRENTLY untuk maintenance zero-downtime, dan ON CONFLICT DO SELECT upsert atomik. Tiga fitur enterprise yang mengubah PostgreSQL menjadi platform data terpadu untuk AI, graph, dan high-churn workload.
PostgreSQL 19 hadir di tengah hiruk pikuk perkembangan AI generatif dan beban kerja data yang semakin kompleks. Rilis mayor ini — yang masuk Beta 2 pada Juli 2026 dengan GA dijadwalkan September/October — membawa tiga fitur besar yang mengubah cara tim engineering mengelola data skala enterprise: SQL/PGQ untuk property graph query, REPACK CONCURRENTLY untuk maintenance zero-downtime, dan ON CONFLICT DO SELECT untuk upsert atomik. Bagi arsitek data di Indonesia yang menangani sistem skala besar — dari e-commerce hingga fintech — PostgreSQL 19 bukan sekadar upgrade versi, melainkan fondasi infrastruktur yang memungkinkan konsolidasi stack tanpa mengorbankan performa.
SQL/PGQ: Graph Query Native Tanpa Database Terpisah
Sebelum PostgreSQL 19, query graf memerlukan database khusus seperti Neo4j atau Apache Age. Kini SQL/PGQ (Property Graph Queries) memungkinkan developer menulis query graf langsung di atas tabel relasional yang sudah ada. Data tetap disimpan dalam tabel standar, tetapi diekspos sebagai graf read-only view untuk operasi traversal, pattern matching, dan path finding.
-- Membuat property graph dari tabel existing
CREATE PROPERTY GRAPH pg_catalog.pg_graph
VERTEX TABLES (
users LABEL User PROPERTIES (id, name, email),
orders LABEL Order PROPERTIES (id, total, created_at)
)
EDGE TABLES (
user_orders
SOURCE User(id) REFERENCES users(id)
DESTINATION Order(user_id) REFERENCES orders(id)
LABEL PLACED
);
Query traversal kemudian menjadi ekspresif dan standar SQL:
-- Cari semua order yang ditempatkan oleh user dalam 2 hop
SELECT * FROM GRAPH_TABLE (pg_catalog.pg_graph
MATCH (u:User)-[:PLACED]->(o:Order)
WHERE u.id = 42
COLUMNS (o.id, o.total, o.created_at)
);
Keuntungan strategis: tim tidak perlu menjaga cluster database graf terpisah, mengurangi kompleksitas operasional dan biaya lisensi. Untuk kasus fraud detection, rekomendasi produk, atau analisis jaringan sosial — PostgreSQL 19 menjadikan graph query sebagai first-class citizen.
REPACK CONCURRENTLY: Reclaim Space Tanpa Lock Tabel
Bloat tabel akibat UPDATE/DELETE berulang merupakan musuh performa lama. VACUUM FULL mengunci tabel ekslusif — tidak layak untuk produksi 24/7. REPACK CONCURRENTLY (direvisi dari pg_repack ekstensi) membangun ulang tabel dan index secara online menggunakan replication slot untuk melacak perubahan selama rebuild.
-- Reclaim space pada tabel besar tanpa downtime
REPACK CONCURRENTLY orders;
-- Termasuk index sekaligus
REPACK CONCURRENTLY orders INCLUDING INDEXES;
Berbeda dengan REINDEX CONCURRENTLY yang hanya memperbaiki index, REPACK menata ulang heap tuple — mengembalikan disk space ke OS dan meningkatkan sequential scan performance. Internally, PostgreSQL membuat tabel baru, menyalin data dengan snapshot terisolasi, lalu menukar relfilenode secara atomik. Cocok untuk tabel yang mengalami churn tinggi: order tables, event logs, session stores.
Catatan Produksi: REPACK CONCURRENTLY memerlukan
wal_level = replicaataulogicaldan memakai replication slot. Pastikanmax_replication_slotscukup dan monitor disk space selama operasi — tabel sementara membutuhkan ruang tambahan ~1x ukuran tabel asli.
ON CONFLICT DO SELECT: Upsert Atomik Tanpa Race Condition
Pola "insert atau ambil existing" sejak PostgreSQL 9.5 memerlukan dua round-trip: INSERT ... ON CONFLICT DO NOTHING lalu SELECT. Ini menciptakan race condition window di mana concurrent session bisa memasukkan row yang sama. ON CONFLICT DO SELECT mengatasi ini dalam satu statement atomik.
-- Sebelum PostgreSQL 19 (race condition)
INSERT INTO users (email, name) VALUES ('[email protected]', 'Ali')
ON CONFLICT (email) DO NOTHING;
SELECT * FROM users WHERE email = '[email protected]';
-- PostgreSQL 19: atomik, single round-trip
INSERT INTO users (email, name) VALUES ('[email protected]', 'Ali')
ON CONFLICT (email) DO SELECT * FROM users WHERE email = '[email protected]';
-- Dengan UPDATE kondisional
INSERT INTO counters (key, val) VALUES ('api_hits', 1)
ON CONFLICT (key) DO UPDATE SET val = counters.val + 1
RETURNING *;
Fitur ini krusial untuk idempotency key pada payment gateway, rate limiting distributed, dan cache-aside pattern. Mengeliminasi network round-trip mengurangi latency tail dan menyederhanakan application logic secara drastis.
Parallel Autovacuum & GROUP BY ALL: Performa Tanpa Tuning Manual
PostgreSQL 19 juga membawa parallel autovacuum — multiple worker memproses tabel besar secara bersamaan, mengurangi vacuum lag pada database berukuran terabyte. GROUP BY ALL memungkinkan agregasi multi-level dalam satu query tanpa UNION:
-- Agregasi multi-level dalam satu pass
SELECT region, city, product_category,
SUM(sales) AS total_sales,
COUNT(*) AS txn_count
FROM sales_fact
GROUP BY ALL;
-- Menghasilkan: (region, city, category), (region, city), (region), ()
Kombinasi ini berarti DBA menghabiskan lebih sedikit waktu untuk maintenance manual dan lebih banyak waktu untuk value-add engineering.
Strategi Adopsi untuk Tim Indonesia
Untuk organisasi yang menjalankan PostgreSQL 16/17 di production, rencana upgrade ke 19 sebaiknya:
- Q3 2026: Test Beta 2/3 di staging dengan workload production mirror. Validasi REPACK CONCURRENTLY pada tabel terbesar.
- Q4 2026: Upgrade canary ke managed service (AWS RDS, CloudSQL, Neon, Supabase) yang biasanya cepat menyediakan versi baru.
- 2027: Migrasi graph workload dari Neo4j/Age ke SQL/PGQ; dekomisi infra graf terpisah.
Managed PostgreSQL provider modern (Neon, Supabase, Timescale, Cloudflare D1) sudah mendukung pgvector 0.8+ dan siap untuk PostgreSQL 19 GA. Konsolidasi vector search + graph query + relational dalam satu cluster menjadi realistic untuk pertama kalinya.
PostgreSQL 19 menandai titik balik: database relasional terbuka tidak lagi sekadar "cukup baik" untuk beban kerja modern — ia menjadi pilihan arsitektur yang superior untuk AI-native, graph-heavy, dan high-churn workload sekaligus. Tim yang mengadopsi awal akan memetik keuntungan operasional bertahun-tahun.