NOSQL yıllardır kullanılan MSSQL ve MYSQL gibi ilişkisel kullanılan veri tabanı sistemlerine (RDBMS) alternatif olarak türetilmiş bir veri tabanı sistemidir NOSQL sistemlerinde bildiğimiz anlamda sql dili kullanılmadığı için NOSQL olarak adlandırılmıştır Henüz teknolojik bir standart olmadığı için bazı kişiler tarafından “Not Only SQL olarak da isimlendirilir Bazılarına göre yeni, hızlı ve esnek olan bu sistem kimilerine göre henüz yeterli değil Ancak bunun üzerine düşünmek yerine şöyle bir şey düşünelim, BigData Son yıllarda duyduğumuz bu isim yıllardır biriktirdiğimiz verilerin anlamlı hale dönüştürülme çabasıdır Bu veri o kadar büyük boyuta ulaşır ki ilişkisel veri tabanı sistemlerinde tutulamaz Burada tutulamadığı içinde veriler anlamlandırılamaz ve bilgi çöplüğü olarak kalır Ancak bu bilgi çöplüğü diye tabir ettiğimiz aslında çok önemli ve yararlı verileri barındırır İşte bu durumda başvurulan sistem NOSQL çözümleridir
NOSQL'in önemini şöyle vurgulayabiliriz Google yıllardır indekslediği sitelerin bilgilerini RDBMS'de değil Big Table üzerinde tutuyor Bu sayede RDBMS gibi büyük verileri performanslı bir şekilde işleyemeyen pahalı sistemler yerine açık kaynaklı ucuz ve performanslı sistemleri tercih ediyor
6NOSQL'in Farkı Nedir?
NOSQL, RDBMS gibi işlem tabanlı çalışmaz Bunun yerine yatay büyüme yaparak, performans kazancı sağlar Verileri bölerek kopyalarını dağınık sistemin farklı parçalarına ekler böylelikle tutarlılık sağlar ve her bir parça için harcanan yük azaltılmış olur
RDBMS önceden tasarlanıp sütunları belirlenir ve satır satır eklenir Ancak NOSQL de bu tip bir tanıma gerek yoktur Bunun yerine daha esnek bir yapı bulunur Bu kafanızda soru işareti bırakıyorsa şöyle düşünün 2 adet kolonu olan bir tablonuzda integer verileri tutuyorsunuz yeni satırınızda bunlar yerine varchar eklemeniz gerekiyor Hiçbir değişikliğe gerek kalmadan verinizi ekleyebilirsiniz A kolonu B kolonu varken C ve D'ye gerek yok
NOSQL birincil indeks değerine ihtiyaç duyar ve bunun üzerinden erişim sağlar RDBMS de bu zorunlu değildir Oluşan indeks üzerinden belirli aralığa hızlıca ulaşılabilir
Aralarındaki en önemli fark bizce veri tabanı tasarımında oluşuyor RDBMS bir sistem için kullanacağınız veriyi nasıl depolayacağım diye düşünürken, NOSQL için depoladığım veriyi nasıl kullanacağım diye düşünüyorsunuz Bu da proje yazarken sadece projenizi yazmanızı sağlıyor
6NOSQL Sistemleri nelerdir?
Döküman (Document) tabanlı: Bu tip veri tabanları JSON yapısında kayıt yapar Bu yapılarda sınırsız alan oluşturabilirsiniz Hatta sınırsız alanların içine sınırsız alanlar ve onların da içine şeklinde devam edebilirsiniz MongoDB, CouchDB, Amazon Simple DB, Cassandra, HBase
Anahtar Değer (Key Value) tabanlı: Bu sistemlerde anahtarlara karşılık gelen tek bir bilgi bulunur Kolon yapısı yoktur MemcacheDB, Berkeley DB, Azure Table Storage
Grafik (Graph) tabanlı: Bu sistemler diğerlerinden farklı olarak verilerin ilişkisini saklayan Graph Theory modelindeki sistemlerdir Neo4J, FlockDB
6NOSQL Kullanmalı mıyım?
Bunca zamandır RDBMS kullanmıştım ne gerek var NOSQL'e diyebilirsiniz Hatta NOSQL kullanmak çok anlamlı da gelmeyebilir Ancak sürekli büyüyen veri toplayan sitelerde belli bir limitiniz var bunu aştığınız anda yavaşlamalar performans azalmaları başlıyor Bu noktalara ulaşacak projelerde NOSQL tercih edilmelidir En önemlisi her proje NOSQL'e uygun olmayabilir Bunun değerlendirmesinin iyi yapılıp karar verilmesi gerekiyor
NOSQL'in önemini şöyle vurgulayabiliriz Google yıllardır indekslediği sitelerin bilgilerini RDBMS'de değil Big Table üzerinde tutuyor Bu sayede RDBMS gibi büyük verileri performanslı bir şekilde işleyemeyen pahalı sistemler yerine açık kaynaklı ucuz ve performanslı sistemleri tercih ediyor
6NOSQL'in Farkı Nedir?
NOSQL, RDBMS gibi işlem tabanlı çalışmaz Bunun yerine yatay büyüme yaparak, performans kazancı sağlar Verileri bölerek kopyalarını dağınık sistemin farklı parçalarına ekler böylelikle tutarlılık sağlar ve her bir parça için harcanan yük azaltılmış olur
RDBMS önceden tasarlanıp sütunları belirlenir ve satır satır eklenir Ancak NOSQL de bu tip bir tanıma gerek yoktur Bunun yerine daha esnek bir yapı bulunur Bu kafanızda soru işareti bırakıyorsa şöyle düşünün 2 adet kolonu olan bir tablonuzda integer verileri tutuyorsunuz yeni satırınızda bunlar yerine varchar eklemeniz gerekiyor Hiçbir değişikliğe gerek kalmadan verinizi ekleyebilirsiniz A kolonu B kolonu varken C ve D'ye gerek yok
NOSQL birincil indeks değerine ihtiyaç duyar ve bunun üzerinden erişim sağlar RDBMS de bu zorunlu değildir Oluşan indeks üzerinden belirli aralığa hızlıca ulaşılabilir
Aralarındaki en önemli fark bizce veri tabanı tasarımında oluşuyor RDBMS bir sistem için kullanacağınız veriyi nasıl depolayacağım diye düşünürken, NOSQL için depoladığım veriyi nasıl kullanacağım diye düşünüyorsunuz Bu da proje yazarken sadece projenizi yazmanızı sağlıyor
6NOSQL Sistemleri nelerdir?
Döküman (Document) tabanlı: Bu tip veri tabanları JSON yapısında kayıt yapar Bu yapılarda sınırsız alan oluşturabilirsiniz Hatta sınırsız alanların içine sınırsız alanlar ve onların da içine şeklinde devam edebilirsiniz MongoDB, CouchDB, Amazon Simple DB, Cassandra, HBase
Anahtar Değer (Key Value) tabanlı: Bu sistemlerde anahtarlara karşılık gelen tek bir bilgi bulunur Kolon yapısı yoktur MemcacheDB, Berkeley DB, Azure Table Storage
Grafik (Graph) tabanlı: Bu sistemler diğerlerinden farklı olarak verilerin ilişkisini saklayan Graph Theory modelindeki sistemlerdir Neo4J, FlockDB
6NOSQL Kullanmalı mıyım?
Bunca zamandır RDBMS kullanmıştım ne gerek var NOSQL'e diyebilirsiniz Hatta NOSQL kullanmak çok anlamlı da gelmeyebilir Ancak sürekli büyüyen veri toplayan sitelerde belli bir limitiniz var bunu aştığınız anda yavaşlamalar performans azalmaları başlıyor Bu noktalara ulaşacak projelerde NOSQL tercih edilmelidir En önemlisi her proje NOSQL'e uygun olmayabilir Bunun değerlendirmesinin iyi yapılıp karar verilmesi gerekiyor