Konu web tasarım olduğunda veritabanı kelimesini sıkılıkla duyarsınız. Bu yazımızda sizlere NoSQL veritabanının ne demek olduğunu, nasıl çalıştığını, çeşitleri avantajlarını ele alacağız. NoSQL, ilişkisel olmayan bir veri tabanı mimarisidir. NoSQL veri tabanı mimari tiplerinden en yaygın olanları: doküman, anahtar-değer, geniş sütun ve grafiktir. NoSQL veri tabanları esnek şemalara ve kolayca genişletilebilen veri yapılarına sahiptir.
SQL veri tabanı mimarisinin 1970’lerde yaygınlaşmaya başladığı yıllara bir göz atıldığında veri tutmanın çok pahalıya mal olduğunu görüyoruz. Bu sebeple yazılım geliştiriciler veri tabanlarında oluşabilecek verileri kopyaları/tekrarlarını engellemek amacıyla “waterfall” adını verdikleri proje yönetim sürecini uygulamaya başladılar. Waterfall tekniği ile birlikte projeler yapılmaya başlanmadan önce her adım en ayrıntısına kadar hesaplanacak ve herhangi bir hataya ya da beklenmedik iş aksaklıklarına sebep olabilecek pürüzler düzeltilecekti. Yazılım geliştiriciler bu hedefi gerçekleştirmek için “karmaşık varlık ilişki diyagramı” kullanarak verileri saklama yoluna gittiler. Fakat bir süre sonra uygulanmaya çalışılan bu diyagram modeli “waterfall” proje yönetim sürecinde karşılaşılan gereksinim değişikliklerinin artmasıyla birlikte yazılım geliştiricilerin kabusu haline geldi. Proje yönetimindeki aksaklıklar ve harcamalardan dolayı firmalar daha fazla nakit kaybetmeye başladı. Bu sebeple NoSQL veri tabanı mimarisine ihtiyaç duyuldu.
NoSQL mimarisi her ne kadar ilişkisel olmayan bir yapıya sahip olsa da farklı yapılar yardımıyla veriler arasında ilişkiler kurulabilmektedir. Tabii ki ilişkisel veri tabanlarında olduğu gibi tablolar arası bir ilişkiden söz edilmez. NoSQL veri tabanı mimarisinde veriler ilişkilendirilmek istendiğinde iç içe veri tutulmaya elverişli veri modelleri kullanılır.
Yapısı genel olarak JSON’a benzer. Her doküman JSON veri yapısında da karşılaştığımız çiftler halinde alanlar ve değerlere sahiptir. Değerler bilgisayar biliminde sıkça kullandığımız “string”, “number”, “boolean”, “array” ve “nesne”den oluşabilir. Doküman veri tabanları kolaylıkla genişletilebilir.
Her eleman bir anahtara ve bir değere sahiptir. Bilgisayar biliminde kullandığımız sözlük (dictionary) ya da harita (map) yapısındaki gibi değerlere ulaşmak/erişmek istendiğinde değere ait anahtar kullanılır. Anahtar-değer veri tabanları genellikle veri arama hızının önemsenmediği
koşullarda tercih edilir.
Veriler tablolarda, satırlarda ve dinamik sütunlarda tutulur. Geniş-sütun veri modeli dinamik sütun yapısına sahip olduğu için SQL (ilişkisel veri tabanı) mimarisini bu konuda geride bırakır. Bu veri tabanı mimarisi genel olarak “IoT (Internet of Things)” verilerini tutmak için tercih edilirler.
Veriler boğum (node) ve edge (köşe) yapısında tutulur. Boğumlar asıl verileri barındırıyorken, köşeler ise boğumlar arası ilişkisel verileri tutar.
NoSQL veri tabanlarında veriler duruma uygun olarak tutulabildiği için ilişkisel veri tabanlarına göre bir artıya sahiptir.
İhtiyaca özel veri tabanı formatlarına sahip olan NoSQL mimarisi bu özelleştirmeden dolayı bazı noktalarda SQL (ilişkisel) veri tabanı mimarisinden daha fazla performansa sahiptir. Tabii ki her koşul için bunu söyleyemeyiz.
SQL yani ilişkisel veri tabanları dikey genişlemeye izin verecek şekilde tasarlandı. SQL veri tabanlarına yatay geniş entegre edilmek istediğinde ise maliyet ve veri tabanı yönetimi iyice artmaktadır. Fakat NoSQL veri tabanlarının yatay genişleme özellikleri sayesinde SQL veri tabanlarında karşılaşılan dezavantajlı durumlar tolere edilir.
NoSQL veri tabanları dağıtık sistemler olarak tasarlandıkları için veri dağıtımına elverişlidir.
NoSQL veri tabanı mimarisinin kullanıcılarına yeni fikirleri ve tasarımları test edebileceği ortamlar sunar. Bu sebeple bir hayli esnektir.
Bunlara ek olarak erişilebilirlik, çoklu veri modelleri, güvenlik, eşzamanlılık da NoSQL’in artıları arasındadır.