İçeriğe atla
Makale

NoSQL Nedir? Redis, MongoDB ve SQL'den Farkı

NoSQL türlerini, Redis ve MongoDB'nin nasıl çalıştığını, CAP teoremini, tutarlılık modellerini, NoSQL güvenliğini ve lisans değişikliklerini anlattık.

Oğuzhan Gerçek··8 dk okuma
NoSQL Nedir? Redis, MongoDB ve SQL'den Farkı

Kısa cevap: NoSQL, veriyi ilişkisel tablolar yerine doküman, anahtar-değer, geniş sütun ya da graf modeliyle saklayan veritabanlarının ortak adıdır; Google Cloud kısaltmayı "not only SQL" diye açıyor. Bu sistemler esnek şema ve yatay ölçekleme için katı şemadan ve geniş transaction kapsamından kısmen vazgeçer. Yaygın iki örnek, doküman veritabanı MongoDB ile veriyi bellekte tutan ve çoğu zaman cache olarak kullanılan Redis. Ağ bölündüğünde dağıtık bir sistem tutarlılık ile erişilebilirlik arasında seçim yapmak zorunda kalır (CAP teoremi); Cassandra, DynamoDB ve Azure Cosmos DB gibi sistemler tutarlılık düzeyini kullanıcıya seçtirir.

NoSQL nedir?

Google Cloud'un tanımıyla NoSQL, "not only SQL" ifadesinin kısaltması: veriyi ilişkisel tablolar yerine tablo dışı biçimlerde saklayan veritabanlarının adı. Microsoft'a göre bu sistemler esnek şema, yatay ölçek ve belirli erişim desenleri için optimize edilir. AWS onlara amaca özel (purpose-built) veritabanları diyor.

Stack Overflow'un 23 Haziran ile 5 Ağustos 2026 arasında yaptığı geliştirici anketinde veritabanı sorusunu cevaplayan 12.061 kişinin %28,3'ü son bir yılda Redis, %19'u MongoDB ile yoğun geliştirme yaptığını söyledi.

NoSQL veritabanı türleri

Başlıca dört tür şunlar:

  • Doküman (document): Kayıtlar JSON'a benzeyen dokümanlarda durur; aynı koleksiyondaki dokümanların yapısı farklı olabilir. Örnek: MongoDB.
  • Anahtar-değer (key-value): Google Cloud'a göre en basit tür: değer benzersiz bir anahtarla yazılır ve o anahtarla okunur. Örnek: Redis.
  • Geniş sütun (wide-column): Apache Cassandra partition'lara bölünmüş geniş sütunlu bir depolama modeli kullanır ve eventual consistency ile çalışır. Sorgu dili SQL'e benzeyen CQL; dağıtık join ve yabancı anahtar ise bilerek yok.
  • Graf (çizge): Neo4j belgelerine göre veri node, ilişki ve özellik olarak saklanır; join kullanılmaz, ilişki verinin yanında tutulur. Graf sorgu dili GQL, Nisan 2024'te ISO/IEC 39075 numarasıyla standart oldu.

MongoDB nedir?

MongoDB bir doküman veritabanı: her kayıt, alan-değer çiftlerinden oluşan ve JSON nesnesine benzeyen bir doküman; dokümanlar katı şema dayatmayan koleksiyonlarda durur. Bir alanın değeri başka bir doküman ya da dizi olabildiği için join ihtiyacı azalır. Kayıtlar JSON'ın ikili gösterimi olan BSON biçiminde saklanır; tek dokümanın azami boyutu 16 mebibayt (MiB).

Tek doküman üzerindeki işlem atomik. Çok dokümanlı transaction da var, ama belgelere göre çoğu durumda daha pahalı ve iyi şema tasarımının yerini tutmuyor.

Redis nedir? Cache olarak kullanımı

Redis kendini bir veri yapısı sunucusu olarak tanımlıyor; string, hash, list, set, sorted set ve stream gibi türleri cache'ten kuyruğa ve olay işlemeye kadar farklı işlerde kullanılıyor. Google Cloud onu veriyi bellekte tutan veritabanlarına örnek gösteriyor; diske yazma seçeneklerini VTYS yazımızda anlattık.

Redis belgelerine göre Redis sıklıkla yavaş bir veritabanının önünde okumayı hızlandıran bir cache olarak kullanılıyor. Cache'teki kayıt kalıcı verinin kopyası olduğundan bellek dolunca genellikle güvenle silinebilir. maxmemory bellek sınırını, maxmemory-policy sınıra gelince hangi anahtarın silineceğini belirler. Adı volatile ile başlayan politikalar yalnızca süresi tanımlı anahtarları siler, böyle anahtar yoksa yeni yazmalara hata döner. Süreyi EXPIRE tanımlar; süre dolunca anahtar kendiliğinden silinir.

Cache-aside deseninde uygulama kaydı cache'te bulamazsa veritabanından okuyup cache'e yazar; Microsoft'a göre desen, cache ile veritabanı arasında tutarlılık garantisi vermez. Redis'in transaction'ları komutları yalıtılmış tek adımda çalıştırır ama rollback desteklemez.

SQL ve NoSQL farkı

AWS'nin karşılaştırmasına göre ilişkisel veritabanları veriyi satır ve sütunlardan oluşan tablolara normalize eder, genellikle donanım büyütülerek dikey ölçeklenir, ACID özellikleri sunar ve SQL ile sorgulanır. NoSQL veritabanları farklı veri modelleriyle çalışır, genellikle dağıtık cluster'larla yatay ölçeklenir ve nesne tabanlı API'lerle kullanılır; çoğu ACID özelliklerinin bir kısmını gevşetir.

Sınır yine de keskin değil: PostgreSQL, JSON veriyi jsonb türünde indeksleyerek saklayabiliyor (PostgreSQL yazımız). Ne zaman ilişkisel, ne zaman NoSQL veritabanı seçileceğini PostgreSQL mü MongoDB mi yazımızda tartıştık. Raporlama için veriyi bir veri ambarına taşımayı ETL yazımızda anlattık; veritabanı değişikliğini uygulama ve veritabanı modernizasyonu hizmetimizde ele alıyoruz.

CAP teoremi, ACID ve BASE

Eric Brewer, 19 Temmuz 2000'de PODC konferansındaki açılış konuşmasında veri paylaşan bir sistemin tutarlılık, erişilebilirlik ve ağ bölünmesine dayanıklılık (partition tolerance) özelliklerinden en fazla ikisine sahip olabileceğini söyledi. Seth Gilbert ve Nancy Lynch, Haziran 2002'de SIGACT News'te yayımlanan makalelerinde bunu kanıtladı: mesajların kaybolabildiği asenkron bir ağda, her isteğe cevap veren ve aynı zamanda atomik tutarlılık sağlayan bir okuma/yazma nesnesi kurulamaz. Atomik tutarlılık, bir yazma tamamlandıktan sonra başlayan her okumanın o değeri ya da daha sonraki bir yazmanın değerini döndürmesi demek.

Pratikte Cassandra dengeyi her işlem için consistency level ile seçtirir; yazma ve okuma QUORUM ile yapılırsa en az bir kopya iki işleme de katılır ve yazma okumaya görünür. DynamoDB'de varsayılan okuma eventually consistent, yani yeni bir yazma hemen görünmeyebilir. Azure Cosmos DB ise strong'dan eventual'a beş düzey sunuyor.

Brewer aynı konuşmada ACID'in karşısına BASE'i koydu: Basically Available, Soft-state, Eventual consistency. ACID güçlü tutarlılığa odaklanır; BASE eski veriyi kabul eder ve önceliği erişilebilirliğe verir. Brewer ikisini bir yelpazenin uçları olarak görüyor.

Ölçekleme: sharding ve replikasyon

MongoDB'ye göre sharding veriyi birden çok makineye dağıtır ve çok büyük veri kümeleri için kullanılır. Dağılımı shard key belirler; kötü seçilen bir anahtar dengesiz dağılıma ya da darboğaza yol açabilir. Redis Cluster anahtarları 16.384 hash slot'a, Cassandra ise consistent hashing ile node'lara dağıtır.

MongoDB'de her shard bir replica set olarak kurulur: yazmaları primary alır, secondary'ler onun oplog'unu uygular. Varsayılan write concern "majority"; w: 1 ile yalnızca primary'nin onayladığı bir yazma, secondary'lere ulaşmadan primary görevi bırakırsa geri alınabilir. Replikasyon asenkron olduğundan secondary'den okunan veri eski olabilir; Redis Cluster aynı nedenle onayladığı yazmaları bazı koşullarda kaybedebilir. Senkron ve asenkron farkını replikasyon yazımızda anlattık.

NoSQL güvenliği: internete açık veritabanları

Redis belgelerine göre Redis güvenilir ağlardaki güvenilir istemciler için tasarlandı ve onu doğrudan internete açmak genellikle iyi bir fikir değil. MongoDB de süreçlerine yalnızca güvenilir ağlardan erişilmesini istiyor. Temel önlemler şunlar:

  • Ağ: MongoDB varsayılan olarak yalnızca localhost'a bağlanır. Redis 3.2.0'dan beri, varsayılan ayarla ve parolasız çalıştırılırsa protected mode'a geçip yalnızca loopback arayüzünden gelen sorgulara cevap verir; yönetici bu korumayı kapatabilir.
  • Kimlik ve yetki: MongoDB'de erişim denetimi varsayılan olarak kapalı; kontrol listesi onu açmayı, her kişi ve uygulamaya ayrı kullanıcı ve yalnızca gereken rolü vermeyi istiyor (IAM yazımız). Redis'te önerilen yöntem, Redis 6 ile gelen ACL'ler.
  • Şifreleme: İki sistem de TLS destekliyor (SSL yazımız).
  • Injection: OWASP'a göre NoSQL veritabanları SQL kullanmasa da injection saldırılarına açık olabilir.

Bu katmanı veritabanı platform mühendisliği ve veritabanı platformu ve operasyonları hizmetlerimizde ele alıyoruz.

Lisans değişiklikleri: SSPL, RSAL ve AGPL

  • MongoDB: 16 Ekim 2018'de Community Server'ı GNU AGPLv3'ten kendi yazdığı Server Side Public License'a (SSPL) taşıdı. SSS sayfasına göre SSPL OSI onaylı değil ve ek koşulu yalnızca MongoDB'yi üçüncü taraflara hizmet olarak sunanları bağlıyor.
  • Redis: 20 Mart 2024'te 7.4 sürümünden itibaren BSD lisansını bırakıp RSALv2 ve SSPLv1 ile çift lisansa geçti ve bunun OSI tanımıyla açık kaynak olmadığını kabul etti. 1 Mayıs 2025'te Redis 8 ile AGPLv3'ü üçüncü seçenek olarak ekledi; lisans sayfasına göre 7.2.x ve öncesi BSD lisanslı.

Kurumunuza etkisi hukuki bir değerlendirme konusu.

Sık sorulan sorular

NoSQL ne demek? "Not only SQL" ifadesinin kısaltmasıdır. İlişkisel tablo yerine doküman, anahtar-değer, geniş sütun ya da graf modeli kullanan veritabanlarının ortak adı.

Redis nedir, ne işe yarar? Veriyi bellekte tutan bir veri yapısı sunucusudur; sıklıkla yavaş bir veritabanının önünde cache olarak kullanılır.

MongoDB nedir? Kayıtları JSON'a benzeyen dokümanlar hâlinde koleksiyonlarda saklayan bir doküman veritabanıdır.

SQL ve NoSQL farkı nedir? İlişkisel sistemler veriyi şemaya bağlı tablolarda tutar ve SQL ile sorgulanır. NoSQL sistemler esnek şema ve yatay ölçekleme için ACID özelliklerinin bir kısmını gevşetir.

CAP teoremi nedir? Ağ bölündüğünde dağıtık bir sistemin tutarlılığı ve erişilebilirliği birlikte garanti edemeyeceğini söyler. Eric Brewer 2000'de ortaya attı, Seth Gilbert ve Nancy Lynch 2002'de kanıtladı.

Kaynaklar