İçeriğe atla

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.[1][2][3][4] 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."[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 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.[7] 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.[7] 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ü,[8] 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).[9] 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[10] ve Waterloo Üniversitesi'nde HBase 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ı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.[12]

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.[13]

Sınıflandırma

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

Doküman tabanlı

AdDilNotlar
BaseXXQueryXML veritabanı
CouchDBErlang
eXistXQueryXML veritabanı
JackrabbitJava
Lotus Notes???birden çok değerli
MarkLogic ServerXQueryXML veritabanı
MongoDBC++
SimpleDBErlang
TerrastoreJava

Çizelge

AdDilNotlar
AllegroGraphSPARQLRDF GraphStore
Neo4jJava
DEXJava, .NETYüksek performanslı Graph veritabanı
FlockDBScala

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.[14] Şu türler vardır:

Sonunda tutarlı anahtar-değer deposu

  • Cassandra
  • Dynamo
  • Hibari
  • Project Voldemort
  • Riak [15]

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

Ç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

  1. ^ Hamilton, James (3 Kasım 2009). "Perspectives: One Size Does Not Fit All". 26 Kasım 2009 tarihinde kaynağından arşivlendi. Erişim tarihi: 13 Kasım 2009. 
  2. ^ Lakshman, Avinash; Malik, Prashant. "Cassandra — A Decentralized Structured Storage System" (PDF). Cornell University. 23 Kasım 2009 tarihinde kaynağından arşivlendi (PDF). Erişim tarihi: 13 Kasım 2009. 
  3. ^ Chang, Fay. "Bigtable: A Distributed Storage System for Structured Data" (PDF). Google. 11 Mayıs 2008 tarihinde kaynağından (PDF) arşivlendi. Erişim tarihi: 13 Kasım 2009. 
  4. ^ Kellerman, Jim. "HBase: structured storage of sparse data for Hadoop" (PDF). Erişim tarihi: 13 Kasım 2009. 
  5. ^ "NoSQL Relational Database Management System: Home Page". Strozzi.it. 2 Ekim 2007. 20 Nisan 2016 tarihinde kaynağından arşivlendi. Erişim tarihi: 29 Mart 2010. 
  6. ^ "NOSQL 2009". Blog.sym-link.com. 12 Mayıs 2009. 16 Temmuz 2011 tarihinde kaynağından arşivlendi. Erişim tarihi: 29 Mart 2010. 
  7. ^ a b Agrawal, Rakesh; ve diğerleri. (2008). "The Claremont report on veritabanı research" (PDF). SIGMOD Record. 37 (3). ACM. ss. 9-19. doi:10.1145/1462571.1462573. ISSN 0163-5808. 16 Temmuz 2011 tarihinde kaynağından arşivlendi (PDF). Erişim tarihi: 17 Nisan 2011. 
  8. ^ "Looking to the future with Cassandra | Digg About". About.digg.com. 9 Eylül 2009. 22 Temmuz 2012 tarihinde kaynağından arşivlendi. Erişim tarihi: 29 Mart 2010. 
  9. ^ "CloudTPS: Scalable Transactions for Web Applications in the Cloud". Globule.org. 30 Haziran 2010 tarihinde kaynağından arşivlendi. Erişim tarihi: 29 Mart 2010. 
  10. ^ "Large-scale Incremental Processing Using Distributed Transactions and Notifications". The 9th USENIX Symposium on Operating Systems Design and Implementation (OSDI 2010), Oct 4–6, 2010, Vancouver, BC, Canada. 5 Mart 2016 tarihinde kaynağından arşivlendi. Erişim tarihi: 15 Ekim 2010. 
  11. ^ "Supporting Multi-row Distributed Transactions with Global Snapshot Isolation Using Bare-bones HBase" (PDF). The 11th ACM/IEEE International Conference on Grid Computing (Grid 2010), Oct 25-29, 2010, Brussels, Belgium. 29 Haziran 2011 tarihinde kaynağından (PDF) arşivlendi. Erişim tarihi: 15 Ekim 2010. 
  12. ^ "Cassandra: Structured Storage System over a P2P Network" (PDF). 24 Ağustos 2009 tarihinde kaynağından arşivlendi (PDF). Erişim tarihi: 29 Mart 2010. 
  13. ^ "Consistent Join Queries in Cloud Data Stores". Globule.org. 7 Ocak 2012 tarihinde kaynağından arşivlendi. Erişim tarihi: 31 Ocak 2011. 
  14. ^ Marc Seeger (21 Eylül 2009). "Key-Value Stores: a practical overview". http://www.slideshare.net/marc.seeger/keyvalue-stores-a-practical-overview: slideshare. 16 Temmuz 2011 tarihinde kaynağından arşivlendi. Erişim tarihi: 9 Mart 2010. 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. 
  15. ^ "Riak: An Open Source Scalable Data Store". 28 Kasım 2010. 4 Aralık 2010 tarihinde kaynağından arşivlendi. Erişim tarihi: 28 Kasım 2010. 

Dış bağlantılar

İlgili Araştırma Makaleleri

SQL, verileri yönetmek ve tasarlamak için kullanılan bir dildir. SQL, kendi bir programlama dili olmamasına rağmen birçok kişi tarafından programlama dili olarak bilinir. SQL herhangi bir veri tabanı ortamında kullanılan bir alt dildir. SQL ile yalnızca veri tabanı üzerinde işlem yapılabilir; veritabanlarında bulunan sistemlere bilgi ekleme, bilgi değiştirme, bilgi çıkarma ve bilgi sorgulama için kullanılmaktadır. Özellikle de ilişkisel veritabanı sistemleri üzerinde yoğun olarak kullanılmaktadır. SQL'e özgü cümleler kullanarak veri tabanına kayıt eklenebilir, olan kayıtlar değiştirilebilir, silinebilir ve bu kayıtlardan listeler oluşturulabilir.

Oracle Corporation, merkezi Austin, Teksas'da bulunan, Amerika Birleşik Devletleri merkezli çok uluslu bilgisayar teknolojisi şirketidir. Microsoft'un ardından dünyanın en büyük ikinci yazılım şirketidir. 120.000'i aşkın çalışanı, 380.000'den fazla müşterisi ile 145 ülkede faaliyet göstermektedir.

Veritabanları, yapılandırılmış bilgi veya verilerin depolandığı alanlardır. Bilgi artışıyla birlikte bilgisayarda bilgi depolama ve bilgiye erişim konularında yeni yöntemlere ihtiyaç duyulmuştur. Veritabanları; büyük miktardaki bilgileri depolamada geleneksel yöntem olan "dosya-işlem sistemine" alternatif olarak geliştirilmiştir. Telefonlardaki kişi rehberi günlük hayatta çok basit bir şekilde kullanılan veri tabanı örneği olarak kabul edilebilir. Bunların dışında internet sitelerindeki üyelik sistemleri, akademik dergilerin ve üniversitelerin tez yönetim sistemleri de veritabanı kullanımına örnektir. Veritabanları sayesinde bilgilere ulaşılabilir ve onları düzenlenebilir. Veritabanları genellikle bireysel olarak satın alınamayacak kadar yüksek meblağlara sahip olmasına karşın; ücretsiz kullanıma açılan akademik veritabanları da bulunmaktadır. Akademik veritabanları aracılığıyla bazen bibliyografik bilgi bazen de tam metinlere erişmek mümkündür. Veritabanları, veritabanı yönetim sistemleri aracılığıyla oluşturulur ve yönetilir. Bu sistemlere; Microsoft Access, MySQL, IBM DB2, Informix, Interbase, Microsoft SQL Server, PostgreSQL, Oracle ve Sysbase örnek olarak verilebilir.

Trigger yani tetikleyici, ilişkisel veri tabanı yönetim sistemlerinde bir tabloda belirli olaylar meydana geldiği zaman yani ekleme, güncelleme, silme işlemlerinden biri gerçekleşmeden önce veya sonra çalışan ve belirli işlemleri kodlandığı şekilde yerine getiren yordamdır.

Kaydedilmiş işlev, veritabanı yönetim sistemlerinde veritabanı istemcisinden tüm komut dizilerini çağırmak için kullanılabilen bir komuttur. Bu nedenle, bir dizi kayıtlı komutu çalıştıran bağımsız bir komuttur. Kaydedilmiş işlevler, ilgili veritabanının veri sözlüğüne kaydedilir.

<span class="mw-page-title-main">PostgreSQL</span> Veri tabanı yönetim sistemi

PostgreSQL ya da Postgres, özgür ve açık kaynak kodlu, SQL destekli bir ilişkisel veritabanı yönetim sistemidir.

<span class="mw-page-title-main">Microsoft SQL Server</span>

Microsoft SQL Server, Microsoft tarafından geliştirilen ve yönetilen bir ilişkisel veritabanı yönetim sistemidir. SQL Server, büyük ve karmaşık veritabanlarını depolamak, yönetmek, sorgulamak ve işlemek için kullanılan bir yazılım ürünüdür. Veri depolama, veri güvenliği, yedekleme, geri yükleme, veri entegrasyonu, analiz ve raporlama gibi çeşitli veritabanı yönetimi işlevlerini destekler.

NoSQL kavramı şu anlamlara gelir:

NoSQL, bir UNİX shell tabanlı hızlı ve taşınabilir bir ilişkisel veritabanı yönetim sistemidir. İşlemci hızı ve elektronik bellek büyüklüğü dışında herhangi bir keyfî sınırlaması yoktur. NoSQL, UNIX işletim sistemiyle çalışır. SQL'yi hiç kullanamayan ve dağıtık veritabanları kullanmayı öneren NoSQL kavramına karşın NoSQL bu dili kasten kullanmamaktadır.

Bir uzamsal (mekansal) veri tabanı verileri depolamak ve bir geometrik uzayda/uzamda/mekanda tanımlanmış nesneleri temsil için sorgu verileri ile en uygun hale getirilmiş bir veri tabanıdır. En gelişmiş uzamsal veri tabanları, noktalar, çizgiler ve çokgenler gibi basit geometrik nesnelerin temsiline izin verir. Bazı uzamsal veri tabanları, 3D nesneler, topolojik kapatıcılık, doğrusal ağlar ve Üçgenlenmiş Düzensiz Ağ gibi daha karmaşık yapıları işlemektedir. Özgün veri tabanları çeşitli sayısal veriler ve karakter tiplerini yönetmek için tasarlanmış olsa da veri tabanlarına etkin uzamsal veri türlerini işlemek için ek işlevsellik eklenmesi gerekiyor. Bunlara genellikle geometri veya özellik denir. Open Geospatial Consortium basit özelliklerin belirtimini oluşturdu ve veri tabanı sistemlerinde uzamsal işlevsellik eklemek için ölçütleri belirliyor.

Aşağıdaki tablolarda mevcut veritabanı yöneticisi araçların bir dizisi için genel ve teknik bilgilerin karşılaştırılması verilmiştir. Daha fazla bilgi için bireysel ürün makalelerine bakınız. Bu makale her şey dahil mutlaka günceldir.

İlişkisel veritabanı, 1970 yılında Edgar Frank Codd tarafından önerildiği gibi, organizasyonu ilişkisel veri modeline dayanan bir dijital veritabanıdır. İlişkisel veritabanlarını korumak için kullanılan çeşitli yazılım sistemleri bir ilişkisel veritabanı yönetim sistemi (RDBMS) olarak bilinir. Neredeyse tüm ilişkisel veritabanı sistemleri, sorgulama ve veritabanının bakımı için dil olarak SQL(Structured Query Language) kullanmaktadırlar.

SQL Server Compact veya SQL CE Mobil cihazlar ve masaüstü uygulamalar için Microsoft tarafından üretilen kompakt bir ilişkisel veritabanıdır. Masaüstü platformunun tanıtımından önce, Windows CE ve SQL Server Mobile Edition için SQL Server olarak biliniyordu. En yeni sürüm SQL Server Compact 4.0, .NET Framework 4.0'ı destekliyor ve bu sürümde Windows Mobile için destek bırakıyor. Hem 32 bit hem de 64 bit yerel desteği içerir. SQL CE zaman zaman bağlı uygulamaları ve uygulamaları gömülü bir veritabanı ile hedefler. İndirmek ve yeniden dağıtmak serbesttir. SQL CE için bir ODBC sürücüsü yoktur ve planlanmamış biridir. Yerel uygulamalar, OLE DB aracılığıyla SQL CE'yi kullanabilir.

<span class="mw-page-title-main">DBeaver</span>

DBeaver, bir SQL istemcisi ve veritabanı yönetim aracıdır. İlişkisel veritabanları ile JDBC sürücüleri üzerinden iletişim sağlar. Diğer veritabanları için, özel veritabanı sürücülerini kullanır. Kod tamamlayıcısı ve sözdizimi vurgulama özelliklerine sahip bir metin editörüne sahiptir. Ayrıca kullanıcılara yeni özellikler ekleyebileceği plug-in sistemi de sağlamaktadır. Masaüstü uygulaması Java diliyle yazılmıştır ve Eclipse platformu üzerine kuruludur.

LevelDB, Jeffrey Dean ve Sanjay Ghemawat tarafından yazılan açık kaynaklı bir anahtar / değer deposudur. Bigtable'dan esinlenen LevelDB, GitHub'da Yeni BSD Lisansı altında barındırılmaktadır ve çeşitli Unix tabanlı sistemlere, macOS, Windows ve Android'e taşınmıştır.

<span class="mw-page-title-main">RocksDB</span>

RocksDB, anahtar / değer verileri için yüksek performanslı yerleşik bir veritabanıdır. Çoklu merkezi işlem birimi (CPU) çekirdeğinden yararlanmak ve giriş / çıkış bağlı iş yükleri için katı hal sürücüleri (SSD) gibi hızlı depolamayı verimli bir şekilde kullanmak üzere optimize edilmiş, Google tarafından geliştirilen LevelDB'nin bir çatalıdır. Günlük yapılı birleştirme ağacı veri yapısına dayanır.

NewSQL, geleneksel bir veritabanı sisteminin ACID garantilerini korurken, çevrimiçi işlem işleme iş yükleri için NoSQL sistemlerinin ölçeklenebilirliğini sağlamaya çalışan bir ilişkisel veritabanı yönetim sistemleri sınıfıdır.

<span class="mw-page-title-main">İlişkisel model</span> Veritabanı modeli

İlişkisel model, veritabanı yönetiminde birinci dereceden yüklem mantığına dayanan bir yaklaşımdır. Veriler, ilişkilerde gruplanmış demetler üzerinden temsil edilir. İlişkisel model kullanılarak tasarlanan veritabanlarına ilişkisel veritabanı adı verilir.

Belge odaklı veritabanı veya belge deposu, yarı yapılandırılmış veriler olarak da bilinen belge odaklı bilgileri depolamak, almak ve yönetmek için tasarlanmış bir bilgisayar programı ve veri depolama sistemidir.

Anahtar-değer veritabanı, bir anahtar ve o anahtarla ilişkili veriyi depolayan ve yöneten bir veritabanı türüdür. Bu model, genellikle büyük ölçekli dağıtık sistemlerde kullanılır ve özellikle NoSQL veritabanlarının bir kategorisi olarak öne çıkar. Her veri öğesi, genellikle tekil ve benzersiz bir anahtar ile ilişkilendirilmiş bir değerden oluşur.