Lo lagi bikin project baru. Mikir bentar: pake database apa ya?

Tiba-tiba inget orang-orang pada pake MongoDB - “katanya scalable, modern, gak ribet”. Tapi data lo semuanya relasional, tabelnya udah jelas hubungan satu sama lain. Atau sebaliknya: lo pake PostgreSQL buat nyimpen JSON yang strukturnya gak jelas, padahal performa read-write-nya kalah sama document store.

Gue juga pernah di posisi itu. Database selection anxiety itu nyata - dan salah pilih artinya migrasi data yang super sakit.

Apalagi sekarang tren Vibe Coding makin naik. Lo generate code pake AI, database yang lo pilih ngaruh langsung ke kualitas output si AI. Makin penting buat milih dengan tepat dari awal.

Kenapa Lo Perlu Mikir Ulang Soal Pilihan Database

Masalahnya bukan database-nya jelek - masalahnya ada di cara milih:

Hype-driven development. Orang pilih database karena lagi trend, bukan karena cocok sama pola datanya.

PostgreSQL underutilized. Dipake cuma buat SELECT * dan JOIN doang, padahal fiturnya tuh banyak banget. JSONB, GIN index, recursive CTE - sayang kalo gak dimanfaatin.

MongoDB dipake buat data relasional. Akhirnya malah implementasi join manual di kode aplikasi. Ujung-ujungnya performa lebih jelek daripada pake SQL database dari awal.

MySQL dianggap “jadul”. Padahal masih jadi backbone banyak sistem skala gede. MySQL 8.0+ udah evolved banget.

Belum lagi kalo lagi Vibe Coding. Lo generate code pake AI, database choice ngaruh ke seberapa bagus output si AI - karena model AI punya exposure yang beda-beda ke tiap database.

1. MySQL - Si Paling Tau Diri

MySQL itu workhorse sejati. Gak perlu banyak gaya, tapi hasilnya konsisten.

Kapan pake MySQL

  • Data lo straightforward relasional
  • Butuh replikasi yang gampang di-setup
  • Ekosistem mature - dari CMS sampe ERP, semuanya support
  • Lo pengen sesuatu yang “works out of the box” tanpa banyak konfigurasi

Tips dari gue

MySQL 8.0+ (rilis 2018) itu game changer buat yang selama ini nganggep MySQL “kurang modern”. Fitur yang dulu cuma ada di PostgreSQL sekarang ada di sini: Common Table Expressions (CTE), window functions, dan JSON data type. Cek aja dokumentasi resminya - dev.mysql.com/doc/refman/8.0/en/cte.html.

Fun Fact

Nama MySQL bukan berarti “My SQL” punya gue. Dinamai dari My - nama anak perempuan Michael “Monty” Widenius, co-founder MySQL AB. Kakaknya juga ada yang namanya Max, tapi MaxDB itu bukan dari anaknya ya - itu rebranding dari SAP DB.

Jadi secara harfiah, MySQL itu “database-nya My”. Manis banget ternyata asal-usulnya.

Kekurangan yang perlu lo tau

  • Masih ketinggalan di fitur advanced kayak materialized views dan exclusion constraints yang udah ada di PostgreSQL
  • Ekstensi dan tipe data kustom terbatas
  • JSON support ada dengan internal binary format, tapi indexing-nya gak seekstensif JSONB di PostgreSQL (gak ada GIN-style index untuk key/value queries)

Dalam konteks Vibe Coding

AI model dilatih dengan banyak banget codebase LAMP stack - MySQL + PHP + Apache. Jadi kalo lo generate query MySQL pake AI, hasilnya cenderung lebih reliable. Tapi hati-hati: AI bisa generate query yang functional tapi gak optimal secara indexing. Selalu cek EXPLAIN dulu sebelum deploy ke production.


2. PostgreSQL - Si Multitalenta

PostgreSQL itu kayak pisau Swiss Army-nya database. Mau diapain aja bisa.

Kapan pake PostgreSQL

  • Data lo kompleks, butuh query canggih (CTE, window functions, recursive queries)
  • Butuh JSON tapi dengan indexing yang proper - JSONB + GIN index bisa nandingin MongoDB
  • Ada kebutuhan GIS/spatial (PostGIS extension)
  • Lo suka ekstensi dan tipe data kustom
  • Butuh ACID compliance yang strict

Tips dari gue

JSONB di PostgreSQL itu salah satu fitur paling underrated. Dengan GIN index, lo bisa query field di dalam dokumen JSON hampir secepat query kolom biasa. Documentation resminya jelas banget soal ini - postgresql.org/docs/current/datatype-json.html.

Ini nge-blur the line between SQL dan NoSQL. Lo bisa punya fleksibilitas dokumen tanpa kehilangan relational integrity.

Fun Fact

Nama asli PostgreSQL itu cuma “Postgres” - kependekan dari Post-Ingres. Ingres adalah project database sebelumnya yang dibangun di UC Berkeley tahun 70an. Jadi Postgres itu artinya “project setelah Ingres”, bukan karena “lebih modern dari yang lain” ya.

Paper originalnya dari Michael Stonebraker tahun 1986 judulnya “The Design of Postgres” - masih bisa diakses di dsf.berkeley.edu.

Kekurangan yang perlu lo tau

  • Replikasi out-of-the-box dulu lebih ribet dari MySQL (sekarang udah lebih baik dengan streaming replication)
  • Ukuran instalasi lebih besar, resource usage lebih tinggi
  • Konfigurasi tuning lebih kompleks - butuh waktu buat belajar shared_buffers, work_mem, effective_cache_size, dll

Dalam konteks Vibe Coding

PostgreSQL itu sweet spot buat Vibe Coding. Kenapa? Karena AI model dilatih dengan banyak SQL query PostgreSQL (sintaksnya jadi gold standard SQL), plus JSONB buat fleksibilitas. Lo bisa start dengan data yang belum jelas skemanya pake JSONB, terus migrate ke kolom relasional pas udah stabil.

Trik dari gue: kalo lagi Vibe Coding, start pake PostgreSQL. Kalo stuck sama schema yang sering berubah, pake JSONB dulu di kolom metadata. Nanti kalo pola datanya udah jelas, pindahin ke kolom terpisah. AI bakal ngasih output query yang lebih baik karena sintaks PostgreSQL jadi referensi utama SQL modern.


3. MongoDB / NoSQL - Si Fleksibel Tapi Butuh Disiplin

MongoDB cocok kalo lo emang punya data yang gak bisa dipaksa masuk ke tabel relasional.

Kapan pake MongoDB

  • Data lo gak punya skema tetap - tiap dokumen bisa punya field yang beda
  • Butuh horizontal scaling yang native (sharding out-of-the-box)
  • Prototyping cepet - skema berubah tiap minggu
  • Data read-heavy dengan pola akses yang sederhana

Tips dari gue

Multi-document ACID transactions udah ada sejak MongoDB 4.0 (2018) untuk replica sets, dan 4.2 untuk sharded clusters. Tapi perlu diingat: transaksi di MongoDB gak semurah single-document operations. Ada performance trade-off yang signifikan.

Juga penting: NoSQL bukan berarti “no schema”. Lo tetep perlu application-level validation. Bedanya, skema di-enforce di level aplikasi, bukan di database. Kalo lupa, data lo bisa jadi berantakan dalam seminggu.

Fun Fact

Nama MongoDB berasal dari kata “humongous” - karena database ini dirancang buat handle data dalam skala gede banget. Format penyimpanannya juga bukan JSON biasa, tapi BSON (Binary JSON). BSON support tipe data tambahan yang gak ada di JSON standar: Date, Binary, ObjectId, dan lainnya.

Dokumentasi resminya ada di mongodb.com/docs/manual/reference/bson-types/.

Kekurangan yang perlu lo tau

  • JOIN gak native - lo harus manual di kode aplikasi atau pake $lookup aggregation (yang performanya gak sebagus JOIN di SQL)
  • Konsistensi data perlu effort ekstra. Kalo aplikasi lo butuh strong consistency, siap-siap ngurusin read concern, write concern, dan majority di replica sets
  • Ukuran storage lebih besar karena denormalisasi dan padding factor
  • Aggregation pipeline yang complex bisa bikin bingung - debugging more complex dari SQL

Dalam konteks Vibe Coding

Ini yang perlu hati-hati. AI model punya lebih sedikit training data untuk MongoDB queries dibanding SQL. Kalo lo minta AI generate aggregation pipeline yang rumit, ada kemungkinan hasilnya kelihatan bener tapi logic-nya salah. Misalnya: salah urutan $match sama $group, atau lupa index yang dibutuhin.

Tips: kalo Vibe Coding pake MongoDB, minta AI generate query satu langkah dulu. Tes tiap stage aggregation satu per satu. Jangan langsung nyusun pipeline 6 stage dalam sekali prompt.

Atau alternatifnya: pake PostgreSQL dengan JSONB. Lo dapet fleksibilitas dokumen tapi dengan SQL syntax yang lebih dikuasai AI.


4. Bonus: Vibe Coding & Database Choice

Istilah “Vibe Coding” dipopulerkan sama Andrej Karpathy (mantan kepala AI Tesla, co-founder OpenAI) di awal 2025. Intinya: coding sambil “nge-vibe” bareng AI, gak perlu mikirin syntax detail, fokus ke hasil akhir.

Tapi dalam konteks milih database, ada implikasi yang jarang dibahas:

Training Data Distribution

Model AI kayak GPT, Claude, Gemini dilatih dengan miliaran baris kode dari internet. Distribusinya gak merata:

  • SQL queries (PostgreSQL, MySQL) - paling banyak. Model bisa generate query kompleks dengan akurasi tinggi
  • MongoDB aggregation pipelines - lebih sedikit. Model tau basic $match dan $group, tapi bisa error di pipeline yang lebih advanced
  • Redis / Cassandra / other NoSQL - semakin niche, semakin sedikit training datanya

Artinya: kalo lo Vibe Coding, PostgreSQL adalah pilihan paling aman. AI cenderung generate query yang lebih akurat, lebih optimal, dan lebih jarang hallucinate dibanding database lain.

Strategi Vibe Coding dengan Database

Dari pengalaman gue, ini strategi yang work:

  1. Start dengan PostgreSQL - apapun projectnya. AI ngerti SQL, lo dapet ACID compliance
  2. Pake JSONB kalo skema belum jelas - fleksibel kayak NoSQL, tapi tetep bisa di-index dan di-query pake SQL
  3. Migrasi ke kolom terpisah kalo udah stabil - pola datanya udah ketauan, pindahin dari JSONB ke kolom biasa
  4. Baru pindah ke MongoDB kalo emang perlu - horizontal scaling native atau data bener-bener gak relasional

Yang Gak Boleh Dilakuin

Jangan start dengan MongoDB cuma karena “lagi trend” atau “scalable”. Gue pernah liat project yang mulai dengan MongoDB, 6 bulan kemudian migrasi ke PostgreSQL karena data ternyata relasional. Migrasi data dari NoSQL ke SQL itu sakitnya minta ampun.


5. Bonus Lain: Berapa Biaya Jalanin Database Ini di Cloud? (Jakarta Pricing)

Kalo lo deploy database di cloud - baik pake managed service (RDS, Cloud SQL) atau self-managed di VM - biayanya beda-beda tergantung provider dan region. Untuk pembaca di Indonesia, Jakarta jadi region utama.

Berikut perbandingan on-demand pricing buat AWS RDS dan GCP Cloud SQL di Jakarta, tanpa komitmen atau diskon apapun.

Disclaimer: harga on-demand per Juni 2026, dihitung dalam USD. Belum termasuk diskon commit (RDS RI / GCP CUD). Selalu cek pricing calculator resmi untuk angka akurat.

Tabel Perbandingan (Managed MySQL / PostgreSQL)

SpesifikasiAWS RDS (ap-southeast-3)GCP Cloud SQL (asia-southeast2)
Dev/Staging (1-2 vCPU, ~4GB RAM)t3.medium: ~$0.104/jam ($76/bln)n1-standard-1: ~$0.068/jam ($49/bln)
Prod Kecil (2 vCPU, ~8GB RAM)t3.large: ~$0.208/jam ($152/bln)n1-standard-2: ~$0.135/jam ($99/bln)
Prod Berat (2 vCPU, 16GB RAM)r6g.large: ~$0.255/jam ($186/bln)n/a - butuh custom spec
Storage SSDgp3: $0.138/GB/bulanSSD: $0.17/GB/bulan
Backup (excess)$0.095/GB/bulan$0.08/GB/bulan

Catatan penting:

  • GCP charge vCPU dan memory terpisah, sementara AWS include memory dalam harga instance
  • GCP MySQL dan PostgreSQL harganya sama karena pricing based on vCPU + memory, bukan engine
  • Storage dan backup costs bisa jadi hidden cost yang gak keliatan di awal - apalagi kalo data lo gede

Kalo Pake MongoDB Atlas di Jakarta

MongoDB Atlas juga available di Jakarta (deploy di atas infrastruktur AWS atau GCP). Harganya beda tier:

  • M2 (shared): ~$9/bln - cocok buat dev kecil
  • M10 (dedicated, 2GB): ~$57/bln
  • M20 (dedicated, 4GB): ~$144/bln
  • M30 (dedicated, 8GB): ~$389/bln

Yang perlu diingat: MongoDB Atlas pricing udah include storage, backup, dan high availability. Jadi walau keliatan lebih mahal per GB, total cost of ownership bisa lebih kompetitif karena gak ada add-on cost.

Tips Nghemat Biaya Database di Cloud

Dari pengalaman gue ngurus production database:

  1. Pake Reserved Instance / Committed Use Discount - RDS RI 1 tahun bisa hemat 30-40%. GCP CUD 1 tahun juga sekitar 25-30%. Lumayan.

  2. Storage alert dari awal - Jangan sampe storage full dan kena auto-scale yang gak terkontrol. Set CloudWatch / Cloud Monitoring alert di 80%.

  3. Pilih storage yang tepat - gp3 di AWS bisa diatur IOPS terpisah dari storage size. Gak perlu over-provision storage cuma buat dapet IOPS tinggi.

  4. Hapus backup lama - Default backup retention 7 hari biasanya cukup. Kalo lo set 30 hari tanpa sadar, biaya backup bisa lebih mahal dari database-nya sendiri.

  5. Kalo budget ketat: self-managed di VM - Hosting MySQL/PostgreSQL di EC2/GCE bisa lebih murah estimasi 40-50% dibanding managed service (ini estimasi umum, tergantung konfigurasi dan beban kerja). Tapi lo harus urus sendiri backup, patching, monitoring, dan failover. Hitung dulu cost engineering time sebelum ambil jalur ini.


Gak ada database yang “terbaik” - yang ada paling cocok buat use case lo.

MySQL kalo lo butuh something that just works, mature ecosystem, replikasi gampang. Jangan remehin - 8.0+ udah modern banget.

PostgreSQL kalo lo mau fleksibilitas maksimal. JSONB buat schema flexibility, SQL kuat buat relational data. Ini the best of both worlds.

MongoDB kalo data lo bener-bener gak relasional dan butuh scaling horizontal native. Tapi ingat: NoSQL bukan berarti no discipline.

Apalagi kalo lo Vibe Coding - pilihan database langsung ngaruh ke kualitas output AI lo. PostgreSQL itu sweet spot: AI jago generate SQL-nya, JSONB kasih fleksibilitas kalo data berubah-ubah.

Pahami pola data lo dulu, baru pilih tools. Jangan kebalik. Dan kalo ragu? Start dengan PostgreSQL. Lo gak akan nyesel.

Terima kasih sudah meluangkan waktu buat baca artikel ini, semoga ada manfaat yang bisa diambil. 🐾