Episode ini membandingkan database relasional dan NoSQL dalam konteks aplikasi Node.js: karakteristik SQL dengan transaksi ACID, model document NoSQL yang fleksibel, serta pertimbangan memilih berdasarkan bentuk data dan pola akses aplikasi.

Aplikasi nyata hampir selalu menyimpan data, dan Node.js bisa berhubungan dengan hampir semua database. Pertanyaan pertama yang harus dijawab sebelum menulis kode: database mana yang tepat untuk masalah ini? Jawabannya jarang tunggal — banyak aplikasi memakai lebih dari satu jenis database.
Episode 13 membangun kerangka berpikir untuk memilih: karakteristik database relasional berbasis SQL dengan transaksi ACID, karakteristik database NoSQL dengan model document yang fleksibel, dan pertimbangan praktis saat keduanya dipakai dari aplikasi Node.js. Kita belum menulis koneksi — itu tugas episode 14.
Database relasional menyimpan data dalam tabel dengan baris dan kolom, saling terhubung lewat kunci asing. PostgreSQL, MySQL, dan SQLite adalah contoh paling umum. Keunggulan utamanya adalah integritas: struktur didefinisikan dulu, dan database menegakkan aturannya.
psql -U postgres -d app_db -c "CREATE TABLE pengguna (id SERIAL PRIMARY KEY, email TEXT UNIQUE NOT NULL, nama TEXT NOT NULL);"Perintah psql di atas membuat tabel pengguna dengan kolom id, email, dan nama — constraint UNIQUE NOT NULL memastikan tidak ada email ganda atau kosong. Inilah ciri relasional: data tidak bisa masuk jika melanggar skema.
Kekuatan utama database relasional adalah transaksi dengan sifat ACID:
Pertimbangkan transfer uang: pengurangan di satu rekening dan penambahan di rekening lain harus terjadi bersama-sama. Sifat ini membuat database relasional tetap pilihan utama untuk sistem keuangan, order, dan data yang wajib konsisten.
Database NoSQL hadir dalam beberapa bentuk: document (MongoDB), key-value (Redis), wide-column (Cassandra), dan graph (Neo4j). Yang paling sering dipakai bersama Node.js adalah document database karena menyimpan JSON secara alami:
const pengguna = {
nama: "Arman",
email: "arman@contoh.com",
alamat: { kota: "Bandung", negara: "Indonesia" },
hobi: ["coding", "membaca"],
};Perhatikan perbedaannya dengan tabel: dokumen bisa punya struktur yang berbeda-beda, termasuk field bertingkat seperti alamat dan array seperti hobi. Karena Node.js berbahasa JSON, data bisa disimpan dan dibaca hampir tanpa konversi — inilah alasan MongoDB lama populer di ekosistem Node.js.
NoSQL cocok untuk data yang skemanya berubah cepat, bentuknya tidak teratur, atau volume dan kecepatan tulisnya sangat tinggi. Contoh: log event, profil pengguna dengan atribut dinamis, katalog produk dengan spesifikasi berbeda-beda, dan data real-time.
Keputusan database tidak datang dari tren, tapi dari kebutuhan. Tanyakan tiga hal:
Jawaban jujur atas tiga pertanyaan ini hampir selalu mengarahkan ke pilihan yang tepat. Sangat umum melihat aplikasi Node.js memakai PostgreSQL sebagai sumber kebenaran dan Redis sebagai cache — keduanya untuk tugas berbeda.
Perbatasan antara relasional dan NoSQL semakin kabur. PostgreSQL kini mendukung tipe jsonb untuk data semi-terstruktur, sementara MongoDB mendukung transaksi multi-dokumen dan index sekunder. Pilihan terbaik sering berupa kombinasi — yang penting kalian paham kekuatan dasar masing-masing.
Driver dan ORM membuat perbedaan keduanya tidak terasa saat menulis kode. Query SQL dikirim lewat driver seperti pg, sementara MongoDB dipakai lewat klien resmi mongodb — keduanya dipanggil dari bahasa JavaScript yang sama:
import pg from "pg";
const pool = new pg.Pool({ connectionString: process.env.DATABASE_URL });
const hasil = await pool.query("SELECT * FROM pengguna WHERE id = $1", [1]);
console.log(hasil.rows[0]);pool.query("SELECT * FROM pengguna WHERE id = $1", [1]) mengirim parameterized query ke PostgreSQL. Perhatikan placeholder $1 yang mencegah injeksi — pola yang akan kita pertahankan di episode 14 dan 20.
Yang penting di episode ini bukan sintaks driver-nya, melainkan keputusan arsitektur di belakangnya: memilih relasional atau NoSQL menentukan bentuk skema, cara query, dan strategi skalanya. Keputusan ini sebaiknya diambil sebelum kode ditulis banyak, karena mengganti database di tengah jalan sangat mahal.
Di episode 14 kita akan mengambil PostgreSQL sebagai contoh dan menghubungkannya ke aplikasi Node.js. Pola yang dipakai — connection string, pooling, dan query — berlaku untuk hampir semua driver.
Inti yang harus dibawa pulang:
jsonb dan MongoDB dengan transaksi memudarkan batas.Di episode 14 selanjutnya kita akan membahas koneksi database dengan driver atau ORM — memakai driver pg dengan connection pool, membandingkannya dengan ORM Prisma, mengelola connection string lewat environment, dan menjalankan migration. Kalian akan menghubungkan Node.js ke database sungguhan.