NoSQL Kavramı

NoSQL(Not only sql, non sql) kavramı,ilişkisel veritabanı yönetim sistemlerinden farklı olan veritabanlar için kullanılır. Google, Facebook ve Amazon gibi büyük şirketlerin ihtiyaçları doğrultusunda kullanımı yaygınlaşmaya başlamıştır.Veri boyutları arttıkça, verilere daha hızlı erişebilmek ve onları daha kolay biçimde tutma ihtiyaçları oluşmuştur.

Sql – NoSQL kıyasları

sql_nosql_2

RDBMSvsNoSQL

Yukarıda belirtildiği gibi NoSQL veritabanlı object oriented tabanlıdır.Esnektir , ölçeklenebilir ve nihai tutarlılığı vardır.Sql veritabanları yapısaldır.

Temel hedeflerinden biri veritabanı tasarımlarının kolaylaşmasıdır. Yapılarına göre 3 tip sınıflandırma yapabiliriz.Doküman tabanlı(document),çizelge(graph) ve Anahtar-değer deposu(key-value) olarak sınıflandırılır.Çeşitli işlemlerin daha hızlı yapılması amaçlanmaktadır.

NoSQL veritabanları büyük veri(big data) ve gerçek zamanlı web uygulamaları(real time web applications) projelerinde sıklıkla kullanılmaya başlanmıştır.

Şimdi NoSQL veritabanlarını inceleyecek olursak;

  • Column: Accumulo, Cassandra, Druid, HBase, Vertica
  • Document(doküman tabanlı): Apache CouchDB, Clusterpoint, Couchbase, DocumentDB, HyperDex, Lotus Notes, MarkLogic, MongoDB, OrientDB, Qizx, RethinkDB
  • Key-value(anahtar-değer): Aerospike, CouchDB, Dynamo, FairCom c-treeACE, FoundationDB, HyperDex, MemcacheDB, MUMPS, Oracle NoSQL Database, OrientDB, Redis, Riak
  • Graph(çizelge): AllegroGraph, InfiniteGraph, MarkLogic, Neo4J, OrientDB, Virtuoso, Stardog
  • Multi-model: Alchemy Database, ArangoDB, CortexDB, FoundationDB, MarkLogic, OrientDB

NoSQL veritabanı türlerinin performans tablosu

nosqlperformance

NoSQL veritabanlarında sql veritabanlarında kullanılan join yapısı bulunmamaktadır.Join yapısı yerine 3 farklı yöntem kullanılabilir.

  • Multiple Queries(çoklu sorgu): İstenilen veriyi tek bir sorguda getirmek yerine çoklu sorgular yaparak getirebiliriz.NoSQL veritabanlarında sorgu yapmak daha hızlıdır.Bu sebeple belli sayıda çoklu sorgu kullanarak istenilen veriyi elde edebiliriz.
  • Caching/Replication: Bu yöntem genellikle okuma işlemlerinin fazla olduğu durumlarda kullanışlıdır.
  • Nesting data(iç içe veri): Genelde doküman tabanlı MongoDB’de çok kullanılan bir yöntemdir.Gerekli olan veriler tek bir dokümanda tutulur.Örneğin blog yazılarını tutan bir doküman içinde,o blog posta ait olan etiketleri ve yorumları tek bir doküman içerisinde tutabiliriz.

Yukarıda söylediğim örneğe yönelik örnek yapı aşağıda gösterilmiştir.Blog post dokümanı içerisinde etiketler ve yorumları aynı yerde tutulmaktadır.Bu yapıya MongoDB yazılarını yazdığım zaman daha detaylı değineceğim.

Günümüzde en çok kullanılan ve en yaygın olan NoSQL veritabanı çözümü document-oriented tabanlı olan MongoDB’dir. MongoDB üzerine daha detaylı makaleler ve örnekler paylaşıyor olacağım.

Daha detaylı bilgileri aşağıdaki sitelerde bulabilirsiniz.

NoSQLMartin fowlermongodb-nosql

Ayrıca Martin Fowler’ın nosql kavramını anlattığı bir konferans

 

Advertisements

One thought on “NoSQL Kavramı

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s