NoSQL (kavram)

Bilgisayar bilimleri'nde NoSQL, klasik ilişkisel veritabanı yönetim sistemlerinden (İVTYS) bir şekilde farklı olan veritabanı yönetim sistemleri için kullanılan bir kavramdır.
Bu veri depolarının sabit tabela düzenlerine ihtiyaçları olmayabilir, alışılagelmiş join işlemleri kullanılmaz, tipik olarak yatay ölçeklemeye gidilir. Akademisyenlerce ve makalelerde tipik olarak böyle veri depolarına yapılanmış bellek (structured storage) denir.  Bu kavram klasik ilişkisel veritabanlarını altküme olarak görür.  Bu kavram aynı zamanda SQL ve Daha Fazlası (Not Only SQL) olarak da adlandırılmaktadır.

Tarihçe 
NoSQL kavramı 1998'de çıkarılan SQL arayüzü olmayan hafif bir açık kaynak ilişkisel veritabanı. Tasarımcısı Carlo Strozzi, NoSQL hareketi "ilişkisel modelden tamamen ayrılırken ona bundan dolayı daha uygun olarak ilişkisel olmayan anlamında 'NoREL' (İng. no relation) veya benzeri bir ad vermek gerektiğini ileri sürer."

Rackspace'ın bir çalışanı olan Eric Evans, NoSQL kavramını  Last.fm'den Johan Oskarsson açık kaynak dağıtık veritabanlarının görüşüleceği bir toplantı plânlamak istediğinde 2009 başında tekrar kullanmaya başlandı. Bu adla artan sayıda ortaya çıkan ve ilişkisel olmayan ve çoğu zaman ACID garantisini vermeyi amaçlamayan dağıtık veri depolarına damgasını vurmak istemişti. ACID, IBM DB2, MySQL, Microsoft SQL Server, PostgreSQL, Oracle İVTYS, Informix gibi klasik ilişkisel veritabanı sistemlerinde sağlanan temel özelliklerdendir.

2009'da Atlanta'daki "no:sql(east)" konferansının NoSQL tartışması üzerinde derin etkileri oldu. Kendisini "ilişkisel olmayan veri depolarıyla ilgili bir konferansı" olarak görmekte olan ve sloganı "eğlenceyi seç, ilişkisel=yanlış; olan gerçek Dünyâ'dan faydalan" (İng. "select fun, profit from real_world where relational=false;") olan bu konferansın NoSQL tartışmasına etkisi olmuştur. Böylece  "NoSQL" 'in en genel yorumu, anlamı anti-İVTYS olmayıp anahtar-değer depoları, belge  veritabanları ve Graph veritabanlarının kullanımının altını çizmesine rağmen "ilişkisel olmayan"'dır .

Mimarisi 
Tipik modern ilişkisel veritabanları çok sayıda belgeyi indeksleme, yoğun trafiği olan sunan Web sayfalarında ve streaming medya sağlama gibi kimi yoğun veri uygulamalarında yetersiz edim göstermişlerdir.  Tipik İVTYS uygulamaları ya küçük fakat sıkça oku/yaz işlemleri ya da ender yazaz büyük komut listesi komut liste (İng. batch) hareketleri (işlemleri) ayarlanır. Diğer taraftan NoSQL, yoğun oku/yaz hizmeti verir. Gerçek Dünya NoSQL yerleşimleri green badges (sosyal ağlarda başkalarınca değerlendirilen hikâyeleri gösteren belirleyiciler) için Digg'in 3 TB'lı çözümü, Facebook'un gelen postaları arama için 50 TB ve eBay'in bütün verileri için 2 PB.

NoSQL mimarileri çoğu zaman sonunda tutarlı (İng. eventual consistency) veya tek veri maddesiyle sınırlı işlemlerde zayıf tutarlılık garantisi verir. Fakat kimi sistemler, yardımcı özel yazılım tabakası ekleyerek bâzı oluşumlarda tam ACID garantisi verirler (mesela CloudTPS). Sütun depoları için şipşak yalıtım sağlayan iki sistem geliştirilmiştir. Bunlar Google'un BigTable'e dayanan Percolator sistemi ve Waterloo Üniversitesi'nde HBase için geliştirilmiş hareketsel sistem (İng. transactional system). Ayrı ayrı geliştirilmiş bu sistemler, benzer kavramlar şipşak yalıtım kullanarak veri yönetimi için fazladan işlemlere, ara yazılım yerleştirmesi (İng. middleware system deployment) veya ara yazılım tabakasından kaynaklanan bakıma gerek duymadan altındaki sütun deposu için garantili çok satırlı dağıtık ACID işlemleri sağlar.

Birçok NoSQL sistemi, verilerin farklı sunucularda yedeklemesini yapan dağıtık mimariyi kullanır. Bu saklamalar genelde dağıtık hash çizelgeleri ile yapılır. Böylece sistem kolayca yeni sunucular eklenerek büyütülebilir ve bir sunucunun arızalanmasına katlanılabilir.

Kimi NoSQL savunucuları birleşik dizinler (İng. associative array) veya anahtar-değer çiftleri gibi çok basit arayüzlerine ağırlık verir. Doğal XML veritabanları gibi diğer sistemler XQuery standardını destekler. CloudTPS gibi daha yeni sistemler ayrıca join sorgulamalarını da içermektedir.

Sınıflandırma 
NoSQL uygulamalarını yapılışlarına göre sınıflamak mümkündür:

Doküman tabanlı

Çizelge

Anahtar-değer deposu 
Anahtar-değer depoları düzeni olmayan veri depoları olup uygulamaların verilerini saklamaya yararlar. Veri alışılageldiği şekilde seçilen programlama dilinin veri türünde veya bir nesnede saklanır. Böyece sâbit bir veri modeline gerek yoktur. Şu türler vardır:

Sonunda tutarlı anahtar-değer deposu 
 Cassandra
 Dynamo
 Hibari
 Project Voldemort
 Riak

Aşamalı anahtar-değer deposu 
 GT.M
 GlobalsDB

Konuklanmış hizmetler (İng. hosted services) 
 Freebase

Anahtar-değer RAM'da ön bellekte 
 Citrusleaf veritabanı
 memcached
 Oracle Coherence
 Redis
 Tuple space
 Velocity

Paxos algoritmasını uygulayan anahtar-değer depoları 
 Keyspace

Diskte anahtar-değer depoları 
 BigTable
 CDB
 Citrusleaf veritabanı
 Dynomite
 Keyspace
 membase
 Memcachedb
 Redis
 Tokyo Cabinet
 TreapDB
 Tuple space

Çoklu değer veritabanları 
 Extensible Storage Engine (ESE/NT)
 OpenQM
 Revelation Software'in OpenInsight'ı
 Rocket U2

Nesnel veritabanları 
 db4o
 GemStone/S
 InterSystems Caché
 JADE
 Objectivity/DB
 ObjectStore
 Versant Object veritabanı
 ZODB

Kerte anahtar-değer deposu 
 Berkeley DB
 IBM Informix C-ISAM
 Memcachedb
 NMDB

Çizelge halinde 
 BigTable
 Hbase
 Hypertable
 Mnesia

Değişkenler grubu deposu 
 Apache River

Ayrıca bakınız 

 CAP kuramı
 Nesnel veritabanı yönetim sistemlerinin listesi
 Nesnel veritabanı yönetim sistemlerinin karşılaştırması
 Yapılandırılmış depolama yazılımlarının karşılaştırması
 Yönlü arama (İng. faceted search)
 Triplestore

Kaynakça

Dış bağlantılar 
   on [ODBMS.ORG: NoSQL Data Stores Section]
 NoSQL User Group  on LinkedIn
 nosql-discussion  on Google Groups
 nosqldatabases.com
 myNoSQL: news, articles ve links about NoSQL 
 nosql-databases.org 
 computerworld.com : No to SQL? Anti-veritabanı movement gains steam
 Is Microsoft Feeling the "NoSQL" Heat? 
 Information Week "The NoSQL Alternative" 
 How RDF veritabanları Differ from Other NoSQL Solutions
 CouchOne
 NoSql Tapes 

 
Dağıtık veri depoları
Veri yönetimi