Bu maddenin içeriğininTürkçeleştirilmesi veyaTürkçe dilbilgisi ve kuralları doğrultusunda düzeltilmesi gerekmektedir. Bu maddedeki yazım ve noktalama yanlışları ya da anlatım bozuklukları giderilmelidir. (Yabancı sözcükler yerine Türkçe karşılıklarının kullanılması, karakter hatalarının düzeltilmesi, dilbilgisi hatalarının düzeltilmesi vs.) Düzenleme yapıldıktan sonra bu şablon kaldırılmalıdır. |
Bilgisayar bilimleri'ndeNoSQL, klasikilişkisel veritabanı yönetim sistemlerinden (İVTYS) bir şekilde farklı olanveritabanı yönetim sistemleri için kullanılan bir kavramdır.Bu veri depolarının sabittabela düzenlerine ihtiyaçları olmayabilir, alışılagelmişjoin işlemleri kullanılmaz, tipik olarakyatay ölçeklemeye gidilir. Akademisyenlerce ve makalelerde tipik olarak böyle veri depolarınayapılanmış bellek (structured storage) denir.[1][2][3][4] Bu kavram klasik ilişkisel veritabanlarını altküme olarak görür. Bu kavram aynı zamandaSQL ve Daha Fazlası (Not Only SQL) olarak da adlandırılmaktadır.
NoSQL kavramı 1998'de çıkarılan SQL arayüzü olmayan hafif biraçık kaynakilişkisel veritabanı. Tasarımcısı Carlo Strozzi, NoSQL hareketi "ilişkisel modelden tamamen ayrılırken ona bundan dolayı daha uygun olarakilişkisel olmayan anlamında 'NoREL' (İng.no relation) veya benzeri bir ad vermek gerektiğini ileri sürer."[5]
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ı.[6] Bu adla artan sayıda ortaya çıkan ve ilişkisel olmayan ve çoğu zamanACID 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ı veGraph veritabanlarının kullanımının altını çizmesine rağmen "ilişkisel olmayan"'dır.[kaynak belirtilmeli]
Tipik modern ilişkisel veritabanları çok sayıda belgeyiindeksleme, yoğun trafiği olansunan Web sayfalarında vestreaming medya sağlama gibi kimi yoğun veri uygulamalarında yetersiz edim göstermişlerdir.[7] Tipik İVTYS uygulamaları ya küçük fakat sıkça oku/yaz işlemleri ya da ender yazaz büyük komut listesikomut liste (İng.batch) hareketleri (işlemleri) ayarlanır. Diğer taraftan NoSQL, yoğun oku/yaz hizmeti verir.[7] Gerçek Dünya NoSQL yerleşimleri green badges (sosyal ağlarda başkalarınca değerlendirilen hikâyeleri gösteren belirleyiciler) içinDigg'in 3TB'lı çözümü,[8]Facebook'un gelen postaları arama için 50 TB veeBay'in bütün verileri için 2PB.
NoSQL mimarileri çoğu zamansonunda 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 bazı oluşumlarda tamACID garantisi verirler (mesela CloudTPS).[9] Sütun depoları içinşipşak yalıtım sağlayan iki sistem geliştirilmiştir. Bunlar Google'unBigTable'e dayanan Percolator sistemi[10] veWaterloo Üniversitesi'ndeHBase için geliştirilmiş hareketsel sistem (İng.transactional system).[11] 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ıkACID işlemleri sağlar.
Birçok NoSQL sistemi, verilerin farklısunucularda yedeklemesini yapandağıtık mimariyi kullanır. Bu saklamalar geneldedağı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.[12]
Kimi NoSQL savunucuları[kim?]birleşik dizinler (İng.associative array) veya anahtar-değer çiftleri gibi çok basitarayüzlerine ağırlık verir. DoğalXML veritabanları gibi diğer sistemlerXQuery standardını destekler.[kaynak belirtilmeli] CloudTPS gibi daha yeni sistemler ayrıcajoin sorgulamalarını da içermektedir.[13]
NoSQL uygulamalarını yapılışlarına göre sınıflamak mümkündür:
| Ad | Dil | Notlar |
|---|---|---|
| BaseX | XQuery | XML veritabanı |
| CouchDB | Erlang | |
| eXist | XQuery | XML veritabanı |
| Jackrabbit | Java | |
| Lotus Notes | ??? | birden çok değerli |
| MarkLogic Server | XQuery | XML veritabanı |
| MongoDB | C++ | |
| SimpleDB | Erlang | |
| Terrastore | Java |
| Ad | Dil | Notlar |
|---|---|---|
| AllegroGraph | SPARQL | RDF GraphStore |
| Neo4j | Java | |
| DEX | Java,.NET | Yüksek performanslıGraph veritabanı |
| FlockDB | Scala |
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.[14] Şu türler vardır:
Key value stores allow the application developer to store schema-less data. This data is usually consisting of a string that represents the key, and the actual data that is considered to be the value in the "key - value" relationship. The data itself is usually some kind of primitive of the programming language (a string, an integer, an array) or an object that is being marshalled by the programming languages bindings to the key value store. This replaces the need for fixed data model and makes the requirement for properly formatted.