MongoDB bir belge veritabanıdır ve PostgreSQL gibi ilişkisel veritabanları gibi belgeler arasındaki ilişkileri korumaz.

Yine de MongoDB, belgeler arasında ilişkiler oluşturmanıza olanak tanır. Bu ilişkiler, gömülü veya referanslı yaklaşımlarla modellenebilir. Hadi daha yakından bakalım.

Yerleşik İlişkiler vs. Referans İlişkileri

Gömülü bir yaklaşımda, bir belge doğrudan başka bir belgenin içine eklenir ve bu da iç içe geçmiş verilerle sonuçlanır. İşlem ayrıca "denormalizasyon" olarak da adlandırılır.

Referans yaklaşımı ise bir belgeden diğerine işaret etmek için belge referanslarını kullanır. Bu yaklaşıma "normalleştirme" de denir.

MongoDB: Gömülü Belgelerle Bire Bir İlişkiler

Gömülü yaklaşımı kullanarak belgeler arasında bire bir ilişki oluşturabilirsiniz. Bu ilişki, bir belge nesnesi yalnızca bir başka belgeyle ilişkili olduğunda oluşur.

Bir öğrenci veritabanı düşünün. Bu veri tabanı, aşağıdaki belgelerle birlikte öğrenci ve adres koleksiyonlarını içerir.

// Öğrenci Belgesi
{
"öğrenciAdı": "Frodo Baggins",
instagram viewer

"telefon Numarası": "987654321",
};
// Adres Belgesi
{
"öğrenciAdı": "Frodo Baggins",
"cadde": "Bagshot Row",
"şehir": "Hobiton",
}

Bu veritabanında, bir öğrencinin yalnızca bir adresi olmasına izin verilir. Adresi almak için öğrencinin adını kullanarak adres koleksiyonunu sorgulamanız gerekir.

İlişkili: MongoDB'de Veritabanı ve Koleksiyon Nasıl Oluşturulur

Adresin diğer ayrıntılarla birlikte kullanıldığı durumlarda, örneğin bir Öğrenci adı, veritabanını birden çok kez sorgulamanız gerekecek. Bunun dezavantajı, yüksek sayıda okuma işlemi ve dolayısıyla düşük sorgu performansıdır.

Gömülü yaklaşımı kullanarak, adres verilerini doğrudan öğrenci belgesine ekleyebilir ve verileri almak için yalnızca tek bir sorgu kullanabilirsiniz.

{
"öğrenciAdı": "Frodo Baggins",
"telefon Numarası": "987654321",
"adres": [{
"cadde": "Bagshot Row",
"şehir": "Hobiton"
}],
};

Adresi almak için Öğrenci adı, bu sorguyu kullanın.

db.student.findOne({"studentName":"Frodo Baggins"}, {"adres":1})

MongoDB'de Gömülü Belgelerle Bire Çok İlişkiler

Bir öğrencinin birden fazla adresi olduğu bir durumu düşünün. Öğrenci ve adresler arasındaki ilişki bire çok olur.

Gömülü model, öğrenci belgesine birden çok adres eklemenize olanak tanır. Gömülü belgeleri kullanan bire bir ilişkide olduğu gibi, bu yaklaşım nispeten yüksek bir sorgu performansına sahiptir.

{
"öğrenciAdı": "Frodo Baggins",
"telefon Numarası": "987654321",
"adres": [
{
"cadde": "Bagshot Row",
"şehir": "Hobiton"
},
{
"sokak": "Başka Bagshot Sırası",
"şehir": "Hobiton2"
},
]
};

Aşağıdaki sorgu, belirtilen öğrenci adının adreslerini döndürür.

db.student.findOne({öğrenciAdı: “Frodo Baggins”}, {adres: 1})

İlişkili: MongoDB'de Belgeler Nasıl Oluşturulur

Şimdi, daha fazla adresiniz varsa ve bunları adres alanına eklemeye devam ederseniz, belge oldukça hızlı bir şekilde darmadağın olabilir. Çözümlerden biri belge referanslarını kullanmaktır.

MongoDB: Belge Referanslarıyla Bire Çok İlişkiler

Referans yaklaşımını kullanarak bire çok ilişkisini de modelleyebilirsiniz. Bu veri modelinde öğrenci ve adres verileri ayrı koleksiyonlarda tutulacaktır. Öğrenciyi adresiyle ilişkilendirmek için öğrenci belgesine adres kimliklerini içeren bir alan ekleyin.

{
"öğrenciAdı": "Frodo Baggins",
"telefon Numarası": "987654321",
"adres": [
ObjectId("61fa7bfeebdadf8ac71427ea"),
ObjectId("61fa7d19ebdadf8ac71427eb")
]
};

Bir öğrencinin adres ayrıntılarını almak, öğrenci belgesinden adres kimliklerini almayı ve bu kimlikleri koleksiyondan gerçek adresleri almak için kullanmayı içerir.

const öğrenci = db.users.findOne({"ad":"Frodo Baggins"},{"adres":1})
const adresleri = db.address.find({"_id":{"$in":student["address_ids"]}})

Gömülü ve Referans Yaklaşımlar Arasında Seçim Yapma

Hem gömme hem de referans verme modellerinin artıları ve eksileri vardır ve bir seçim yapmadan önce birkaç şeyi göz önünde bulundurmanız gerekir. Yeni başlayanlar için kullanım durumunu göz önünde bulundurmanız gerekir. Veriler yalnızca bir belgeyle ilgili olacaksa, gömmek en iyi seçeneğiniz olabilir.

Bire çok ilişkiler oluşturmak için başvuru modelini veya gömülü modeli kullanabilirsiniz. Yalnızca ilişkilendirmek istediğiniz belgenin referans kimliğini eklediğinizden, referans verme, temiz ve tutarlı bir belgeyle sonuçlanır.

Ancak, bağlı verileri almak için gereken okuma işlemlerinin sayısı nispeten yüksektir ve performansı etkileyebilir. Belgeyi gömmek performansı artırabilir, ancak iç içe geçmiş birçok belgeyle, sıkışık bir koleksiyonla karşılaşabilirsiniz.

Bu nedenle belgenizdeki veri ilişkilerini nasıl uygulayacağınızı seçmek tamamen size kalmış. Belgeyi nasıl kullanacağınızı, hedeflediğiniz sorgu performans düzeyini ve yapmak istediğiniz ödünleri düşünün.

MongoDB'de Veri Modelleme Nasıl Farklıdır?

Veritabanlarına farklı bir yaklaşım mı düşünüyorsunuz? MongoDB'de veri modelleme şu şekilde çalışır.

Sonrakini Oku

PaylaşCıvıldamakE-posta
İlgili konular
  • Programlama
  • Programlama
  • veri tabanı
Yazar hakkında
Mary Gathoni (4 Makale Yayınlandı)

Mary Gathoni, yalnızca bilgilendirici değil aynı zamanda ilgi çekici teknik içerik yaratma tutkusuna sahip bir yazılım geliştiricisidir. Kod yazmadığı veya yazmadığı zamanlarda arkadaşlarıyla takılmaktan ve dışarıda olmaktan hoşlanıyor.

Mary Gathoni'dan Daha Fazla

Haber bültenimize abone ol

Teknik ipuçları, incelemeler, ücretsiz e-kitaplar ve özel fırsatlar için bültenimize katılın!

Abone olmak için buraya tıklayın