ISTDSA Bülten 50 — Doküman Tabanlı NoSQL Teknolojilerine Genel Bakış
Merhaba ben Yusuf Gözübüyük bu yazımda sizlere NoSql yapılarında Döküman tabanlı veri tabanlarından bahsetmeye çalışıcam umarım sizin içinde keyifli bir yazı olur.
Hadi başlayalım
Döküman tabanlı NoSQL veritabanları, belge odaklı bir veri modeli kullanarak veriyi depolayan ve işleyen veritabanı sistemleridir. Bu sistemler, geleneksel ilişkisel veritabanlarından farklı olarak esnek şema (schema) yapısına sahiptir. Esnek şema, verileri düzenlemenin ve depolamanın daha serbest olduğu bir yapıdır, yani her belge (document) kendi içinde farklı bir yapıya sahip olabilir.
Örnek vermek gerekirse klasik bir veri tabanında id,isim, yas kolonları olsun elimizdeki kolonların dışına çıkmamızın çok da bi olasılığı yok eğer kalıcı değişiklikler yapmıyorsak
Döküman tabanlı NoSql lerde ise bu durum farklılaşıyor ve yine id,isim, yas kolonları olsun elimizde fakat başka bir veri eklenirken meslek kolonu da eklenebiliyor bu da yapının esnekliğini bize gösteriyor
Döküman tabanlı NoSQL sistemleri genellikle yüksek performans ve ölçeklenebilirlik sunar. Verilerin paralel olarak dağıtılabilmesi sayesinde büyük veri kütlelerini etkili bir şekilde yönetebilirler.
Veriler üzerinde karmaşık sorgular yapabilmek için indeksleme mekanizmalarını kullanır.
Her NoSql teknolojisi kendine ait özel sorgu dilleri veya SQL benzeri sorgu dilini destekler
NoSQL veritabanları genellikle dağıtık mimarileri destekler. Bu, verinin birden fazla sunucu veya düğüm arasında dağıtılmasını ve bu düğümler arasında yükün dengelenmesini sağlar.
Döküman tabanlı NoSQL veritabanları
Burada bir çok oyuncu bizi karşılıyor ve her biri kendi alanlarında öne çıkan ürünler daha detaylı bakmak için DB-Engines Ranking of Document Stores linke tıklayabilirsiniz
Görsele bakınca birçok ürün bizi karşılıyor kimi open-soruce kimi lisanslı kimi her ikisi burada önemli olan amacımız ve teknoloji hakkında ki bilgimiz.
Bu yazımızda MongoDb ve Couchbase den bahsediyor olacağız
Döküman Tabanlı NoSql lerin Artıları Eksileri
MongoDB Nedir ?
MongoDB, döküman tabanlı bir NoSQL veritabanı sistemidir. Bu veritabanı, açık kaynaklı bir proje olarak geliştirilmiş olup, MongoDB Inc. tarafından desteklenmektedir.
MongoDB isterseniz open-source da isterseniz de lisanslayarak kullanabilme imkanınız bulunuyor
MongoDB, özellikle büyük ve karmaşık veri modelleriyle çalışan uygulamalarda kullanılmak üzere tasarlanmıştır.
MongoDB, JSON benzeri BSON (Binary JSON) formatında belgeleri depolar. Her belge, alan-değer çiftlerini içerir ve bu alanlar genellikle ilgili veri özelliklerini temsil eder
Esnek bir şema yapısına sahiptir, yani her belge kendi içinde farklı bir yapıya sahip olabilir. Bu özellik, geliştiricilere uygulamalarını daha dinamik bir şekilde evriltme imkanı tanır.
Yukarıdaki görsele dikkat edecek olursak örnek olarak author kısmında başka bir veride age:25 diye bir veri gelebilir
MongoDB kullanabilmek için birçok seçeneğimiz mevcut
1-MongoDB Web sitesi üzerinden
Mongodb web sitesine giderseniz Try to Free den ücretsiz tek nodelu bir yapı bize sunnuyor
2-MongoDB uygulaması üzerinden
Masaüstü uygulaması isterseni ze MongoDB web sitesinden sisteminize uygun olanı şeçip indirebilirsiniz
3-Docker üzerinden
Buraya kadar anlattıklarımda hep bir arayüz vardı ama sadece komut satırları üzerinden giderek bir süreç ilerletmek istiyorsanız Docker dan da yararlanabilirsiniz
MongoDB Terimleri
MongoDB Terimleri:
- Database (Veritabanı): MongoDB’de, veri koleksiyonlarını gruplamak için kullanılır.
- Collection (Koleksiyon): MongoDB’de, belgelerin saklandığı veri gruplarıdır.
- Document (Belge): MongoDB’de, temel veri birimidir ve JSON benzeri bir formatta bilgileri içerir.
SQL Terimleri:
- Database (Veritabanı): SQL’de, veri tablolarını gruplamak için kullanılır.
- Table (Tablo): SQL’de, verilerin yapılandırıldığı temel birimdir.
- Row (Satır): SQL’de, bir tablodaki her bir kaydı temsil eder.
- Column (Sütun): SQL’de, bir tablonun alanlarını temsil eder.
MongoDB veri sorgulama dili
Mongodb nin kendine has bir sorgulama dili vardır yer yer karmaşıklık lar olsa da genel manada mantığı sabittir
Örnek birkaç sorgu ile anlatalım
// Koleksiyondaki tüm belgeleri getir
db.users.find()
// Belirli bir koşula uyan belgeleri getir
db.users.find({ age: 25 })
// Büyüklük küçüklük kontrolü
db.users.find({ age: { $gt: 25 } })
Couchbase Nedir ?
Couchbase, doküman tabanlı ve key-value tabanlı bir NoSQL veritabanı sistemidir doğuşta aslında key-value olarak çıkan bu ürün gelişerek mongoDB gibi döküman tabanlı hale de gelmiştir.
Bu veritabanı, açık kaynaklı bir proje olarak geliştirilmiştir ve Couchbase Inc. tarafından desteklenmektedir. Couchbase, esnek, dağıtık ve yüksek performanslı veritabanı çözümleri sunarak özellikle büyük ve karmaşık veri modelleriyle çalışan uygulamalara odaklanmıştır.
Couchbase, JSON formatındaki belgeleri depolar ve bu belgelerin içinde alan-değer çiftleri bulunur. Her belge, ilgili veri özelliklerini temsil eden bu alanları içerir. Couchbase, esnek bir şema yapısına sahiptir, bu da her belgenin kendi içinde farklı bir yapıya sahip olabileceği anlamına gelir. Bu özellik, geliştiricilere uygulamalarını dinamik bir şekilde evriltme imkanı tanır.
Couchbase kullanımı için birkaç seçenek mevcuttur:
Couchbase Web Sitesi üzerinden: Couchbase web sitesine giderek ücretsiz bir deneme hesabı oluşturabilir ve hemen kullanmaya başlayabilirsiniz.
Couchbase uygulaması üzerinden: Couchbase’in masaüstü uygulamasını indirip sisteminize uygun olanı seçerek kullanabilirsiniz.
Docker üzerinden: Sadece komut satırları üzerinden işlem yapmak istiyorsanız, Docker kullanarak Couchbase’i başlatabilirsiniz.
Couchbase Terimleri:
- Bucket (Kova): Couchbase’de, veri koleksiyonlarını gruplamak için kullanılır.
- Document (Belge): Couchbase’de, JSON formatındaki bilgilerin saklandığı temel veri birimidir.
SQL Terimleri:
- Database (Veritabanı): SQL’de, veri tablolarını gruplamak için kullanılır.
- Table (Tablo): SQL’de, verilerin yapılandırıldığı temel birimdir.
Couchbase Sorgulama Dili: Couchbase’in kendine özgü bir sorgulama dili vardır.
-- Belirli bir buket içindeki tüm belgeleri getir
SELECT * FROM `myBucket`
-- Belirli bir koşula uyan belgeleri getir
SELECT * FROM `myBucket` WHERE age = 25
-- Büyüklük küçüklük kontrolü
SELECT * FROM `myBucket` WHERE age > 25
Sonuç
Bu yazıda, döküman tabanlı NoSQL teknolojileri, özellikle MongoDB ve Couchbase üzerinden incelemeler yaptık. Döküman tabanlı NoSQL veritabanlarının esnek şema yapısına sahip olduğu, her belgenin kendi içinde farklı bir yapıya sahip olabileceği ve genellikle yüksek performans ile ölçeklenebilirlik sunduğu gibi konularda bilgiler vermeye çalıştım
Evet yazımın sonuna geldim umarım NoSQL teknolojilerini, özellikle MongoDB ve Couchbase kavramlarından edindiğiniz bilgiler size fayda sağlar.