İçeriğe geç
Yeni yazı çıkınca e-posta · 4.812 abone 190 rehber · 78 ipucu · 58 komut RSS GitHub LinkedIn İletişim
Ara Ctrl K Bültene katıl
Tüm arşiv · 190 rehber →
Tüm araçlar · 75 üreteç →
Veritabanı

SQL ve NoSQL farkı: şema, ölçek ve tutarlılık takası

İlişkisel modelin güçlü yanları, NoSQL türleri, yatay ölçekleme, sonunda tutarlılık ve seçimin gerçekte neye bağlı olduğu.

Mustafa Çelik 25 Ağustos 2026 · 5 dk okuma

“SQL mi NoSQL mi” sorusu genelde yanlış kurulur. NoSQL tek bir şey değildir — birbirinden çok farklı dört beş aile aynı çatı altında anılır. Doğru soru, verinizin şeklinin ve erişim deseninin hangi modele uyduğudur.

İlişkisel modelin verdiği

SQL veritabanları veriyi tablolarda, satır ve sütunlar hâlinde tutar. Tablolar arası ilişkiler anahtarlarla kurulur.

Bu modelin üç güçlü yanı vardır.

Şema zorlaması. Hangi alanın hangi türde olacağı önceden tanımlıdır. Yanlış biçimde veri girilemez; kısıtlar veritabanı düzeyinde korunur.

İlişkisel sorgular. Birden çok tabloyu birleştirip karmaşık sorular sormak doğaldır. Rapor almak ayrı bir sistem gerektirmez.

İşlem garantileri. Çok adımlı değişiklikler bölünmez biçimde uygulanır; ayrıntısı transaction ve ACID nedir yazısında.

Bu üçü birlikte, verinin bütünlüğünü uygulamaya değil veritabanına emanet etmeyi mümkün kılar — ve uygulama sayısı arttıkça bunun değeri artar.

NoSQL tek bir şey değil

Şemsiye terimin altında farklı modeller vardır.

Belge veritabanları JSON benzeri belgeler saklar. Şema esnektir; her belge farklı alanlar taşıyabilir. İç içe yapıları doğal biçimde tutar.

Anahtar–değer depoları en basit modeldir: bir anahtar, bir değer. Son derece hızlıdır; önbellek ve oturum saklama için idealdir.

Sütun ailesi veritabanları çok büyük ve yazma yoğun iş yükleri için tasarlanmıştır.

Grafik veritabanları ilişkilerin kendisini birinci sınıf veri olarak tutar; sosyal ağ ya da yetki ağacı gibi çok bağlantılı yapılarda üstündür.

Bu ailelerin ortak yanı ilişkisel olmamalarıdır; onun dışında birbirlerine benzemezler.

Şema esnekliği: kazanç mı borç mu

NoSQL’in en çok anlatılan avantajı şemasız çalışabilmesidir. Bu doğrudur ama yarım bir doğrudur.

Şema ortadan kalkmaz; yalnızca veritabanından uygulamaya taşınır. Belgeleri okuyan kod, alanın var olup olmadığını, türünü ve eski sürümlerin nasıl ele alınacağını bilmek zorundadır.

Küçük ve tek uygulamalı sistemlerde bu esneklik hızlandırır. Birden çok ekip aynı veriye dokunmaya başladığında ise, kimsenin garanti etmediği bir yapı ortaya çıkar.

Pratik orta yol: şemayı uygulama katmanında açıkça tanımlamak ve doğrulamak. Örnek belgelerden şema çıkarmak için JSON şema üreteci aracını kullanabilirsiniz.

Ölçekleme: dikey ve yatay

Tarihsel ayrım büyük ölçüde buradan doğdu.

Dikey ölçekleme tek makineyi büyütmektir — daha çok işlemci, daha çok bellek. İlişkisel veritabanları geleneksel olarak bu yolu izler ve bir noktada donanım sınırına dayanır.

Yatay ölçekleme yükü çok sayıda makineye dağıtmaktır. NoSQL sistemleri genelde bunun için tasarlanmıştır ve veriyi otomatik olarak parçalara böler.

Ama bu ayrım artık keskin değildir. Modern ilişkisel veritabanları okuma kopyaları, bölümleme ve dağıtık sürümlerle yatay ölçeklenebiliyor. “SQL ölçeklenmez” cümlesi bugün büyük ölçüde geçersizdir.

Depolama tarafındaki karşılığı blok, dosya, nesne yazısında.

Sonunda tutarlılık

Dağıtık sistemlerde temel bir takas vardır: ağ bölünmesi yaşandığında ya her düğüm aynı yanıtı verir (tutarlılık) ya da her düğüm yanıt vermeyi sürdürür (erişilebilirlik). İkisi birden olmaz.

Birçok NoSQL sistemi erişilebilirliği seçer ve sonunda tutarlı olur: bir yazma tüm kopyalara hemen ulaşmaz, ama kısa süre içinde ulaşır.

Bunun uygulama tarafında somut bir sonucu vardır: yazdığınız veriyi hemen okuduğunuzda eski hâlini görebilirsiniz. Bir kullanıcı profilini güncelleyip sayfayı yenilediğinde eski adı görmesi bu yüzdendir.

Bazı iş yükleri için bu tümüyle kabul edilebilir. Stok, bakiye ve rezervasyon gibi alanlarda ise değildir.

Seçim neye bakar

Dört soru kararı büyük ölçüde belirler.

Veri ilişkisel mi? Çok sayıda varlık birbirine bağlıysa ve raporlarda birleştirilmesi gerekiyorsa ilişkisel model doğal olandır.

Şema ne kadar oturmuş? Sık ve öngörülemez biçimde değişiyorsa belge modeli rahatlatır.

Tutarlılık ne kadar kritik? Para ve stok gibi alanlarda güçlü garantiler gerekir.

Erişim deseni ne? Tek anahtarla okuma baskınsa anahtar–değer deposu hem daha basit hem daha hızlıdır.

Çoğu sistemde ikisi birden

Gerçek mimarilerde seçim genelde tekil değildir. Ana veri ilişkisel bir veritabanında durur; oturumlar ve önbellek bir anahtar–değer deposunda; arama ayrı bir arama motorunda; günlükler ayrı bir depoda.

Buna çok modelli yaklaşım denir ve her bileşeni güçlü olduğu yerde kullanmak anlamına gelir.

Bedeli işletim yüküdür: her sistem ayrı yedeklenir, izlenir ve yamalanır. Bu yüzden bileşen sayısını gerçekten gerektiği kadar tutmak gerekir. Yedekleme tarafındaki karşılığı RPO ve RTO nedir yazısında.

Kısaca

SQL şema zorlar, ilişkisel sorgulara izin verir ve güçlü işlem garantileri sunar. NoSQL tek bir teknoloji değil, farklı sorunlar için farklı modeller ailesidir.

Seçim ölçek sloganlarına değil, verinin şekline, tutarlılık ihtiyacına ve erişim desenine bakar. Ve çoğu gerçek sistem, ikisini birden kullanır.

Mustafa Çelik

Altyapı ve Operasyon Müdürü, İstanbul. 25 yıldır BT altyapısı, sistem yönetimi ve ağ altyapısıyla uğraşıyor; öğrendiklerini bu blogda üretim ortamında denenmiş rehberlere çeviriyor.

Hakkımda

Bu rehber işinize yaradıysa, sonrakini kaçırmayın.

Yeni yazı yayınlandığında tek e-posta. Takvim yok, dilediğiniz an çıkabilirsiniz.

Bülten sağlayıcısı henüz bağlanmadı. Bağlanana kadar e-posta ile yazabilirsiniz ya da RSS akışını takip edebilirsiniz.