# MongoDB vs PostgreSQL

Adres: https://softwaredictionary.org/tr/karsilastirma/mongodb-vs-postgresql
Son güncelleme: 2026-10-05

Kısaca: PostgreSQL veriyi sabit şemalı tablolarda tutup SQL ile birleştirir; MongoDB ise esnek, JSON benzeri belgeler saklar ve sunuculara bölünmek için tasarlanmıştır.

## MongoDB ile PostgreSQL arasındaki fark nedir?

PostgreSQL verileri, tipleri ve kısıtları veritabanınca denetlenen satır ve sütunlardan oluşan tablolarda tutar; tabloları birbirine foreign key'lerle ve SQL join'leriyle bağlar. MongoDB ise verileri koleksiyonlardaki belgeler olarak tutar: her belge BSON olarak saklanan, diziler ve alt belgeler barındırabilen JSON benzeri bir nesnedir ve aynı koleksiyondaki belgelerin aynı alanlara sahip olması gerekmez.

Veriyi nasıl modelleyeceğiniz buradan çıkar. PostgreSQL'de normalize edersiniz: bir sipariş, satırları ve müşterisi ayrı tablolarda durur ve okunurken birleştirilir. MongoDB'de ise genellikle birlikte okunanı gömersiniz; bir sipariş belgesi kendi satırlarını taşır ve tek bir okuma her şeyi getirir. Bu, basit okumaları hızlı, şemayı da kolay değiştirilir kılar; bedeli tekrarlanan veri ve belgeler arasında daha zor sorgulardır.

Aradaki fark daraldı. PostgreSQL, JSON'u `jsonb` tipinde saklayıp indeksler; böylece ilişkisel bir veritabanı da esnek belgeler tutabilir. MongoDB de 4.0 sürümünden beri birden çok belgeyi kapsayan ACID transaction'lar ve şema doğrulaması sunuyor. Ölçekleme ise hâlâ farklı: MongoDB veriyi sunuculara bölmek için tasarlandı; PostgreSQL ise genellikle okuma replikalarıyla tek bir birincil sunucu üzerinde büyür, bölme için eklentilerden ya da yönetilen servislerden yararlanır.

İlişkili veriler, raporlar ve transaction'lar barındıran çoğu uygulama için PostgreSQL sağlam bir varsayılandır. MongoDB ise veri doğası gereği belge biçimindeyse, kayıttan kayda değişiyorsa ya da en baştan pek çok sunucuya yayılması gerekiyorsa en iyi sonucu verir. İkisi de tipik bir web uygulamasını iyi çalıştırabilir; ekibin deneyimi de en az motor kadar önemlidir.

| Özellik | MongoDB | PostgreSQL |
| --- | --- | --- |
| Veri modeli | JSON benzeri belgelerden oluşan koleksiyonlar | Satır ve sütunlardan oluşan tablolar |
| Şema | Esnek; doğrulama isteğe bağlı | Önceden tanımlanır ve uygulanır |
| İlişkiler | Gömme ya da `$lookup` ile birleştirilen referanslar | Foreign key'ler ve join'ler |
| Sorgu dili | MongoDB Query API ve aggregation pipeline'ları | SQL |
| Transaction'lar | ACID; 4.0'dan beri birden çok belge arasında | Her tablo arasında tam ACID |
| Ölçekleme | Sunucular arasında bölme, yerleşik | Okuma replikalarıyla tek birincil; bölme eklentilerle |
| JSON | Yerel biçimi | İndekslenebilen `jsonb` sütunları |

## MongoDB şu durumlarda doğru seçim

- Kayıtların biçimi çok değişiyor ya da şema sık sık değişiyor.
- Veri, profiller ya da kataloglar gibi bütün belgeler hâlinde okunup yazılıyor.
- Verinin pek çok sunucuya yayılmasını bekliyorsunuz ve yerleşik bölme (sharding) istiyorsunuz.

## PostgreSQL şu durumlarda doğru seçim

- Veriniz ilişkisel: birbirine başvuran müşteriler, siparişler ve faturalar.
- Karmaşık sorgulara, raporlara ya da pek çok tablo arasında katı tutarlılığa ihtiyacınız var.
- Eklentilerle JSON'u, tam metin aramayı ve coğrafi veriyi de yöneten tek bir veritabanı istiyorsunuz.

## Sık sorulan sorular

**MongoDB, PostgreSQL'den daha mı hızlı?**

İş yüküne bağlı. Bütün bir belgeyi okumak MongoDB'de çok hızlı olabilir; join'ler, aggregation'lar ve karmaşık filtreler ise çoğu zaman PostgreSQL'de daha hızlıdır. İndeksler ve veri modeli motordan çok daha önemlidir.

**PostgreSQL, MongoDB'nin yerini tutabilir mi?**

Biraz esnek veriye ihtiyaç duyan uygulamalarda çoğu zaman evet: `jsonb` sütunları belgeleri ilişkisel bir veritabanının içinde saklar ve indeksler. MongoDB ise belge merkezli veride ve yerleşik bölmede üstünlüğünü korur.

**MongoDB transaction destekliyor mu?**

Evet. 4.0 sürümünden beri birden çok belgeyi kapsayan ACID transaction'ları destekler; ama veri modeli yazmaların çoğunu, kendi başına atomik olan tek bir belgede tutmayı hedefler.

---

Software Dictionary: https://softwaredictionary.org/tr · https://softwaredictionary.org/tr/llms.txt
