NoSQL
Not Only SQL (Yalnızca SQL Değil)
- Okunuşu
- no es-kyu-el ya da no sikuıl
Kısaca
NoSQL, veriyi ilişkisel tablolar yerine doküman, anahtar-değer çifti, geniş sütun ya da çizge gibi başka modellerde saklayan veritabanı ailesidir.
NoSQL nedir?
NoSQL, tabloların anahtarlarla bağlandığı geleneksel ilişkisel modeli kullanmayan veritabanları için kullanılan şemsiye bir terimdir. Ad genellikle "not only SQL" (yalnızca SQL değil) diye okunur; çünkü bu veritabanlarının çoğu hâlâ bir sorgu dili sunar, hatta bazıları SQL benzeri sözdizimini bile destekler.
Dört ana tür vardır. MongoDB gibi doküman veritabanları JSON benzeri dokümanları saklar; Redis gibi anahtar-değer depoları her anahtarı bir değere eşler, tıpkı dev bir sözlük gibi; Apache Cassandra gibi geniş sütunlu depolar veriyi birçok makineye yayılmış esnek sütunlarda düzenler; Neo4j gibi çizge veritabanları ise düğümleri ve aralarındaki ilişkileri saklar.
NoSQL veritabanları büyük web uygulamaları için popüler oldu; çünkü çoğu yatay ölçeklenecek biçimde, yani veriyi birçok sunucuya yayacak şekilde tasarlanmıştır ve sıklıkla esnek bir şemaya izin verir; böylece aynı koleksiyondaki kayıtların farklı alanları olabilir. Önbellekleme, kullanıcı oturumları, gerçek zamanlı analitik, ürün katalogları ve sosyal ağlarda yaygındırlar.
SQL ve NoSQL karşılaştırması bir yarış değil, bir ödünleşimdir. İlişkisel veritabanları katı bir şema uygular ve karmaşık sorgularda ile çok satırlı işlemlerde (transaction) üstündür; NoSQL veritabanları ise bu güçlerin bir kısmını belirli erişim örüntülerinde esneklik, ölçek ya da hız karşılığında feda eder. Bugün sınır daha bulanık: birçok NoSQL veritabanı işlemleri destekliyor, PostgreSQL gibi ilişkisel veritabanları da JSON saklayıp sorgulayabiliyor.
Bir bakışta
Önemli noktalar
- NoSQL, "hiç SQL yok" değil, "yalnızca SQL değil" anlamına gelir.
- Ana türler doküman, anahtar-değer, geniş sütun ve çizge veritabanlarıdır.
- Birçok NoSQL veritabanı, çok sayıda sunucuya yatay olarak ölçeklenir.
- Şemalar genellikle esnektir; kayıtların farklı alanları olabilir.
- SQL ya da NoSQL seçimi, verinize ve onu nasıl sorguladığınıza bağlıdır.
Örnek
// Using the MongoDB Node.js driver
const users = db.collection("users");
// Documents in the same collection can have different fields
await users.insertOne({ name: "Ada", skills: ["math", "code"] });
await users.insertOne({ name: "Linus", country: "Finland" });
// Find users whose skills array contains "code"
const coders = await users.find({ skills: "code" }).toArray();Sık sorulan sorular
SQL ile NoSQL arasındaki fark nedir?
SQL veritabanları veriyi sabit şemalı tablolarda saklar ve sorgular için SQL kullanır; NoSQL veritabanları ise doküman ya da anahtar-değer çifti gibi başka modelleri, genellikle esnek bir şemayla kullanır. SQL veritabanları karmaşık sorgularda ve tutarlılıkta güçlüdür; NoSQL veritabanları çoğunlukla esneklik ve yatay ölçek için seçilir.
MongoDB bir NoSQL veritabanı mıdır?
Evet. MongoDB, en yaygın kullanılan NoSQL türlerinden biri olan bir doküman veritabanıdır ve veriyi JSON benzeri dokümanlar olarak saklar.
NoSQL veritabanları işlemleri (transaction) destekler mi?
MongoDB dahil birçok modern NoSQL veritabanı çok dokümanlı işlemleri destekler, ancak sağlanan garantiler ürüne göre değişir. Geçmişte birçok NoSQL sistemi yalnızca tek bir kayıtta atomik değişiklik garanti ediyordu.
Sık karşılaştırılanlar
İlgili sayfalar
- VeritabanıVeritabanları, s. 37Veritabanı, bilgisayarda düzenli biçimde saklanan ve uygulamaların verimlice kaydedip arayıp güncelleyebildiği, bir yazılımla yönetilen veri topluluğudur.
- SQLVeritabanları, s. 29SQL, ilişkisel veritabanlarıyla çalışmanın standart dilidir; tablo oluşturmak ve içindeki veriyi eklemek, sorgulamak, güncellemek ve silmek için kullanılır.
- JSONBackend ve API'ler, s. 24JSON, yapılandırılmış veriyi anahtar-değer çiftleri ve listelerle saklayıp aktarmaya yarayan, insanın da makinenin de okuyabildiği hafif bir metin biçimidir.
- TransactionVeritabanları, s. 36Transaction, tek bir bütün olarak başarılı ya da başarısız olan veritabanı işlemleri grubudur; böylece veri asla yarım kalmış, tutarsız bir durumda bırakılmaz.
- MikroservislerYazılım Mimarisi, s. 24Mikroservisler, bir uygulamanın ağ üzerinden iletişim kuran, küçük ve bağımsız olarak dağıtılabilen servislere bölündüğü bir mimari tarzdır.
- CAP TeoremiVeritabanları, s. 3CAP teoremi, ağ arızası dağıtık bir veritabanını böldüğünde sistemin tutarlılık ile erişilebilirlikten birini seçmesi gerektiğini söyler; ikisi birden olamaz.
- MongoDBVeritabanları, s. 17MongoDB, veriyi tablo satırı yerine esnek, JSON benzeri belgelerde saklayan bir belge veritabanıdır; aynı koleksiyondaki kayıtların alanları farklı olabilir.
- RedisVeritabanları, s. 27Redis, okuma ve yazmayı milisaniyenin çok altında yapan bellek içi bir anahtar-değer deposudur; önbellek, oturum deposu ve mesaj aracısı olarak yaygındır.
- DynamoDBVeritabanları, s. 10Amazon DynamoDB, öğeleri anahtarla saklayan, otomatik ölçeklenen ve sorguları tek haneli milisaniyelerde yanıtlayan, AWS'de tam yönetilen NoSQL veritabanıdır.
- Çizge VeritabanıVeritabanları, s. 5Çizge veritabanı, veriyi ilişkilerle bağlı düğümler olarak saklar; arkadaşların arkadaşları ya da öğe bağımlılıkları gibi bağlantıları izlemeyi hızlandırır.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin