IHS Strategic
Tüm Blog Yazıları
HowTo18 Eylül 2026•4 dk okuma

MongoDB ve Mongoose ile Ölçeklenebilir Veritabanı Mimarisi: Kapsamlı Kurulum Rehberi

Modern dijital strateji gereksinimlerine uygun, yüksek trafikli sistemlerde kesintisiz çalışan MongoDB ve Mongoose mimarisi kurulumu için adım adım uygulama rehberi.

S

Sistem Yöneticisi

Kıdemli Yazılım Mimarı

Modern Veri Yönetiminde Ölçeklenebilirliğin Önemi

Hızla büyüyen kullanıcı kitleleri ve veri yoğunluklu uygulamalar, modern yazılım projelerinde geleneksel ilişkisel veritabanı kısıtlarını aşmayı zorunlu kılmaktadır. Günümüzün dijital strateji hedefleri doğrultusunda, milisaniyeler seviyesinde yanıt veren, yüksek erişilebilirlik sunan ve kesinti yaşamadan büyüyebilen bir veri katmanı oluşturmak kritik bir zorunluluktur. NoSQL ekosisteminin lideri konumundaki MongoDB ve Node.js dünyasının güçlü ODM (Object Document Mapper) aracı Mongoose, doğru yapılandırıldığında bu ihtiyaca eksiksiz yanıt vermektedir. Bu rehber, veri tabanınızı yalnızca bugünün trafiğine değil, geleceğin veri trendler ve ölçeklenme taleplerine hazırlayacak kapsamlı bir mimari yol haritası sunmaktadır.

Adım 1: Doğru Veri Modelleme Stratejisi (Embedding vs. Referencing)

Ölçeklenebilir bir MongoDB mimarisinin temeli, doküman yönelimli modellemenin doğru anlaşılmasında yatar. İlişkisel veritabanı alışkanlıklarını doğrudan NoSQL'e taşımak ciddi performans darboğazlarına yol açar.

Gömülü Dokümanlar (Embedding) Ne Zaman Kullanılmalı?

  • 1-to-Few İlişkileri: Bir kullanıcının sabit sayıda (örneğin en fazla 3-5 adet) adresi veya iletişim bilgisi varsa gömülü dokümanlar tercih edilmelidir.
  • Birlikte Okunma İhtiyacı: Ana doküman sorgulandığında alt veriye de her zaman ihtiyaç duyuluyorsa (örn. Sipariş ve Sipariş Kalemleri) veriyi tek dokümanda tutmak I/O maliyetini düşürür.
  • Atomik Güncellemeler: Tek bir doküman seviyesinde ACID garantili hızlı yazma operasyonları hedefleniyorsa embedding en doğru yaklaşımdır.

Referans Verme (Referencing / Normalization) Ne Zaman Kullanılmalı?

  • 1-to-Many / 1-to-Squillions İlişkileri: Bir blog yazısının binlerce yorumu veya bir sensörün milyonlarca log kaydı varsa doküman boyutu sınırı (16 MB) aşılmamalı, referanslama yapılmalıdır.
  • Sık Güncellenen ve Bağımsız Sorgulanan Veriler: Veri ana dokümandan bağımsız olarak taranıyor veya çok sık güncelleniyorsa referans modeli kaynak tüketimini optimize eder.

Önemli İpucu: MongoDB doküman boyutu limiti 16 MB'tır. Gömülü dizilerin kontrolsüz büyümesi (unbounded arrays) bellek şişmesine ve sunucu kaynaklarının tükenmesine neden olur.

Adım 2: Mongoose Şema Optimizasyonu ve İndeksleme Stratejileri

Mongoose tarafında yapılacak doğru konfigürasyonlar, sorgu gecikmelerini dramatik biçimde azaltır.

İndeksleri Doğru Kurgulama

İndeksler okuma performansını artırırken gereksiz tanımlanan her indeks yazma maliyetini yükseltir. Aşağıdaki prensipleri benimseyin:

  • Compound (Bileşik) İndeksler ve ESR Kuralı: İndeks tanımlarken Equality (Eşitlik), Sort (Sıralama) ve Range (Aralık) sırasına sadık kalın.
  • TTL (Time to Live) İndeksleri: Oturum verileri veya geçici loglar için otomatik silinme sağlayan TTL indeksleri kurun.
  • Sparse ve Partial İndeksler: Yalnızca belirli bir koşulu sağlayan (örneğin sadece isActive: true olan) dokümanları indeksleyerek bellek kullanımını azaltın.

Mongoose Şema Tanımı ve Yalın Sorgular (Lean Queries)

Mongoose, verileri getirdiğinde dokümana getter/setter metodları ve sanal alanlar ekler. Yalnızca okuma yapılacak uç noktalarda .lean() kullanımı bellek ayak izini %70'e kadar düşürür:

const users = await User.find({ status: 'active' }).select('name email role').lean().exec();

Adım 3: Bağlantı Havuzu (Connection Pooling) ve Küme Yönetimi

Yüksek eşzamanlı istek alan uygulamalarda bağlantı havuzunun (connection pool) optimize edilmesi hayati öneme sahiptir. Veritabanı bağlantılarını her istekte açıp kapatmak yerine Mongoose bağlantı yöneticisi etkin biçimde konfigüre edilmelidir.

  • maxPoolSize: Sunucunun işlemci ve bellek kapasitesine göre ayarlanmalıdır (varsayılan 100'dür, mikroservis yapılarında servis başına 20-50 arası optimize edilebilir).
  • minPoolSize: Ani trafik dalgalanmalarında yeni bağlantı açma gecikmesini önlemek için minimum 5-10 seviyesinde tutulmalıdır.
  • serverSelectionTimeoutMS: Düğüm yanıt vermediğinde isteklerin kilitlenmemesi için zaman aşımı süresi belirlenmelidir (örn. 5000 ms).
  • retryWrites ve retryReads: Ağ kesintilerinde geçici hataların tolere edilmesi için aktif edilmelidir.

Adım 4: Yatay Ölçekleme için Replica Set ve Sharding Mimarisi

Veri hacmi tek bir sunucunun sınırlarını aştığında kurumsal dijital strateji gereği dağıtık mimarilere geçilmelidir.

Replica Set (Çoğaltma Kümeleri) ile Yüksek Erişilebilirlik

Tek bir Primary ve en az iki Secondary düğümden oluşan Replica Set mimarisi, donanım arızalarında otomatik failover sağlar. Okuma yükünü dağıtmak için readPreference: 'secondaryPreferred' stratejisi analitik ve raporlama sorgularında kullanılabilir.

Sharding (Parçalama) Stratejisi

Milyarlarca kaydı yönetmek için veri kümelere bölünür. Başarılı bir sharding süreci için Shard Key (Parçalama Anahtarı) seçimi kritiktir:

  • Yüksek kardinaliteye (farklı değer çeşitliliğine) sahip olmalıdır.
  • Sorguların çoğunda hedeflenen alanı içermelidir (Broadcast sorguları önlemek için).
  • Monotonik artan değerler (örn. ardışık ID veya timestamp) tek bir shard'a yazma yükü bindireceğinden Hashed Shard Key ile dengelenmelidir.

Adım 5: Performans İzleme, Profiling ve Güvenlik Trendleri

Veritabanı mimarisini sürdürülebilir kılmak, sürekli izleme ve optimizasyon gerektirir.

  • MongoDB Database Profiler: 100 ms'den uzun süren yavaş sorguları tespit etmek için setProfilingLevel(1, { slowms: 100 }) komutuyla yavaş sorgu günlüğü aktif edilmelidir.
  • Explain Plan Analizi: Geliştirme aşamasındaki kritik sorgularda explain('executionStats') çalıştırılarak totalDocsExamined ile nReturned oranları kıyaslanmalıdır.
  • Modern Güvenlik Standartları: TLS/SSL şifreleme, RBAC (Rol Tabanlı Erişim Kontrolü), IP Whitelisting ve Mongoose seviyesinde NoSQL Injection filtrelemeleri eksiksiz uygulanmalıdır.

Ölçeklenebilirlik İçin Kontrol Listesi (Checklist)

  • Tüm sık sorgulanan alanlarda optimize edilmiş bileşik indeksler tanımlandı mı?
  • Büyüyen diziler (unbounded arrays) sınırlandırıldı veya referans modeline geçirildi mi?
  • Salt okuma yapılan API sorgularında .lean() fonksiyonu aktif edildi mi?
  • Bağlantı havuzu (connection pool) ortam koşullarına göre ayarlandı mı?
  • Otomatik yedekleme ve failover mekanizmaları test edildi mi?

Sonuç

MongoDB ve Mongoose kombinasyonu, modern yazılım dünyasının en esnek ve güçlü çözümlerinden birini sunmaktadır. Bu rehber içeriğinde yer alan veri modelleme, indeksleme, bağlantı yönetimi ve dağıtık mimari adımlarını uygulayarak, şirketinizin uzun vadeli dijital strateji vizyonunu destekleyen, yüksek performanslı ve geleceğin teknoloji trendler dinamiklerine hazır bir veritabanı altyapısı inşa edebilirsiniz.