MONGODB NEDİR?
Veritabanı seçerken neden bazı projelerde tablo-satır mantığı yetersiz kalır da geliştiriciler belge tabanlı bir sisteme yönelir? Şema değişikliğinin haftalarca migration planlamayı gerektirdiği, iç içe geçmiş veriyi JOIN'lerle parçalamak zorunda kaldığınız anlarda MongoDB devreye girer. Esnek şema, JSON benzeri belgeler ve yatay ölçekleme ile ilişkisel modelin sınırlarını aşan bir yaklaşım sunar.
MongoDB Nedir
MongoDB, verileri tablo-satır yerine BSON (Binary JSON) formatında belgeler halinde saklayan, açık kaynaklı bir NoSQL veritabanı sistemidir. 2009'da 10gen ekibi tarafından geliştirilmeye başlandı; isim İngilizce "humongous" (devasa) kelimesinden türetildi çünkü temel hedef büyük hacimli, yapısı sürekli değişen veriyi rahatça yönetmekti.
Geleneksel ilişkisel veritabanlarında bir kullanıcı kaydı için ayrı tablolar, foreign key'ler ve JOIN'ler kurarsınız. MongoDB'de aynı kullanıcı tek bir belge içinde adresi, sipariş geçmişi ve tercihleriyle birlikte saklanabilir. Bu yaklaşım, modern uygulamalarda nesnelerin programlama dilindeki yapısını veritabanına neredeyse birebir taşımanıza imkân tanır.
Document Database Mantığı Nasıl Çalışır
MongoDB'nin temelinde dört kavram vardır: document, collection, database ve field. Bir document, anahtar-değer çiftlerinden oluşan ve JSON'a çok benzeyen bir veri birimidir. Birden fazla document, bir collection oluşturur — bu kavram ilişkisel dünyadaki tabloya karşılık gelir ama şema zorunluluğu yoktur.
Örneğin bir e-ticaret uygulamasında ürün belgesi şöyle görünebilir:
- _id: Her belgeye otomatik atanan benzersiz tanımlayıcı (ObjectId)
- title: "Kablosuz Kulaklık" gibi string alan
- price: 1299.90 gibi sayısal değer
- tags: ["elektronik", "ses", "bluetooth"] şeklinde dizi
- specs: İç içe nesne — pil ömrü, ağırlık, renk seçenekleri
- reviews: Yorumların gömülü dizisi (embedded array)
Aynı collection içinde başka bir ürün belgesi farklı alanlara sahip olabilir. Yeni bir özellik eklemek için ALTER TABLE komutu çalıştırmanıza gerek kalmaz; yeni belgeye doğrudan yeni alanı yazarsınız.

İlişkisel Veritabanlarından Temel Farkları
MongoDB ile MySQL veya PostgreSQL arasındaki ayrım sadece sözdizimi değil, veriyi modelleme felsefesidir. Bir blog uygulamasını düşünün: ilişkisel modelde "posts", "comments", "tags", "post_tags" tabloları kurar ve bir gönderiyi yorumlarıyla birlikte getirmek için en az üç JOIN yazarsınız. MongoDB'de tüm bu yapıyı tek belge olarak gömebilirsiniz; bir okuma sorgusu yeterli olur.
Bu yaklaşımın farkını şu noktalarda hissedersiniz:
- Şema esnekliği: Geliştirme aşamasında veri modeli sık değişiyorsa migration yükü ortadan kalkar.
- Yatay ölçekleme: Sharding ile veri otomatik olarak birden çok sunucuya dağıtılır.
- Aggregation Pipeline: Karmaşık dönüştürme ve hesaplama işlemleri için zincirleme operatörler sunar.
- Replica Set: Yüksek erişilebilirlik için otomatik failover içeren çoğaltma yapısı.
- Geospatial sorgular: Coğrafi konum verisi için yerleşik indeks desteği.
Ancak her senaryo MongoDB'ye uygun değildir. Banka transferi gibi çok-tablolu ACID işlemlerin merkezde olduğu, ilişkilerin yoğun olduğu sistemlerde ilişkisel modelin matematiksel temeli hâlâ avantaj sağlar. MongoDB 4.0 ile multi-document transaction geldi ama bu hâlâ ana kullanım senaryosu olarak konumlandırılmaz.
Hangi Senaryolarda MongoDB Tercih Edilir
MongoDB'nin parladığı kullanım alanları belirli desenler etrafında toplanır. İçerik yönetim sistemleri, kullanıcı profilleri ve katalog uygulamaları gibi belge başına farklı alan yapılarının olduğu durumlar tipik örnektir. Gerçek zamanlı analitik, IoT cihazlarından gelen sensör verisi ve log toplama da yüksek yazma hacmi nedeniyle MongoDB'ye uygundur.
Pratik tercih noktaları şunlardır:
- Hızlı prototip: Veri modeli netleşmediği MVP aşamalarında şemasız çalışma avantaj sağlar.
- İç içe veri: Belge başına ortalama 16 MB'a kadar gömülü yapı saklanabilir.
- Büyük veri hacmi: Sharding ile petabayt seviyesine ölçeklenir.
- JSON tabanlı API'ler: Node.js, Python, React tarafında veri dönüşüm yükü azalır.
- Polymorphic koleksiyonlar: Farklı ürün tiplerinin tek koleksiyonda tutulması mümkün olur.
MongoDB Mimarisi ve Bileşenleri
Üretim ortamında MongoDB tek başına bir process olarak çalışmaz; mongod sunucu servisi, mongos sharding yönlendiricisi ve mongo shell (veya yeni nesil mongosh) istemcisinden oluşan bir ekosistem vardır. Replica set yapısında bir primary node yazma işlemlerini kabul ederken, secondary node'lar veriyi asenkron çoğaltır. Primary çökerse otomatik bir election süreciyle yeni primary seçilir.
Sharding ise verinin shard key'e göre farklı sunuculara dağıtılmasını sağlar. Doğru shard key seçimi performans için kritiktir — hatalı seçim hotspot oluşturup ölçeklenebilirliği baltalayabilir. Bileşenlerin yapılandırma detayları ve önerilen üretim topolojileri için resmi dokümantasyonu incelemek sağlıklı bir başlangıç noktasıdır. MongoDB Atlas, bu altyapının yönetilen bulut hâlidir ve AWS, Azure, GCP üzerinde tek tıkla cluster kurma imkânı sunar.

Sorgu Dili ve Aggregation
SQL yerine MongoDB Query Language (MQL) kullanılır. Sorgular JSON benzeri belgeler olarak yazılır: db.users.find({ age: { $gt: 25 } }) ifadesi 25 yaşından büyük kullanıcıları getirir. Karşılaştırma operatörleri $gt, $lt, $in gibi dolar işaretiyle başlar.
Aggregation Pipeline, MongoDB'nin en güçlü özelliklerinden biridir. Veriyi bir dizi aşamadan (stage) geçirerek dönüştürür: $match ile filtreleme, $group ile gruplama, $lookup ile koleksiyonlar arası birleştirme, $project ile alan seçimi yapılır. Bu pipeline yaklaşımı, karmaşık raporlama sorgularını okunabilir adımlara böler.
Öğrenmeye Nereden Başlamalı
MongoDB'ye giriş için pratik bir yol, önce shell veya MongoDB Compass arayüzünde temel CRUD operasyonlarını denemek, ardından bir tarafta Node.js veya Python sürücüsüyle gerçek bir uygulama yazmaktır. Aggregation pipeline'ı erkenden öğrenmek, ilerleyen aşamada sizi düşük performanslı sorgu döngülerinden kurtarır. Konuya sistematik yaklaşmak isteyenler MongoDB eğitimi içeriklerinden yararlanabilir.
İndeks tasarımı, doğru veri modeli seçimi (embed vs reference) ve replica set yapılandırması orta seviye konulardır. Atlas üzerinden ücretsiz tier ile küçük bir cluster açıp kendi projelerinizde denemek, ezberden çok daha kalıcı bir öğrenme sağlar. Belge tabanlı düşünme alışkanlığı kazandığınızda, ilişkisel veritabanlarıyla MongoDB arasındaki seçim mühendislik bir karar hâline gelir — moda değil.



