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!

MongoDB - Relationships

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:

  1. Hubungan Embedded
  2. 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:

  1. Data yang diembedding selalu diakses bersamaan dengan dokumen induk.
  2. Data yang diembedding spesifik untuk induk dan tidak perlu diquery secara independen.
  3. 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:

  1. Kita pertama-tama menyisipkan alamat ke dalam koleksi addresses.
  2. 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:

  1. Menyesuaikan dokumen untuk Jane Doe.
  2. Melakukan lookup untuk menggabungkan informasi alamat.

Kapan Menggunakan Hubungan Referenced

Hubungan referenced berguna ketika:

  1. Data yang berkaitan besar dan dapat melampaui batas ukuran dokumen 16MB jika diembedding.
  2. Data yang berkaitan dipakai oleh beberapa dokumen dan perlu diperbarui di beberapa tempat.
  3. 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:

  1. Hubungan embedded bagus untuk data yang erat hubungan dan sering diakses bersamaan.
  2. Hubungan referenced menonjol saat berurusan dengan dataset bersama atau besar.
  3. 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