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

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

Modern dijital stratejilerin omurgasını oluşturan yüksek performanslı ve ölçeklenebilir MongoDB & Mongoose veritabanı mimarisini adım adım kurma rehberi.

S

Sistem Yöneticisi

Kıdemli Yazılım Mimarı

Giriş: Modern Uygulamalarda Veri Mimarisi ve Dijital Strateji

Hızla büyüyen kullanıcı kitleleri ve veri hacimleri karşısında, geleneksel veritabanı modelleri çoğu zaman tıkanma noktaları yaratır. Günümüzün rekabetçi ekosisteminde sağlam bir dijital strateji geliştirmek, yalnızca ön yüz deneyimini değil, arka plandaki veri depolama ve işleme mimarisini de geleceğe hazır hale getirmeyi gerektirir. NoSQL dünyasının liderlerinden MongoDB ve popüler ODM kütüphanesi Mongoose, doğru konfigürasyon ve tasarım modelleriyle birleştirildiğinde milyonlarca isteği milisaniyeler seviyesinde karşılayabilen esnek altyapılar sunar.

Bu kapsamlı rehber, veri modellemeden bağlantı havuzu (connection pool) yönetimine, gelişmiş indeksleme stratejilerinden aggregation pipeline optimizasyonuna kadar ölçeklenebilir bir veritabanı mimarisini adım adım nasıl kuracağınızı açıklamaktadır.

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

MongoDB'de ölçeklenebilirliğin ilk kuralı, doğru şema tasarımıdır. SQL mantığı ile birebir tabloları referanslamak yerine, uygulamanızın okuma ve yazma modellerine göre Embedded (Gömülü) ya da Referenced (Referanslı) yaklaşımlarını seçmelisiniz.

  • Embedded Documents (Gömülü Belgeler): Birlikte sorgulanan ve 16 MB belge limitini aşmayacak 1-to-Few ilişkilerinde (örneğin kullanıcı adresleri veya sipariş kalemleri) tek bir atomik işlemle okuma/yazma performansı sağlar.
  • Referenced Documents (Referanslı Belgeler): Büyüyen (1-to-Many veya N-to-N) ilişkilerde ve sık güncellenen verilerde (örneğin blog yazısı altındaki binlerce yorum veya log kayıtları) veri tekrarını ve belge şişmesini (document growth) önler.
İpucu: Şema tasarlarken 'nasıl saklarım' yerine 'bu veriyi uygulama tarafında nasıl sorgulayacağım' sorusuna odaklanın. Güncel mimari trendler, sorgu odaklı (query-driven) şema tasarımının mikroservis mimarilerinde gecikmeyi %40'a kadar azalttığını göstermektedir.

Adım 2: Mongoose Bağlantı Optimizasyonu ve Connection Pooling

Varsayılan Mongoose ayarları yerel geliştirme için yeterli olsa da, yüksek trafikli prodüksiyon ortamlarında veritabanı kilitlenmelerine yol açabilir. Bağlantı havuzunu (connection pool) optimize etmek, kaynak tüketimini dengeler.

Örnek Bağlantı Konfigürasyonu:

const mongoose = require('mongoose');

const connectDB = async () => {
  try {
    await mongoose.connect(process.env.MONGO_URI, {
      maxPoolSize: 50,
      minPoolSize: 10,
      serverSelectionTimeoutMS: 5000,
      socketTimeoutMS: 45000,
      family: 4
    });
    console.log('MongoDB Yüksek Performanslı Bağlantı Başarılı');
  } catch (error) {
    console.error('Veritabanı Bağlantı Hatası:', error);
    process.exit(1);
  }
};

maxPoolSize parametresini sunucunuzun eşzamanlı istek kapasitesine ve sunucu çekirdek sayısına göre optimize etmelisiniz.

Adım 3: İleri Düzey İndeksleme Stratejileri (Indexing)

Veritabanı sorgularının tam koleksiyon taraması (COLLSCAN) yerine indeks taraması (IXSCAN) yapması, sorgu sürelerini saniyelerden mikrosaniyelere indirir.

  • Compound Indexes (Bileşik İndeksler): Sık birlikte filtrelenen alanlar için ESR (Equality, Sort, Range) kuralına uygun indeksler tanımlayın.
  • Partial ve Sparse İndeksler: Yalnızca belirli bir koşulu sağlayan belgeleri indeksleyerek bellek kullanımını minimuma indirin.
  • TTL (Time to Live) İndeksleri: Oturum verileri, geçici doğrulama kodları ve logların otomatik olarak silinmesini sağlayarak veri tabanının gereksiz büyümesini engelleyin.

Mongoose şemanızda indeksleri tanımlarken autoIndex: false seçeneğini prodüksiyonda aktif etmeyi ve indeksleri migration scriptleri aracılığıyla kontrollü oluşturmayı unutmayın.

Adım 4: Cursor Tabanlı Sayfalama (Pagination) Mimarisi

Ölçeklenebilir bir mimaride skip() ve limit() ikilisini büyük veri setlerinde kullanmak ciddi bir performans kaybıdır; çünkü skip(10000) işlemi ilk 10.000 kaydı tarayıp çöpe atar. Bunun yerine Cursor-based (Keyset) Pagination uygulanmalıdır.

Cursor-based Pagination Mantığı:

const getFeed = async (lastId, limit = 20) => {
  const query = lastId ? { _id: { $lt: lastId } } : {};
  return await Post.find(query)
    .sort({ _id: -1 })
    .limit(limit)
    .lean();
};

Ayrıca sadece JSON nesnelerine ihtiyaç duyduğunuz sorgularda Mongoose'un .lean() fonksiyonunu kullanarak Mongoose Document ek yükünden (virtuals, getters/setters) kurtulabilir ve bellek tüketimini %60 oranında optimize edebilirsiniz.

Adım 5: Sharding ve Replica Set Entegrasyonu

Veri hacminiz tek bir sunucunun depolama veya RAM sınırını aştığında, yatay ölçekleme (horizontal scaling) kaçınılmaz hale gelir. Modern bulut bilişim trendleri, otomatik ölçeklenen Replica Set ve Sharded Cluster mimarilerini öne çıkarmaktadır.

  • Replica Set: Okuma yükünü ikincil düğümlere (Read Preference: secondaryPreferred) dağıtarak birincil düğümün yazma yüküne odaklanmasını sağlayın.
  • Sharding (Parçalama): Verileri belirlediğiniz bir 'Shard Key' üzerinden farklı fiziksel sunuculara paylaştırın. Yanlış seçilmiş bir Shard Key, dengesiz veri dağılımına (jumbo chunks) neden olabileceğinden, yüksek kardinaliteye sahip anahtarlar tercih edilmelidir.

Adım 6: İzleme, Profiling ve Güvenlik Pratikleri

Kurduğunuz mimarinin kararlılığını sürdürebilmesi için sürekli izleme şarttır. MongoDB Database Profiler özelliğini kullanarak 100ms üzerindeki yavaş sorguları tespit edin:

db.setProfilingLevel(1, { slowms: 100 });

Atlas Metrics, Datadog veya Prometheus & Grafana entegrasyonlarıyla bağlantı sayılarını, bellek tüketimini ve IOPS değerlerini gerçek zamanlı takip ederek proaktif optimizasyonlar gerçekleştirin.

Sonuç

Ölçeklenebilir bir MongoDB ve Mongoose altyapısı; doğru şema tasarımı, optimize edilmiş indeksleme, kontrollü bağlantı yönetimi ve verimli sorgulama tekniklerinin birleşimidir. Bu rehberde yer alan teknikleri uygulayarak, şirketinizin veri tabanlı dijital strateji hedeflerini kesintisiz, yüksek performanslı ve geleceğe hazır bir mimari üzerine inşa edebilirsiniz.