MongoDB'u kullanmanın ilk adımı, temel MongoDB kavramlarını ve veri modelini (veri yapısı) anlamak, verinin nasıl depolandığını bilmektir. Aslında, MongoDB, MySQL'e çok benzer, bu yüzden MySQL'i bilen herkes MongoDB'yi öğrenirken herhangi bir zorluk yaşamayacaktır.
MongoDB Temel Kavramları
Veritabanı
MongoDB veritabanı MySQL veritabanı ile aynıdır.
Koleksiyon
Bir MongoDB koleksiyonu, MySQL'deki tablo kavramına benzer şekilde belge verilerinin bir koleksiyonunu ifade eder.
Belge
Bir MongoDB belgesi, MySQL tablosundaki bir veri satırına benzer şekilde, çoklu alanlardan oluşan JSON yapılı veri, MongoDB'de belge yapısını çok esnek hale getirir.
Alan
Bir MongoDB belge alanı, MySQL tablosundaki alan kavramına benzer şekilde, depolanacak belirli veriyi temsil eder ve her alanın kendi veri tipi bulunur.
İndeks
MongoDB indeksi, sorgu verimliliğini artırmak amacıyla MySQL indeksi ile benzerdir.
Birleştirme (Aggregation)
MongoDB birleştirme kavramı, MySQL'deki Gruplama/Yeniden Sayma/Toplam birleştirme analizine benzer şekilde, veri istatistik analizi için kullanılır.
MongoDB ve MySQL Kavramlarının Karşılaştırılması
MySQL | MongoDB |
---|---|
Veritabanı | Veritabanı |
Tablo | Koleksiyon |
Satır | Belge |
Sütun | Belge Alanı |
İndeks | İndeks |
Birleştirme (ör. group by) | Birleştirme |
Temel olarak, MongoDB'nin kavramları MySQL ile eşleştirilebilir, bu yüzden MongoDB, ilişkisel veritabanlarına (NoSQL) en benzer olmayan veri tabanıdır.
MongoDB Belge Verisi
Bir belge, sadece kendi veri tipi olan çoklu alanlardan oluşan bir JSON yapısıdır. MongoDB ile geliştirme yaparken, odak noktası genellikle belge yapısını nasıl tasarlayacağınızdır, MySQL kullanımının merkezi gibi tablo yapılarını tasarlamakla benzerlik gösterir.
MongoDB belge verisi örneği:
{
"_id": "5cf0029caff5056591b0ce7d",
"firstname": "Jane",
"lastname": "Wu",
"address": {
"street": "1 Circle Rd",
"city": "Los Angeles",
"state": "CA",
"zip": "90404"
},
"hobbies": ["surfing", "coding"]
}
Bu herhangi bir derecede iç içe geçmiş JSON yapısı olabilir, ki bu MySQL tablo yapıları tarafından başarılamaz. _id
alanı belgenin birincil anahtarı olarak hizmet eder ve belirli bir değer belirtmezseniz, MongoDB benzersiz bir değer rastgele oluşturur.
MongoDB'nin veri yapısı ve MySQL tabloları arasındaki en büyük fark, MongoDB'nin belge yapısını önceden tanımlamayı gerektirmemesidir. MongoDB ile, önceden tanımlanmış bir şema olmaksızın doğrudan JSON verisini bir koleksiyona ekleyebilirsiniz. Her seferinde MongoDB koleksiyonuna JSON verisi yazdığınızda, format farklı olabilir, alanlar isteğe bağlı olarak eklenip çıkarılabilir.
Not: MongoDB'nin belge yapısı oldukça esnek olmasına rağmen, pratik uygulamalarda, bir koleksiyon içindeki veri yapısı genellikle birbirine uygundur. Aksi takdirde, koleksiyon içinde her girişin formatı farklı ise, her seferinde alınan veri formatı bilinmediği için yönetimi kabus olacaktır.