NoSQL Veritabanlarına Genel Bakış ve Kullanım Senaryoları

Ata Özarslan
İstanbul Data Science Academy

--

Veritabanları, verilerin organize edilmesi, saklanması, güncellenmesi ve erişilmesi için kullanılan yapısal bir araçtır. İşletmeler, kurumlar, web siteleri ve uygulamalar gibi çeşitli alanlarda veritabanlarına ihtiyaç duyulur.

Günümüzde birçok firmada hala ağırlıklı olarak SQL veritabanları (Oracle, MySQL, SQL Server 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.

NoSQL veritabanlarının kendi içerisinde birçok alt başlığı bulunur. Bunları birazdan inceleyeceğiz, ancak genel olarak SQL ve NoSQL veritabanlarının kullanım senaryolarını kıyaslamak için aşağıdaki tabloya göz atalım.

SQL vs NoSQL Veritabanları

Yukarıdaki veri modelleme yaklaşımlarından da görebileceğimiz ü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 :)

Farklı Amaçlar Doğrultusunda Kullanılan NoSQL Veritabanları

1. Document DB (Belge Tabanlı Veritabanları)

Belge tabanlı veritabanı, diğer tüm NoSQL veritabanı türlerinde olduğu gibi ilişkisel olmayan bir veritabanıdır. Verileri tablolar (satırlar ve sütunlar) halinde depolamak yerine, belge formatında depolar. Bir belge veritabanı, verileri JSON, BSON veya XML formatındaki belgelerde depolar. Belge veritabanlarındaki bu belgelerin her biri ise collection olarak adlandırılır.

Bu terimlerin karşılığını daha net anlamak için aşağıdaki karşılaştırmalı tabloyu kullanabilirsiniz.

https://www.researchgate.net/figure/SQL-vs-MongoDB-terms_fig4_340622952

Örneğin aşağıdaki örnek verileri belge tabanlı bir NoSQL veritabanında saklamak, bize şema esnekliği vererek tablo formatındaki her sütun için değişmez olan veri tipini istediğimiz gibi yönetmemize ve karmaşık veri yapılarıyla daha kolay bir şekilde çalışmamızı sağlar.

SQL ve Belge Tabanlı Veritabanlarında Veri Depolama Stratejileri

En çok bilinen ve kullanılan belge tabanlı (document) veritabanları ve zaman içerisindeki kullanım popülerlikleri ise aşağıdaki gibidir.

Belge Tabanlı NoSQL Veritabanları Kıyaslama

2. Key-Value DB (Anahtar-Değer Veritabanları)

Key-Value veritabanları, 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ı (primary key benzeri) 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.

SQL ve Anahtar-Değer Veritabanlarında Veri Depolama Stratejileri

En çok bilinen ve kullanılan anahtar-değer (key-value) veritabanları ve zaman içerisindeki kullanım popülerlikleri ise aşağıdaki gibidir.

Anahtar-Değer NoSQL Veritabanları Kıyaslama

3. Wide Column DB (Geniş Sütun Veritabanları)

Wide Column veritabanları, verileri satırlar yerine sütunlarda depolayan bir veritabanıdır. Bu durum, az sayıda sütunda analitik çalışma yapmak 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.

SQL ve Geniş Sütun Veritabanlarında Veri Depolama Stratejileri

En çok bilinen ve kullanılan geniş sütun (wide column) veritabanları ve zaman içerisindeki kullanım popülerlikleri ise aşağıdaki gibidir.

Geniş Sütun NoSQL Veritabanları Kıyaslama

4. Graph DB (Grafik Veritabanları)

Bir Graph veritabanı, verileri tablolar veya belgeler yerine, varlıklar ve ilişkiler ağı olarak depolar. Grafik veritabanları, ilişki modellemede çok daha verimlidir. Özellikle karmaşık veri bağlantılarına sahip kullanım örnekleri için uygulama performansını önemli ölçüde artırırlar.

Örneğin, iki nesne arasında kurulabilecek birçok bağlantı, her biri için bir tablo oluşturmak ve farklı birçok bağlantı oluşturmak yerine varlıklar aracılığıyla çok daha rahat temsil edilebilir.

Grafik Veritabanlarında Veri Depolama Stratejileri

En çok bilinen ve kullanılan grafik (graph) veritabanları ve zaman içerisindeki kullanım popülerlikleri ise aşağıdaki gibidir.

Grafik NoSQL Veritabanları Kıyaslama

5. Time-Series DB (Zaman Serisi Veritabanları)

Zaman serisi verileri, belirli bir zaman aralığında 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şimleri ölçmek amacıyla 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.

Zaman Serisi Veritabanlarında Veri Depolama Stratejileri

En çok bilinen ve kullanılan zaman serisi (time-series) veritabanları ve zaman içerisindeki kullanım popülerlikleri ise aşağıdaki gibidir.

Zaman Serisi NoSQL Veritabanları Kıyaslama

6. Search Engines DB (Arama Motoru Veritabanları)

Bir Search Engines veritabanı, adından da anlaşılacağı üzere 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 özel olarak optimize edilmiştir.

Arama Motoru Veritabanlarında Veri Depolama ve Arama Stratejileri

En çok bilinen ve kullanılan arama motoru (search engines) veritabanları ve zaman içerisindeki kullanım popülerlikleri ise aşağıdaki gibidir.

Arama Motoru NoSQL Veritabanları Kıyaslama

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ı çalışma amacınızı göz önünde bulundurarak her zaman bir kenarda NoSQL seçeneğinin de bulunması en doğrusu :)

NOT: Farklı veritabanı türlerini ve kullanım senaryolarını incelemek için https://db-engines.com/en/ranking adresini ziyaret edebilirsiniz.

--

--