MongoDB nedir?
MongoDB , yüksek hacimli veri depolaması için kullanılan belge odaklı bir NoSQL veritabanıdır. MongoDB, geleneksel ilişkisel veritabanlarında olduğu gibi tablolar ve satırlar kullanmak yerine koleksiyonlardan ve belgelerden yararlanır. Belgeler, MongoDB'deki temel veri birimi olan anahtar / değer çiftlerinden oluşur. Koleksiyonlar, ilişkisel veritabanı tablolarına eşdeğer olan belge ve işlev kümelerini içerir. MongoDB, 2000'li yılların ortalarında ortaya çıkan bir veritabanıdır.
Bu eğitimde öğreneceksiniz-
- MongoDB Özellikleri
- MongoDB Örneği
- MongoDB Mimarisinin Temel Bileşenleri
- Neden MongoDB Kullanmalısınız?
- MongoDB'de Veri Modelleme
- MongoDB ve RDBMS arasındaki fark
MongoDB Özellikleri
- Her veritabanı, sırayla belgeleri içeren koleksiyonları içerir. Her belge, değişen sayıda alanla farklı olabilir. Her belgenin boyutu ve içeriği birbirinden farklı olabilir.
- Belge yapısı, geliştiricilerin sınıflarını ve nesnelerini kendi programlama dillerinde nasıl inşa ettikleriyle daha uyumludur. Geliştiriciler genellikle sınıflarının satırlar ve sütunlar olmadığını, ancak anahtar-değer çiftleri ile net bir yapıya sahip olduğunu söyleyeceklerdir.
- Satırların (veya MongoDB'de çağrılan belgelerin) önceden tanımlanmış bir şemaya sahip olmasına gerek yoktur. Bunun yerine alanlar anında oluşturulabilir.
- MongoDB'de bulunan veri modeli, hiyerarşik ilişkileri temsil etmenize, dizileri depolamanıza ve diğer daha karmaşık yapıları daha kolay bir şekilde göstermenize olanak tanır.
- Ölçeklenebilirlik - MongoDB ortamları oldukça ölçeklenebilir. Dünyanın dört bir yanındaki şirketler, bazılarının veritabanında yaklaşık milyonlarca belge bulunan 100'den fazla düğüm çalıştırdığı kümeleri tanımladı.
MongoDB Örneği
Aşağıdaki örnek, MongoDB'de bir belgenin nasıl modellenebileceğini göstermektedir.
- _İd alanı, koleksiyondaki belgeyi benzersiz şekilde tanımlamak için MongoDB tarafından eklenir.
- Dikkat edebileceğiniz şey, RDBMS'de normalde ayrı bir tabloda saklanacak olan Sipariş Verilerinin (Sipariş Kimliği, Ürün ve Miktar), MongoDB'de ise aslında koleksiyonun kendisinde gömülü bir belge olarak depolanmasıdır. Bu, verilerin MongoDB'de nasıl modellendiğindeki temel farklılıklardan biridir.
MongoDB Mimarisinin Temel Bileşenleri
Aşağıda, MongoDB'de kullanılan yaygın terimlerden birkaçı bulunmaktadır.
- _id - Bu, her MongoDB belgesinde gerekli olan bir alandır. _İd alanı, MongoDB belgesindeki benzersiz bir değeri temsil eder. _İd alanı, belgenin birincil anahtarı gibidir. _İd alanı olmadan yeni bir belge oluşturursanız, MongoDB alanı otomatik olarak oluşturacaktır. Örneğin, yukarıdaki müşteri tablosu örneğini görürsek, Mongo DB, koleksiyondaki her belgeye 24 basamaklı benzersiz bir tanımlayıcı ekleyecektir.
_İD | Müşteri Kimliği | Müşteri adı | Sipariş Kimliği |
---|---|---|---|
563479cc8a8a4246bd27d784 | 11 | Guru99 | 111 |
563479cc7a8a4246bd47d784 | 22 | Trevor Smith | 222 |
563479cc9a8a4246bd57d784 | 33 | Nicole | 333 |
- Koleksiyon - Bu, MongoDB belgelerinin bir grubudur. Koleksiyon, Oracle veya MS SQL gibi herhangi bir diğer RDMS'de oluşturulan bir tablonun eşdeğeridir. Tek bir veritabanında bir koleksiyon var. Giriş koleksiyonlarında görüldüğü gibi herhangi bir yapıyı zorlamaz.
- İmleç - Bu, bir sorgunun sonuç kümesine bir göstericidir. Müşteriler, sonuçları almak için bir imleç aracılığıyla yineleme yapabilir.
- Veritabanı - Bu, RDMS'de olduğu gibi, tablolar için bir konteyner olduğu koleksiyonlar için bir konteynerdir. Her veritabanı, dosya sisteminde kendi dosya kümesini alır. Bir MongoDB sunucusu birden fazla veritabanını depolayabilir.
- Belge - MongoDB koleksiyonundaki bir kayda temel olarak belge denir. Belge, sırayla, alan adı ve değerlerinden oluşacaktır.
- Alan - Bir belgedeki ad-değer çifti. Bir belgede sıfır veya daha fazla alan var. Alanlar, ilişkisel veritabanlarındaki sütunlara benzer.
Aşağıdaki diyagram, Anahtar değer çiftlerine sahip Alanların bir örneğini göstermektedir. Dolayısıyla, aşağıdaki örnekte Müşteri Kimliği ve 11, belgede tanımlanan anahtar değer çiftlerinden biridir.
- JSON - Bu, JavaScript Nesne Gösterimi olarak bilinir. Bu, yapılandırılmış verileri ifade etmek için insan tarafından okunabilir, düz bir metin formatıdır. JSON şu anda birçok programlama dilinde desteklenmektedir.
_İd alanı ile normal bir koleksiyon alanı arasındaki temel fark hakkında kısa bir not. _İd alanı, bir koleksiyondaki belgeleri benzersiz şekilde tanımlamak için kullanılır ve koleksiyon oluşturulduğunda MongoDB tarafından otomatik olarak eklenir.
MongoDB'yi Neden Kullanmalı?
Aşağıda, MongoDB'yi kullanmaya başlamanın nedenlerinden birkaçı var.
- Belge odaklı - MongoDB, NoSQL tipi bir veritabanı olduğundan, ilişkisel bir formatta veriye sahip olmak yerine, verileri belgeler halinde depolar. Bu, MongoDB'yi çok esnek ve gerçek iş dünyasının durumuna ve gereksinimlerine uyarlanabilir hale getiriyor.
- Ad hoc sorgular - MongoDB alan, aralık sorguları ve normal ifade aramalarına göre aramayı destekler. Belgeler içindeki belirli alanları döndürmek için sorgular yapılabilir.
- İndeksleme - MongoDB içindeki aramaların performansını artırmak için indeksler oluşturulabilir. MongoDB belgesindeki herhangi bir alan indekslenebilir.
- Replikasyon - MongoDB, replika setleriyle yüksek kullanılabilirlik sağlayabilir. Bir çoğaltma kümesi, iki veya daha fazla mongo DB bulut sunucusundan oluşur. Her bir eşleme kümesi üyesi, herhangi bir zamanda birincil veya ikincil eşleme rolünü üstlenebilir. Birincil kopya, istemciyle etkileşime giren ve tüm okuma / yazma işlemlerini gerçekleştiren ana sunucudur. İkincil çoğaltmalar, yerleşik çoğaltma kullanarak birincil verilerin bir kopyasını tutar. Birincil eşleme başarısız olduğunda, eşleme kümesi otomatik olarak ikincil sunucuya geçer ve ardından birincil sunucu olur.
- Yük dengeleme - MongoDB, verileri birden çok MongoDB örneğine bölerek yatay olarak ölçeklemek için parçalama kavramını kullanır. MongoDB, birden çok sunucu üzerinde çalışabilir, yükü dengeleyebilir ve / veya donanım arızası durumunda sistemi çalışır durumda tutmak için verileri çoğaltabilir.
MongoDB'de Veri Modelleme
Giriş bölümünden de gördüğümüz gibi MongoDB'deki verilerin esnek bir şeması var. Veri eklemeden önce bir tablonun şemasının bildirilmesi gereken SQL veritabanlarından farklı olarak, MongoDB'nin koleksiyonları belge yapısını zorlamaz. Bu tür bir esneklik, MongoDB'yi bu kadar güçlü yapan şeydir.
Mongo'da verileri modellerken aşağıdaki noktaları aklınızda bulundurun
- Uygulamanın ihtiyaçları nelerdir - Uygulamanın iş ihtiyaçlarına bakın ve uygulama için hangi verilerin ve hangi tür verilerin gerekli olduğunu görün. Buna dayanarak, belgenin yapısının buna göre kararlaştırıldığından emin olun.
- Veri alma modelleri nelerdir - Yoğun bir sorgu kullanımı öngörüyorsanız, sorguların verimliliğini artırmak için veri modelinizdeki dizinlerin kullanımını düşünün.
- Veritabanında sık sık eklemeler, güncellemeler ve kaldırmalar oluyor mu? Genel MongoDB ortamınızın verimliliğini artırmak için veri modelleme tasarımınızda gerekliyse dizin kullanımını yeniden değerlendirin veya parçalamayı dahil edin.
MongoDB ve RDBMS arasındaki fark
MongoDB ve RDBMS arasındaki temel terim farklılıklarından bazıları aşağıdadır
RDBMS | MongoDB | Fark |
---|---|---|
Tablo | Toplamak | RDBMS'de tablo, verileri depolamak için kullanılan sütunları ve satırları içerirken, MongoDB'de bu aynı yapı bir koleksiyon olarak bilinir. Koleksiyon, sırasıyla anahtar-değer çiftleri olan Alanlar içeren belgeleri içerir. |
Kürek çekmek | Belge | RDBMS'de satır, bir tablodaki tek, örtük olarak yapılandırılmış bir veri öğesini temsil eder. MongoDB'de veriler belgelerde saklanır. |
Sütun | Alan | RDBMS'de sütun, bir dizi veri değerini belirtir. MongoDB'de bunlar Alanlar olarak bilinir. |
Katılır | Gömülü belgeler | RDBMS'de, veriler bazen çeşitli tablolara yayılır ve tüm verilerin tam bir görünümünü göstermek için bazen verileri almak için tablolar arasında bir birleştirme oluşturulur. MongoDB'de veriler normalde tek bir koleksiyonda saklanır, ancak Gömülü belgeler kullanılarak ayrılır. Yani MongoDB'de birleştirme kavramı yok. |
Terim farklılıklarının yanı sıra, aşağıda birkaç farklılık daha gösterilmektedir.
- İlişkisel veritabanları, veri bütünlüğünü zorunlu kıldığı bilinmektedir. Bu, MongoDB'de açık bir gereklilik değildir.
- RDBMS, öksüz kayıtları önleyebilmesi ve yinelenmesi için önce verilerin normalleştirilmesini gerektirir. Normalleştirme verileri daha sonra daha fazla tabloya ihtiyaç duyar, bu da daha fazla tablo birleştirme ile sonuçlanacak ve böylece daha fazla anahtar ve dizin gerektirecektir.
Veritabanları büyümeye başladıkça, performans sorun olmaya başlayabilir. Yine bu MongoDB'de açık bir gereklilik değildir. MongoDB esnektir ve önce verilerin normalleştirilmesine ihtiyaç duymaz.