Konu başlıkları;
NoSQL: “Yalnızca SQL Değil” olarak Türkçe anlamına gelir, bu terim yaygın olarak kabul edilmektedir ve İngilizce olarak “Not Only SQL” bilinmektedir.
NoSQL, anahtar/değer, belge, sütun ve grafik biçimleri dahil olmak üzere çok çeşitli veri modellerini barındırabilen bir veritabanı yönetimi yaklaşımıdır. NoSQL veritabanı genellikle ilişkisel olmayan, dağıtılmış, esnek ve ölçeklenebilir olduğu anlamına gelir. NoSQL veritabanı ek özellikleri, ilişkisel ve SQL veritabanlarının tipik ACID (atomiklik, tutarlılık, yalıtım ve dayanıklılık) işlem tutarlılığının aksine bir veritabanı şeması, veri kümeleme, çoğaltma desteği ve nihai tutarlılık eksikliğini içerir.
Birçok NoSQL veritabanı sistemi de açık kaynak kodludur.
NoSQL Veritabanı Tipleri Nelerdir?
Dört popüler NoSQL veritabanı sistemi türü vardır. Her biri farklı türde bir veri modeli kullanır ve bu da her NoSQL türü arasında önemli farklılıklara neden olur.
Belge veritabanları (Document Database)
Belge depoları olarak da adlandırılan bu veritabanları, yarı yapılandırılmış verileri ve bu verilerin açıklamalarını belge biçiminde saklar. Geliştiricilerin, ana şemaya başvurmaya gerek kalmadan programlar oluşturmasına ve güncellemesine olanak tanır. Belge veritabanlarının kullanımı, JavaScript ve web uygulaması geliştiricileri arasında geniş bir geçerlilik kazanan bir veri değişim formatı olan JavaScript Object Notation (JSON) kullanımıyla birlikte artmıştır. Belge veritabanları, içerik yönetimi ve blog platformları, web analitiği ve e-ticaret uygulamaları gibi mobil uygulama verilerinin işlenmesi için kullanılır. Couchbase Server, CouchDB, MarkLogic ve MongoDB belge veritabanlarına örnektir.
Grafik veritabanları (Graph Database)
Grafik veri depoları, verileri ilişkisel bir veritabanındaki satırlara benzeyen düğümler ve düğümler arasındaki bağlantıları temsil eden kenarlar olarak düzenler. Grafik sistemi düğümler arasındaki ilişkiyi sakladığından, veri ilişkilerinin daha zengin temsillerini destekleyebilir. Ayrıca, katı şemalara dayanan ilişkisel modellerin aksine, grafik veri modeli zaman ve kullanım içinde gelişebilir. Grafik veritabanları, sosyal medya platformları, rezervasyon sistemleri veya müşteri ilişkileri yönetimi gibi ilişkileri haritalaması gereken sistemlerde uygulanır. Grafik veritabanlarına örnek olarak AllegroGraph, IBM Graph ve Neo4j verilebilir.
Anahtar-Değer Depoları (Key-Value Store)
Anahtar-değer veritabanları olarak da bilinen bu sistemler, benzersiz bir anahtarı ilişkili bir değerle eşleştiren basit bir veri modeli uygular. Bu model basit olduğu için yüksek düzeyde ölçeklenebilir ve performanslı uygulamalar geliştirmek için kullanılabilir. Anahtar-değer veritabanları, çevrimiçi alıcılar için alışveriş sepeti ayrıntılarını yönetirken veya çok oyunculu oyunlar için oturum ayrıntılarını yönetirken ihtiyaç duyulanlar gibi web uygulamalarında oturum yönetimi ve önbelleğe alma için idealdir. Uygulamalar, RAM, yarıiletken sürücüler veya disk sürücülerle çalışmaya yönelik olarak farklılık gösterir. Popüler anahtar/değer veritabanlarına örnek olarak Aerospike, DynamoDB, Redis ve Riak verilebilir.
Geniş Sütunlu Depolar (Wide-Column Store)
Bu veritabanları, ilişkisel veritabanı tabloları gibi tanıdık tablolar, sütunlar ve satırlar kullanır, ancak sütun adları ve biçimlendirmesi, tek bir tabloda satırdan satıra farklılık gösterebilir. Her sütun ayrıca diskte ayrı olarak depolanır. Geleneksel satır yönelimli depolamanın aksine, verileri sütunlara göre sorgularken geniş sütunlu bir depolama idealdir. Geniş sütunlu mağazaların başarılı olabileceği tipik uygulamalar arasında öneri motorları, kataloglar, dolandırıcılık tespiti ve olay günlüğü bulunur. Accumulo, Amazon SimpleDB, Cassandra, HBase ve Hypertable, geniş sütunlu mağazalara örnektir.
Bu temel NoSQL veritabanı sınıflandırmaları yalnızca kılavuz niteliğindedir. Zamanla, satıcılar daha genel olarak kullanışlı sistemler elde etmek için farklı NoSQL veritabanı ailelerinden öğeleri karıştırdı ve eşleştirdi. Bu gelişim, örneğin, orijinal belge veritabanlarına bir grafik deposu ve başka öğeler ekleyen MarkLogic’te görülmektedir. Couchbase Server, hem anahtar-değer hem de belge yaklaşımlarını destekler. Cassandra, anahtar-değer öğelerini geniş sütunlu bir depo ve bir grafik veritabanıyla birleştirdi. Bazen NoSQL öğeleri, SQL öğeleriyle karıştırılarak çok modelli veritabanları olarak adlandırılan çeşitli veritabanları oluşturulur.
NoSQL Avantajları Nelerdir?
Bu konu ile ilgili uzun uzadıya yazı yazmak yerine MongoDB’nin yaptığı geniş çaplı değerlendirmeyi daha faydalı bulduk. Karşılaştırma ve Avantajlar için: NoSQL Avantajları
NoSQL Dezavantajları Nelerdir?
- Her NoSQL veritabanı, verileri sorgulamak ve yönetmek için kendi sözdizimine sahiptir. Bu, ilişkisel ve SQL veritabanı sistemlerinin ortak dili olan SQL’in aksine.
- Katı bir veritabanı şemasının ve kısıtlamalarının olmaması, ilişkisel ve SQL veritabanı sistemlerinde yerleşik olarak bulunan veri bütünlüğü korumalarını ortadan kaldırır.
- Verileri kullanmak için bir çeşit yapıya sahip bir şema gereklidir. NoSQL ile bu, veritabanı yöneticisi yerine uygulama geliştiricisi tarafından gerçekleştirilmelidir.
- NoSQL veritabanlarının çoğu nihai tutarlılık modelini kullandığından, SQL veritabanlarıyla aynı düzeyde veri tutarlılığı sağlamaz. Bazen veriler tutarlı olmayabilir, bu da bankacılık ve ATM işlemleri gibi anında bütünlük gerektiren işlemler için uygun olmadıkları anlamına gelir.
- NoSQL veritabanları daha yeni olduğundan, ilişkisel ve SQL DBMS tekliflerinde olduğu gibi kapsamlı endüstri standartları yoktur.
NoSQL ve İlişkisel Veritabanları Karşılaştırması
Bu karşılaştırmanın veritabanı düzeyinde olduğu dikkate alındığında, her ikisini de uygulayan herhangi bir yönetim sistemi içermemektedir. Veritabanı Yönetim Sistemleri, bu sorunları sıralamak ve ayrıca performans ve güvenilirliği artırmak için kendi tekniklerini içerir.
Ölçekleme (Scaling)
lişkisel Veritabanları: Dikey Ölçekleme
- Mimari tasarım, tek bir makinede iyi çalışır.
- Daha büyük hacimli işlemlerin üstesinden gelmek, makineyi daha hızlı bir işlemci veya daha fazla bellekle yükseltmektir.
- Daha fazla veriyi işlemek için daha fazla bilgisayara ihtiyacınız olduğundan, boyut/ölçeklendirme düzeyinde bir sınırlama vardır.
NoSQL Veritabanları: Yatay Ölçekleme
- NoSQL veritabanlarının, nispeten düşük özellikli sunucuların kümelerinde çalışması amaçlanmıştır.
- Daha fazla veriyi işlemek için kümeye daha fazla sunucu ekleyin.
- Düşük maliyetli donanımla bile tam gaz çalışacak şekilde kalibre edilmiştir.
- Artışı işlemek için nispeten daha ucuz bir yaklaşım: İşlem sayısı ve verilerin boyutu.
Bakım (Maintenance)
İlişkisel Veritabanları:
- Üst düzey RDBMS sistemlerinin bakımı pahalıdır ve veri tabanı yönetimi için eğitimli işgücü gerektirir.
NoSQL Veritabanları:
- Minimum yönetim gerektirir ve birçok özelliği destekler, bu da yönetim ve ayarlama gereksinimlerinin daha az olmasını sağlar. Bu, Otomatik onarım, daha kolay veri dağıtımı ve daha basit veri modellerini kapsar.
Veri Örneği (Data Sample)
İlişkisel Veritabanları:
- Katı Veri Modeli.
- RDBMS, tanımlanmış veri modeline göre yapılandırılmış biçimde veri gerektirir.
- Birincil/yabancı anahtarlara güçlü bir bağımlılıkla SQL’de değişiklik yönetimi büyük bir baş ağrısı olduğundan, geçici veri ekleme daha zor hale gelir.
Not: İlişkisel veritabanlarının yapılandırılmamış veya yarı yapılandırılmış verilerle çalışma konusunda giderek daha iyi hale geldiğini ve PostgreSQL’in dizine eklenebilir ikili JSONB veri tipinin pakete liderlik ettiğini belirtmekte fayda var. Bir karışımınız varsa, yapılandırılmamış verilerinizi ilişkisel bir bağlama sığdırmak, ilişkisel verilerinizi bir NoSQL bağlamına uyarlamaya çalışmaktan çok daha kolay ve güvenlidir.
NoSQL Veritabanları:
- Şema/Veri modeli yok.
- NoSQL veritabanı şemasızdır, böylece veriler önceden tanımlanmış herhangi bir şema olmadan bile kolaylıkla veritabanına eklenebilir.
- Biçim veya veri modeli, uygulama kesintisi olmaksızın herhangi bir zamanda değiştirilebilir.
Önbellekleme (Caching)
İlişkisel Veritabanları:
- Tipik RDBMS veritabanındaki önbelleğe alma, ayrı bir altyapı gerektirir.
NoSQL Veritabanları:
- NoSQL veritabanı, sistem belleğinde önbelleğe almayı destekler, bu nedenle veri çıkış performansını artırır.
KAYNAKLAR:
- http://nosql-database.org
- MongoDB: NoSQL Explained.
- https://blog.pandorafms.org/es/bases-de-datos-nosql/
- https://blogs.oracle.com/spain/qu-es-una-base-de-datos-nosql
- https://www.hadoop360.datasciencecentral.com/blog/advantages-and-disadvantages-of-nosql-databases-what-you-should-k
- Limitations of NoSQL.
- Medium: Differences between SQL and NoSQL.
- Wikipedia: ACID.
- Wikipedia: CAP Theorem
Önceki yazılarımız:
Küçük ve Orta Ölçekli İşletmeler için ☁️ Bulut Tabanlı 5 Sunucu İzleme (Monitör) Uygulaması