Günümüzde hala ağırlıklı olarak SQL veritabanları (Oracle, SQL Server, MySQL gibi) kullanılsa
da, bu veritabanları ihtiyaçlarımızı her zaman istediğimiz ölçüde karşılayamamaktadır. Bu
ihtiyaç doğrultusunda da karşımıza birçok farklı amaç doğrultusunda kullanılabilen NoSQL
veritabanları çıkar.
Genel olarak SQL ve NoSQL veritabanlarının kullanım senaryolarıyla ilgili bilgi edinmek için
aşağıdaki tabloyu inceleyebilirsiniz.
İlişkisel SQL veritabanlarının aksine NoSQL veritabanları tek tip değildir. Yukarıdaki tablodan
da fikir edinebileceğiniz üzere farklı amaçlar ve gereksinimler doğrultusunda kullanılan farklı
NoSQL veritabanları vardır.
Hadi şimdi bunların en çok kullanılanlarını örneklerle tanımaya çalışalım :
Document DB
Belge tabanlı veritabanı ilişkisel olmayan bir veritabanıdır. Verileri satırlar ve sütunlar (tablolar)
halinde depolamak yerine, verileri veritabanında depolamak için belgeleri kullanır. Bir belge
veritabanı, verileri JSON, BSON veya XML belgelerinde depolar. Belge veritabanlarındaki bu
belgelerin her biri ise collection olarak adlandırılır.
En çok bilinen ve kullanılan Document veritabanları ise aşağıdaki gibidir.
Key-Value DB
Key-Value veritabanı, verileri depolamak için Python’da bulunan Dictionary(Sözlük) yapısı gibi
basit bir anahtar/değer yöntemi kullanan bir veritabanı türüdür. Bir anahtar-değer veritabanı
verileri, bir anahtarın benzersiz bir tanımlayıcı olarak hizmet ettiği bir anahtar-değer çiftleri
koleksiyonu olarak depolar. Hem anahtarlar hem de değerler, basit nesnelerden karmaşık
nesnelere kadar her şey olabilir. Anahtar/değer veritabanları yüksek oranda bölümlenebilirdir
ve diğer veritabanlarının elde edemediği ölçeklerde yatay ölçeklendirmeye izin verir.
En çok bilinen ve kullanılan Key-Value veritabanları ise aşağıdaki gibidir.
Wide Column DB
Wide Column veritabanları, verileri satırlar yerine sütunlarda depolayan bir veritabanıdır. Bu, az
sayıda sütunda analitik çalıştırmak istediğimizde, istenmeyen verilerle belleği tüketmeden bu
sütunları doğrudan okuyabileceğiniz anlamına gelir. Wide Column veritabanları, verileri daha
verimli bir şekilde okumak ve verileri daha hızlı almak için tasarlanmıştır. Büyük miktarda veriyi
depolamak için Wide Column bir veritabanı kullanılır.
En çok bilinen ve kullanılan Wide Column veritabanları ise aşağıdaki gibidir.
Graph DB
Bir Graph veritabanı, tablolar veya belgeler yerine düğümleri ve ilişkileri depolar. Veriler tıpkı
bir beyaz tahtada fikir çizebileceğiniz gibi saklanır. Verileriniz, önceden tanımlanmış bir
modelle sınırlandırılmadan depolanır, bu da onlar hakkında çok esnek bir düşünme ve
kullanma yöntemi sağlar.
En çok bilinen ve kullanılan Graph veritabanları ise aşağıdaki gibidir.
Time-Series DB
Zaman serisi verileri, zaman içinde izlenen, izlenen, alt örneklemesi yapılan ve toplanan basit
ölçümler veya olaylardır. Zaman damgalı metrikleri ve olayları veya ölçümleri işlemek için özel
olarak bir zaman serisi veritabanı oluşturulur. Bir Time-Series veritabanı, zaman içindeki
değişimi ölçmek için optimize edilmiştir. Zaman serisi verilerini diğer veri iş yüklerinden çok
farklı kılan özellikler, veri yaşam döngüsü yönetimi, özetleme ve birçok kaydın geniş aralıklı
taramalarıdır.
En çok bilinen ve kullanılan Time-Series veritabanları ise aşağıdaki gibidir.
Search Engines DB
Bir Search Engines veritabanı, arama işleviyle donatılmış arama moturu olan bir veritabanıdır.
Arama özellikleri, veritabanındaki bilgileri hızlı bir şekilde bulmanıza yardımcı olur. Ayrıca bu
arama motoru, Unstructured veya Semi-Structured büyük hacimli veriler (örneğin, bir araştırma
veritabanında akademik bir arama yapıyorsanız bulacağınız veriler) için optimize edilmiştir.
En çok bilinen ve kullanılan Search Engines veritabanları ise aşağıdaki gibidir.
Buraya kadar konuştuklarımızı göz önünde bulundurursak NoSQL veritabanlarının bizlere
sağladığı birçok avantajı bulunuyor. Ancak bu tabiki SQL veritabanları kullanılamaz veya
yetersiz demek değil, vereceğiniz karar tamamen sizin kullanım senaryonuza ve ihtiyaçlarınıza
bağlı. Kısacası her zaman bir kenarda NoSQL seçeneğinin de bulunması en doğrusu 🙂