NoSQL
Memahami database NoSQL dan penggunaannya dalam pengembangan modern
Apa itu NoSQL
- Not Only SQL: database yang tidak menggunakan skema tabel tradisional
- Dirancang untuk fleksibilitas, scale horizontal, dan data yang tidak terstruktur
- Cocok untuk aplikasi modern dengan data yang bervariasi
MongoDB: Document Store
Dokumen
- Data disimpan sebagai dokumen BSON mirip JSON
- Setiap dokumen bisa memiliki struktur berbeda dalam koleksi yang sama
- Dokumen diidentifikasi dengan
_idunik otomatis
Koleksi
- Setara dengan tabel di database relasional
- Tidak memerlukan skema tetap, setiap dokumen bisa berbeda
Query Dasar
db.users.find()mengambil semua dokumendb.users.find({ nama: "Andi" })mencari berdasarkan kondisidb.users.insertOne({ nama: "Budi", email: "budi@email.com" })menambah dokumendb.users.updateOne({ _id: 1 }, { $set: { nama: "Caca" } })memperbarui dokumendb.users.deleteOne({ _id: 1 })menghapus dokumen
Keunggulan MongoDB
- Fleksibel, tidak perlu migrasi skema untuk struktur baru
- Mendukung data hierarkis dan nested
- Mudah scale horizontal dengan sharding
- Query JSON yang natural untuk developer JavaScript
Redis: Key-Value Store
Konsep Dasar
- Menyimpan data sebagai pasangan kunci dan nilai
- Nilai bisa berupa string, list, set, hash, atau sorted set
- Data disimpan di memory sehingga sangat cepat
Perintah Dasar
SET nama "Andi"menyimpan nilai stringGET namamengambil nilai berdasarkan kunciLPUSH daftar "item"menambah item ke listHSET user:1 nama "Andi"menyimpan hashEXPIRE kunci 3600mengatur waktu kadaluarsa dalam detik
Penggunaan Umum Redis
- Cache untuk mengurangi beban database utama
- Session storage untuk login user
- Rate limiting untuk membatasi request API
- Real-time leaderboards dan counters
Cassandra: Column-Family Store
Konsep Dasar
- Data disimpan dalam column family yang mirip tabel tapi lebih fleksibel
- Dioptimalkan untuk write-heavy workloads
- Mendesain query terlebih dahulu sebelum membuat skema
Keunggulan
- Sangat scalable untuk data besar dan write intensif
- Replikasi data antar node otomatis
- Toleransi terhadap kegagalan node
Neo4j: Graph Database
Konsep Dasar
- Data disimpan sebagai node dan relationship
- Node merepresentasikan entitas, relationship merepresentasikan hubungan
- Query menggunakan Cypher, bahasa yang mirip ASCII art
Kapan Menggunakan
- Social network dan rekomendasi teman
- Fraud detection dan network analysis
- Routing dan pathfinding
Memilih NoSQL yang Tepat
- Data hierarkis dan JSON: MongoDB
- Cache dan session: Redis
- Data besar dengan write intensif: Cassandra
- Relasi kompleks antar entitas: Neo4j
Perbandingan dengan SQL
| Aspek | SQL | NoSQL |
|---|---|---|
| Skema | Tetap | Fleksibel |
| Skalabilitas | Vertical | Horizontal |
| Transaksi | Kuat ACID | Eventual consistency |
| Query | SQL standar | Spesifik per database |
| Relasi | Join antar tabel | Embedded atau referensi |
| Contoh Use Case | ERP, banking | IoT, social media, CMS |