NoSQL Veritabanları

Halis Ak
5 min readJan 19, 2020

--

NoSQL Nedir?

“NoSQL” sözcüğü ilk defa 1998 yılında Carlo Strozzi tarafından kullanılmış. Geliştirdiği ilişkisel veritabanının sorgulama dili olarak SQL’i kullanmadığını belirtmek isteyen Strozzi, açık kaynak kodlu veritabanı için NoSql DB ismini kullanmıştı. Sonradan NoSql ifadesi daha çok “ilişkisel olmayan” anlamında kullanılmış, Strozzi de ilişkisel olmayan veritabanlarının NoSql yerine NoRel(no reletional) şeklinde isimlendirilmesinin daha doğru olacağını belirtmiş.

Günümüzde ise bildiğimiz sql tabanlı veritabanları dışındaki tüm veritabanları için NoSql terimi kullanılır. İilişkisel olmayan, NoRDBMS, NonRel ve Not Only Sql de diğer ifade ediliş şekilleridir.

NoSQL teknolojiler aslında uzun yıllardır hayatımızda, ancak günümüzde veri yelpazesinin genişlemesi, bulut, mobil, iot, sosyal medya ve big data ile oluşturulan çok çeşitli ve büyük hacimli verileri işleme gereksinimi NoSQL’in yayılmasına ve popülerliğinin artmasına olanak sağladı.

NoSQL; ilişkisel veritabanlarına alternatif, ilişkisel olmayan, esnek yapılı, büyük verili ve çok sayıda aktif kullanıcılı sistemlerde yüksek performans ve yönetim kolaylığı sunan veritabanı çözümüdür.

Çok sayıda kullanıcının aynı anda aktif olması durumu ve veritabanı şemalarının sıklıkla değiştirilmesi gerekliliği, NoSql’i ön plana çıkartır. Yaygın olarak kullanılan ilişkisel veritabanlarında, tablolar-sütunlar şeklinde hiyerarşik bir yapılanma söz konusudur ve yeni tip bir veri geldiğinde öncelikle yeni sütunlar tanımlanmalıdır. Bu durum da, veritabanının ilişkisel yapısı nedeniyle tümüyle ele alınması veya yeniden şekillendirilmesi gerekliliği gibi ek maliyetler doğurabilmektedir.

NoSql veritabanlarında ise tablo ve sütun yapısı olmadığından, esnek yapı veritabanının az maliyetle genişlemesine olanak sağlar. İnternet ortamında oluşturulan yapısal olmayan düzensiz büyük verinin, ilişkisel veritabanları ile düşük maliyetli, performanslı ve kolay bir şekilde yönetilememesi NoSql’e yönelimin temel sebebidir.

NoSql db’ler ayrıca yüksek bütçe gerektiren dikey büyümeye müsait ilişkisel veritabanlarının aksine, yatay büyümeye müsaittir.

Dikey büyümeyi, sunucuların cpu, ram, hdd gibi bileşenlerinin yükseltilmesi olarak tanımlayabiliriz. Bunun bir sınırı olduğu ve maliyetinin yüksek olacağı görülebilir.

Yatay büyüme ise, gerekli durumda mevcut sunucuya aynı özellikte(olmayadabilir) yeni bir sunucunun eklenerek, sunucu arttırma işlemi yapılmasıdır. Bu şekilde binlercew sunucu bir arada çalışabilir.

Nosql veritabanı türleri :

  • Key-Value (Anahtar-Değer) : Bilgiler bir anahtar ve karşılığında bir değer şeklinde saklanır. Kullanan sistemler : MemcacheDB , Redis , Dynamo, Riak, Voldemort , WebSphere eXtreme Scale
  • Document Oriented (Döküman Tabanlı) : Her nesneyi (id’li bir nesneyi) ayrı bir doküman olarak XML, JSON, BSON, Binary, PDF.. gibi formatlarda saklayabilir. Kullanan sistemler : MongoDB, CouchDB , RavenDB, MarkLogic
  • Column Oriented (Sütun Tabanlı) : Her sütun için değerleri ayrı olarak saklayan ve erişen veri sistemleri. Kullanan sistemler :Hbase, Cassandra, Accumulo
  • Graph (Çizelge) : Kayıt graph (çizelge) adı verilen bir ilişki yapısında saklanmaktadır. Kullanan sistemler : Neo4J, OrientDB, Allegro, Virtuoso, Sones, Jena, Sesame

NoSQL veritabanları özellikle büyük veri hacmi, düşük gecikme süresi ve esnek veri modelleri gerektiren uygulamalar için optimize edilmiştir. Bu gereksinimler, diğer veritabanlarının veri tutarlılığı kısıtlamalarının(ACID) bir kısmı esnetilerek karşılanır. Bu nedenle NoSQL DB’ler için, bankacılık/finans gibi veri tutarlığının önemli olduğu platformalarda kullanımı uygun değildir denebilir.

NoSQL Veritabanlarının Avantajları

Genellikle yüksek sorgu hızları sunan NoSQL veritabanları, öngörülemeyen verileri işleme konusunda çok etkilidir, sürekli genişleyen veri türleri ve modellerinin yönetilmesinde başarılıdır. Esnek, ölçeklenebilir, yüksek performanslı ve yüksek oranda işlevsel veritabanları gerektiren mobil, web ve oyun gibi birçok modern uygulama için idealdirler.

NoSQL Veritabanları
  • Esneklik: NoSQL genellikle daha hızlı ve daha fazla yinelemeli yazılım geliştirmeyi mümkün kılan esnek şemalar sağlar. Esnek veri modeli sayesinde NoSQL veritabanları yarı yapılandırılmış ve yapılandırılmamış veriler için idealdir.
  • İlişkisel (RDBMS) sistemler transaction bazlıdır ve ACID kurallarına sahiptir. NoSQL sistemler ACID kurallarına tamamen uymaz, pek çok NoSQL sistemde transaction kavramı da yoktur. Bu esneklik performansa olumlu etki sağlar.
  • Ölçeklenebilirlik: NoSQL veritabanları yatay olarak genişleyebilir, yani genellikle pahalı ve kalıcı sunucular eklenerek ölçeği artırılabilecek şekilde değil, dağıtılmış donanım kümeleri kullanılarak ölçeği genişletilebilecek şekilde tasarlanır. Binlerce sunucu bir arada küme olarak çalışabilir ve çok büyük veriler üzerinde işlem yapabilirler.
  • Yüksek performans: NoSQL veritabanları, benzer işlevlerin ilişkisel veritabanlarıyla gerçekleştirilmesi ile karşılaştırıldığında daha yüksek performansı mümkün kılan belirli veri modelleri (belge, anahtar-değer, grafik gibi) ve erişim desenlerini destekler.
  • İşlevsellik: NoSQL veritabanları, her biri ilgili veri modeli için özel olarak tasarlanmış yüksek oranda işlevsel API’ler ve veri türleri sağlar.
  • NoSQL veritabanı sistemleri ilişkisel veritabanlarına göre daha yüksek erişilebilirlik imkanı sunarlar. Aynı anda sisteme çok sayıda kullanıcının bağlı olduğu durumlarda kontrol ve yönetim daha kolaydır.
  • NoSQL veritabanı sistemleri birçok açık kaynak kodlu projelere ve bulut bilişim teknolojilerine uygun olduğu için maliyet olarak ilişkisel veritabanı yönetim sistemlerine göre daha avantajlıdır. Açık kaynak kodlu ve ücretsiz seçenekler mevcuttur.
  • Bakım ve yönetimi ilişkisel db’lere kıyasla daha kolaydır.
  • NoSQL sistemler sabit tablo ve sütunlara bağımlı değildir bu da tasarımda bir değişikliğe gidilmesi gerektiğinde işlerin çok daha kolay olacağı anlamına gelir.

NoSQL Sistemlerin Dezavantajları Nelerdir?

  • İlişkisel veritabanı yönetim sistemlerini kullanan uygulamaların NoSQL sistemlere taşınması zaman alıcı ve zahmetli olabilir. Sorgu tabanlı veri erişimi yerine NoSQL sistemlerdeki anahtar tabanlı yapılandırmaya gidilmesi gerekir.
  • ACID (Atomicity, Consistency, Isolation, Durability) kurallarını esnettiğinden, ilişkisel veritabanı yönetim sistemlerindeki gibi transaction kavramı yoktur. Bu da veri kaybı olabileceği anlamına gelir. Finansal uygulamalarda kullanımı tercih edilmez. Yani ACID’i esneterek sağlanan ölçeklenebilme gibi avantajlar veri bütünlüğü yönünden dezavantaj oluşturur denebilir.
  • NoSQL veritabanı sistemleri veri güvenliği konusunda ilişkisel veritabanı yönetim sistemleri kadar gelişmiş değiller. Dökümantasyon ve destek konularında gelişmesi gereklidir.

Kimler Kullanıyor?

NoSQL veri tabanlarının yeni yeni yaygınlaştığı söylenebilir ancak, e-ticaret, internet arama motorları ve sosyal ağlar gibi büyük ölçekli internet uygulamaları için güvenilirliğini ve performansını ispatlamıştır.

NoSql kullanan büyük ölçekli şirketlerden bazıları

İnternetin en büyüğü Google, verilerini BigTable isimli NoSQL veritbanında yönetmektedir. Amazon’un NoSQL çözümü DynamoDB, Amazon‘un yanısıra Airbnb, Samsung, Toyota vb.. pek çok dünya devi kuruluş tarafından da kullanılmaktadır. Facebook, twitter gibi aynı anda çok sayıda kullanıcının aktif olduğu sosyal ağ platformlarında da petabayt’lık nosql veritabanları kullanılmaktadır.

SQL (ilişkisel) ve NoSQL (ilişkisel olmayan) veritabanlarının karşılaştırması

Aşağıdaki tabloda NoSQL ile SQL veritabanları arasındaki başlıca farklar yer alıyor:

SQL ve NoSQL Terminolojileri

Bazı NoSQL veritabanlarınca kullanılan terminolojiler ile SQL veritabanlarında kullanılan terminolojileri aşağıdaki tabloda görebilirsiniz:

Sevgiler..

--

--