~/VibeHandbook
PDF Gratis

Bab 14 · 01

Tiga Bentuk Penyimpanan Data

Sebagian besar basis data terbagi dalam tiga keluarga. Kamu tidak perlu menghafal produk-produknya — kamu perlu mengenali bentuk mana yang cocok dengan masalahmu.

TipeContohPaling cocok untukTrade-off
Relasional ()PostgreSQL, MySQL, SQLiteData terstruktur dengan relasi; apa pun yang berkaitan dengan uang atau butuh akurasi tinggiKamu harus merancang skema di awal; menskalakan penulisan (writes) dalam jumlah sangat besar lebih sulit
Dokumen / MongoDB, Firestore, DynamoDBData fleksibel atau bersarang, iterasi cepat, bentuk record yang bervariasiMudah menghasilkan data yang tidak konsisten; relasi dan pelaporan jadi canggung
Key-ValueRedis, Memcached, Cloudflare KVCaching, sesi, penghitung, pencarian cepat berdasarkan key yang sudah diketahuiTidak bisa query berdasarkan isi; biasanya bukan sumber kebenaran utama (source of truth)

Ketiga bentuk ini menyimpan data dengan cara yang benar-benar berbeda. Bayangkan ketiganya berdampingan:

  RELATIONAL (SQL)          DOCUMENT (NoSQL)         KEY-VALUE
  rows + columns            self-contained blobs     one key → one value
  ┌────┬───────┬──────┐     ┌──────────────────┐     ┌─────────┬─────────┐
  │ id │ email │ name │     │ {                │     │ key     │ value   │
  ├────┼───────┼──────┤     │   id, email,     │     ├─────────┼─────────┤
  │ 1  │ a@... │ Ana  │     │   name,          │     │ session │ "x9f2"  │
  │ 2  │ b@... │ Bob  │     │   posts: [ ... ] │     │ count   │ "42"    │
  └────┴───────┴──────┘     │ }                │     └─────────┴─────────┘
  tables reference          └──────────────────┘     no querying inside —
  each other                everything nested        look up by key only

Bayangkan basis data relasional sebagai kumpulan spreadsheet yang tahu cara saling merujuk satu sama lain. Bahasa yang kamu pakai untuk berbicara padanya adalah SQL (Structured Query Language). Pilihan default yang baik untuk 90% proyek: mulailah dengan basis data relasional (Postgres). Ia matang, dapat diprediksi, menegakkan struktur, dan menangani relasi yang pasti akan tumbuh di aplikasi sungguhan. Gunakan document store ketika datamu benar-benar tidak berbentuk tetap, dan key-value store sebagai lapisan pendukung (caching), bukan penyimpanan utamamu.

Jebakan yang harus dihindari adalah memilih berdasarkan "vibe" atau kesan sesaat. "NoSQL (basis data yang tidak menggunakan tabel SQL — mereka menyimpan record yang fleksibel dan bebas bentuk) lebih mudah diskalakan" hanya benar untuk sekumpulan masalah sempit yang jarang dihadapi kebanyakan aplikasi, dan bahkan saat itu pun harganya adalah melepas jaminan konsistensi yang membuat data bisa dipercaya. Pilih bentuk yang sesuai dengan data-mu, bukan yang terdengar paling keren di video system-design. Kalau ragu, relasional adalah pilihan aman — kamu selalu bisa menambah atau document store nanti, tapi mengurai model data NoSQL yang sudah kusut itu menyakitkan.

Mau versi offline?

Unduh seluruh buku sebagai PDF atau EPUB — gratis.