MongoDB - Pemodelan Data

Data di MongoDB memiliki schema.documents fleksibel dalam koleksi yang sama. Mereka tidak perlu memiliki kumpulan bidang atau struktur yang sama Bidang umum dalam dokumen kumpulan dapat menampung jenis data yang berbeda.

Desain Model Data

MongoDB menyediakan dua jenis model data: - Model data tertanam dan model data Normalisasi. Berdasarkan kebutuhan, Anda dapat menggunakan salah satu model saat menyiapkan dokumen Anda.

Model Data Tersemat

Dalam model ini, Anda dapat memiliki (menyematkan) semua data terkait dalam satu dokumen, yang juga dikenal sebagai model data yang dinormalisasi.

Misalnya, asumsikan kita mendapatkan detail karyawan dalam tiga dokumen berbeda yaitu, Personal_details, Kontak dan, Alamat, Anda dapat menyematkan ketiga dokumen dalam satu dokumen seperti yang ditunjukkan di bawah ini -

{
	_id: 
      
       , Emp_ID: "10025AE336" Personal_details:{ First_Name: "Radhika", Last_Name: "Sharma", Date_Of_Birth: "1995-09-26" }, Contact: { e-mail: "[email protected]", phone: "9848022338" }, Address: { city: "Hyderabad", Area: "Madapur", State: "Telangana" } } 
      

Model Data Normalisasi

Dalam model ini, Anda dapat merujuk sub dokumen dalam dokumen asli dengan menggunakan referensi. Misalnya, Anda dapat menulis ulang dokumen di atas dalam model yang dinormalisasi sebagai:

Employee:

{
	_id: <ObjectId101>,
	Emp_ID: "10025AE336"
}

Personal_details:

{
	_id: <ObjectId102>,
	empDocID: " ObjectId101",
	First_Name: "Radhika",
	Last_Name: "Sharma",
	Date_Of_Birth: "1995-09-26"
}

Contact:

{
	_id: <ObjectId103>,
	empDocID: " ObjectId101",
	e-mail: "[email protected]",
	phone: "9848022338"
}

Address:

{
	_id: <ObjectId104>,
	empDocID: " ObjectId101",
	city: "Hyderabad",
	Area: "Madapur",
	State: "Telangana"
}

Pertimbangan saat mendesain Skema di MongoDB

  • Rancang skema Anda sesuai dengan kebutuhan pengguna.

  • Gabungkan objek menjadi satu dokumen jika Anda akan menggunakannya bersama-sama. Jika tidak, pisahkan mereka (tapi pastikan tidak ada kebutuhan untuk bergabung).

  • Gandakan data (tetapi terbatas) karena ruang disk lebih murah dibandingkan dengan waktu komputasi.

  • Lakukan bergabung saat menulis, bukan saat membaca.

  • Optimalkan skema Anda untuk kasus penggunaan yang paling sering.

  • Lakukan agregasi kompleks dalam skema.

Contoh

Misalkan klien membutuhkan desain database untuk blog / situsnya dan melihat perbedaan antara desain skema RDBMS dan MongoDB. Situs web memiliki persyaratan berikut.

  • Setiap posting memiliki judul, deskripsi, dan url yang unik.

  • Setiap posting dapat memiliki satu atau lebih tag.

  • Setiap posting memiliki nama penerbit dan jumlah suka.

  • Setiap posting memiliki komentar yang diberikan oleh pengguna bersama dengan nama, pesan, data-waktu dan suka mereka.

  • Di setiap postingan, tidak boleh ada lebih dari satu komentar.

Dalam skema RDBMS, desain untuk persyaratan di atas akan memiliki minimal tiga tabel.

Sementara dalam skema MongoDB, desain akan memiliki satu pos koleksi dan struktur berikut -

{
   _id: POST_ID
   title: TITLE_OF_POST, 
   description: POST_DESCRIPTION,
   by: POST_BY,
   url: URL_OF_POST,
   tags: [TAG1, TAG2, TAG3],
   likes: TOTAL_LIKES, 
   comments: [	
      {
         user:'COMMENT_BY',
         message: TEXT,
         dateCreated: DATE_TIME,
         like: LIKES 
      },
      {
         user:'COMMENT_BY',
         message: TEXT,
         dateCreated: DATE_TIME,
         like: LIKES
      }
   ]
}

Jadi saat menampilkan data, di RDBMS Anda perlu menggabungkan tiga tabel dan di MongoDB, data hanya akan ditampilkan dari satu koleksi.