Teorema CAP dalam Praktik

Saat sebuah sistem database tersebar di beberapa server, jaringan antar server suatu saat pasti terputus — itu keniscayaan, bukan kemungkinan. Teorema CAP menyatakan pada saat pemutusan itu terjadi kamu hanya bisa memilih dua dari tiga: konsistensi, ketersediaan, dan toleransi partisi. Karena toleransi partisi wajib ada, pilihan nyatanya menyempit: sistem CP menolak melayani agar data tidak berbeda antar server (cocok untuk saldo), sistem AP tetap melayani meski data sementara berbeda (cocok untuk katalog atau feed). MongoDB secara bawaan condong ke CP, sedangkan Cassandra condong ke AP.

👀 Contoh dulu

// membaca dari primary: konsisten, tapi gagal saat primary tidak terjangkau
db.saldo.find({ userId: 7 }).readPref('primary');

Hasilnya: [ { _id: ObjectId('66b2...'), userId: 7, jumlah: 250000 } ]

💡 Membaca dari secondary menaikkan ketersediaan, tapi datanya bisa tertinggal beberapa saat — itulah harga pilihan AP.

📝 Sekarang giliranmu

Data katalog boleh sedikit tertinggal asalkan situs tetap bisa dibuka (pilihan AP). Tulis query MongoDB pada koleksi katalog yang mengambil semua dokumen dengan preferensi baca dari replika sekunder memakai .readPref('secondary').

Preview