MongoDB - Hubungan
Halo, para programer yang sedang belajar! Hari ini, kita akan mendalam ke dunia yang menarik dari hubungan MongoDB. Sebagai guru ilmu komputer yang ramah di lingkungan sekitar Anda, saya sangat gembira untuk memandu Anda dalam perjalanan ini. Jangan khawatir jika Anda baru dalam programming – kita akan mulai dari dasar dan naik tingkat per tingkat. Jadi, ambil secangkir kopi (atau minuman favorit Anda), dan mari kita mulai!
Mengerti Hubungan MongoDB
Sebelum kita masuk ke detail, mari bicarakan apa arti hubungan dalam konteks basis data. Bayangkan Anda sedang mengatur sebuah reuni besar keluarga. Anda memiliki informasi tentang anggota keluarga, alamat mereka, dan makanan yang mereka bawa ke pesta. Bagaimana Anda akan mengatur semua data ini? Itu di mana hubungan memainkan perannya!
Dalam MongoDB, kita memiliki dua cara utama untuk merepresentasikan hubungan antara data:
- Hubungan Embedded
- Hubungan Referenced
Ayo jelajahi masing-masing secara rinci.
Model Hubungan Embedded
Hubungan embedded seperti boneka Rusia – Anda memasukkan potongan informasi kecil ke dalam yang besar. Pendekatan ini sempurna ketika Anda memiliki data yang erat hubungan dan sering diakses bersamaan.
Contoh: Anggota Keluarga dan Hewan peliharaannya
Ayo katakan kita ingin menyimpan informasi tentang anggota keluarga dan hewan peliharaannya. Berikut adalah cara kita dapat melakukannya menggunakan hubungan embedded:
db.familyMembers.insertOne({
name: "John Doe",
age: 35,
pets: [
{ name: "Fluffy", type: "Cat", age: 3 },
{ name: "Rex", type: "Dog", age: 5 }
]
})
Dalam contoh ini, kita telah embedding informasi hewan peliharaan langsung dalam dokumen anggota keluarga. mari kitauraikan ini:
- Kita menyisipkan sebuah dokumen ke dalam koleksi
familyMembers
. - Dokumen tersebut berisi informasi dasar tentang John Doe.
- Field
pets
adalah array yang berisi dokumen untuk setiap hewan peliharaan milik John.
Struktur ini bagus karena kita dapat mudah mengambil semua informasi tentang John dan hewan peliharaannya dalam satu permintaan:
db.familyMembers.findOne({ name: "John Doe" })
Kapan Menggunakan Hubungan Embedded
Hubungan embedded ideal ketika:
- Data yang diembedding selalu diakses bersamaan dengan dokumen induk.
- Data yang diembedding spesifik untuk induk dan tidak perlu diquery secara independen.
- Data yang diembedding relatif kecil dan tidak tumbuh tanpa batas.
Ingat, dalam MongoDB, satu dokumen tidak dapat melebihi 16MB. Jadi, jika Anda berurusan dengan jumlah data embedded yang besar, Anda mungkin ingin mempertimbangkan hubungan referenced saja.
Model Hubungan Referenced
Hubungan referenced seperti membuat daftar tamu untuk reuni keluarga Anda. Sebaliknya memasukkan semua informasi di satu tempat, Anda menjaga daftar terpisah dan menunjuk kepadanya saat diperlukan.
Contoh: Anggota Keluarga dan Alamatnya
Ayo modelkan sebuah scenario di mana kita ingin menyimpan anggota keluarga dan alamatnya, tetapi kita mengharapkan alamat dapat dipakai oleh beberapa anggota keluarga:
// Pertama, mari kita sisipkan alamat
db.addresses.insertOne({
_id: ObjectId(),
street: "123 Main St",
city: "Anytown",
state: "CA",
zipCode: "12345"
})
// Sekarang, sisipkan anggota keluarga dengan referensi ke alamat
db.familyMembers.insertOne({
name: "Jane Doe",
age: 32,
addressId: ObjectId("...") // ObjectId dokumen alamat
})
Dalam contoh ini:
- Kita pertama-tama menyisipkan alamat ke dalam koleksi
addresses
. - Kemudian, kita menyisipkan anggota keluarga ke dalam koleksi
familyMembers
, menyimpan hanya ObjectId alamat.
Untuk mengambil informasi lengkap Jane termasuk alamatnya, kita harus melakukan lookup:
db.familyMembers.aggregate([
{ $match: { name: "Jane Doe" } },
{ $lookup: {
from: "addresses",
localField: "addressId",
foreignField: "_id",
as: "address"
}}
])
Query ini:
- Menyesuaikan dokumen untuk Jane Doe.
- Melakukan lookup untuk menggabungkan informasi alamat.
Kapan Menggunakan Hubungan Referenced
Hubungan referenced berguna ketika:
- Data yang berkaitan besar dan dapat melampaui batas ukuran dokumen 16MB jika diembedding.
- Data yang berkaitan dipakai oleh beberapa dokumen dan perlu diperbarui di beberapa tempat.
- Anda perlu query data berkaitan secara independen.
Perbandingan Hubungan Embedded vs Referenced
Mari rangkum perbedaan utama dalam tabel praktis:
Aspek | Hubungan Embedded | Hubungan Referenced |
---|---|---|
Lokasi Data | Dalam dokumen yang sama | Dokumen terpisah |
Kinerja Query | Lebih cepat untuk mengambil data berkaitan | Memerlukan lookup tambahan |
Duplikasi Data | Dapat menyebabkan duplikasi data | Mengurangi duplikasi data |
Kompleksitas Pembaruan | Pembaruan lebih sederhana dalam dokumen | Diperlukan pembaruan di beberapa dokumen |
Fleksibilitas | Kurang fleksibel untuk data bersama | Lebih fleksibel untuk data bersama antar dokumen |
Ukuran Dokumen | Terbatas oleh ukuran dokumen 16MB | Dapat menangani dataset berkaitan yang besar |
Kesimpulan
Dan di sana Anda punya nya, teman-teman! Kita telah berpergian melalui negeri hubungan MongoDB, mengexploreasi hubungan embedded dan referenced. Ingat, tidak ada solusi yang cocok untuk semua – pendekatan terbaik tergantung pada kasus penggunaan Anda.
Sementara Anda terus menjalankan perjalanan MongoDB Anda, jaga ingat konsep-konsep ini:
- Hubungan embedded bagus untuk data yang erat hubungan dan sering diakses bersamaan.
- Hubungan referenced menonjol saat berurusan dengan dataset bersama atau besar.
- Selalu pertimbangkan pola query dan pertumbuhan data saat memutuskan antara keduanya.
Latihan membuat sempurna, jadi jangan takut untuk mencoba model-model berbeda. Siapa tahu? Anda mungkin menjadi ahli organisasi data keluarga untuk reuni berikutnya!
Happy coding, dan semoga basis data Anda selalu dalam harmoni sempurna!
Credits: Image by storyset