İlişkisel vs İlişkisel Olmayan Veritabanları

Cansu Cici
Ebebek Tech
Published in
7 min readDec 29, 2022

Relational Database Management System (RDMS) — İlişkisel Veritabanı Yönetim Sistemleri

İlişkisel Veri Tabanları veriyi birbiri ile ilişkili bir şekilde tutmaya yarar. Tablolar aracılığıyla veriler hem kendi içlerinde hem tablolar arasında ilişkili bir şekilde saklanır.

İlişkisel veri tabanı yönetim sistemleri ise databaseleri yöneten, çalışmasını sağlayan-oluşturan, bilgi giriş çıkışını izleyen ve yöneten sistemdir. Veritabanı oluşturma, verileri yönetme ve saklama gibi işlemleri kolayca yapmanıza olanak sağlayan yazılımlardır. Çoğu veri tabanına erişim için SQL (Structured Query Language) kullanılır.

Veriler tablolarda birbiri ile ilişkili şekilde saklanırken tablolar arasında da ilişkiler olabileceğinden bahsettik. Bu tablolar arası ilişki bize Data Consistency yani veri tutarlılığını sağlar.

DBMS örnek vermek gerekirse MySQL, PostgreSQL, Oracle, Microsoft SQL Server verilebilir.

NoSQL — İlişkisel Olmayan Veri Tabanı Yönetim Sistemleri

NoSQL, bir veritabanı türüdür ve “Not Only SQL” olarak da adlandırılır. Büyük verileri saklama ve işleme konusunda ilişkisel veri tabanlarının yetersiz kalışından NoSQL ortaya çıkmıştır.

NoSQL, RDBMS’lerin sahip olduğu güçlü ve anlık veri tutarlılığından (Immediate Data Consistency) feraget ederek yerini nihai veri tutarlılığına (Eventual Data Consistency) bırakarak daha yüksek performans ve erişilebilirlik ve hız elde etmeye yöneldi.

NoSQL veritabanları, veri modellenmesine dayalı değildir ve verilerin düzenli bir şekilde saklanmasını gerektirmez. Bu tür veritabanları, özellikle büyük veri hacmi, düşük gecikme süresi ve esnek veri modelleri gerektiren uygulamalar için optimize edilmiştir. NoSQL veritabanları, genellikle çok yönlü ve dağıtık (distributed) bir yapıya sahiptir ve bu sayede yüksek ölçeklenebilirlik ve performans sunar.

İlişkisel veritabanlarının aksine NoSQL veriyi tablo halinde değil farklı şekillerde modeller. Bu modeller neymiş şimdi onlara bakalım.

NOSQL AVANTAJLARI

•Okuma yazma performansı olarak RDBMS’lerden daha performanslı olabilirler.

•Yatay olarak genişletilebilirler

•Binlerce sunucu bir arada küme olarak çalışabilir ve çok büyük veri üzerinde işlem yapabilirler.

•Esnek yapı

•Çoğu açık kaynak ve ücretsiz

•Ucuz maliyet

NOSQL DEZAVANTAJLARI

•RDBMS’deki gibi İlişkisel veri yapısı mevcut değildir.

•RDBMS’de yapılan uygulamaların NoSql sistemlerine taşınması zahmetlidir.

•Transactional işlemleri genelde desteklemediklerinden veri kaybı söz konusu olabilir. Bundan dolayı finansal uygulamalarda tercih edilmezler.

•Veri güvenliği konusunda RDBMS kadar gelişmiş değildir.

•Doküman ve profesyonel destek konusundan eksiklikleri olabilir.

CAP Teoremi

Teorem basit olarak dağıtık bir sistemde veri üzerinden sunulan hizmet için aynı anda 3 özelliğin sağlanamayacağıdır.

Consistency (Tutarlılık)

Dağıtık sistemlerdeki tüm nodeların aynı veriye sahip olma durumudur. N tane node olan bir sistemde bun nodeların hepsinde aynı verinin olması durumudur.

Availability (Erişilebilirlik)

Sistemin tüm isteklere her zaman yanıt vermesidir. Sisteme yapılan her isteğin başarılı veya başarısız olsun bir yanıt alabilmesi durumudur.

Partition Tolerance (Bölünme Toleransı)

Mevcut nodelardan bir kısmında network veya başka sebepten meydana gelebilecek herhangi bir sorun olduğunda bile sistemin çalışmaya devam edebilmesi durumudur.

NoSQL veritabanı çeşitleri

Document Based: Bu veritabanları, verileri doküman olarak depolamak için kullanılır. Dokümanlar, verileri JSON, XML veya diğer benzer dillerle saklar ve bu nedenle, veri yapılarını daha esnek bir şekilde depolayabilirler. Document Stores veritabanları, veri depolama işlemlerinde daha esnek olmaları nedeniyle, veri işleme işlemlerinde daha yüksek performans sağlar. MongoDB, CouchDB, Bigtable, DynamoDB HBase, Cassandra ve Amazon SimpleDB bunlara örnektir.

Key / Value Based: Bu sistemlerde anahtara karşılık gelen tek bir bilgi bulunur. Yani kolon kavramı yoktur. Küçük veriler için çok sayıda okuma ve yazma için uygundurlar. Bu veritabanları, verileri hızlı bir şekilde erişebilmek için tasarlandı ve bu nedenle, veri depolama işlemlerinde daha hızlıdırlar. Ancak, bu veritabanları sadece anahtar-değer çiftlerini depolayabilir ve bu nedenle, daha karmaşık veri yapılarını destekleyemezler. Caching (önbellek) için kullanılırlar. Azure Table Storage, MemcacheDB, Redis ve Berkeley DB bunlara örnektir.

Column Based: Bu veritabanları, verileri sütun bazlı olarak depolamak için kullanılır. Bu veritabanları, veri sorgulama işlemlerinde daha hızlı olmaları nedeniyle, özellikle veri madenciliği ve analitik uygulamalar için kullanılır.

Graph Based: Verileri grafik şeklinde depolamak için kullanılır. Grafikler, nesneleri ve nesneler arasındaki ilişkileri gösterir ve bu nedenle, veri depolama işlemlerinde daha esnek olurlar. Veriler düğümler (node), ilişkiler (edge), özellikler (properties) şeklinde tutulurlar. Veriler arasındaki ilişkilerde saklanabilir. Neo4J, FlockDB bunlara örnektir.

NoSQL veritabanlarının birçok farklı türü vardır ve bu veritabanlarının hangisi kullanılacağı, uygulamanın ihtiyaçlarına göre belirlenir. Örneğin, veri depolama işlemlerinde yüksek performans isteyen bir uygulama için anahtar-değer çiftleri depolayan bir veritabanı sistemi kullanılabilir. Veri yapılarını daha esnek bir şekilde depolamak isteyen bir uygulama için ise, Document Stores veritabanı sistemi kullanılabilir. Veri madenciliği ve analitik uygulamalar için ise, Column Stores veritabanı sistemi kullanılabilir.

mongoDB

MongoDb json olarak dökümanlarınızı saklayabileceğiniz ve bu json içerisinde istediğiniz şekilde nested/subarray ile datalarınızı saklayabileceğiniz bir NoSql veritabanı türüdür.

mongoDB Avantajlar

• Şemasız bir veritabanıdır, verileri eklemeden önce sütun sayısını veya türünü belirtmemiz gerekmez.

• Replication(çoğaltma) işlemi ile orijinal verilerin kopyasını sağlayarak yüksek kullanılabilirlik sağlar.

• Yoğun trafik akışını idare edebilir.

• Yüksek performanslı veri kalıcılığı sağlar.

mongoDB Dezavantajları

• İlişkisel veri tabanlarının aksine, manuel olarak yapılması gereken birleştirme ihtiyacı varsa, birden fazla sorgulama yapmanız gerekir.

  • Her belge için bir anahtar adı depolayarak MongoDB’nin daha yüksek bellek alanına ihtiyacı vardır. Bu nedenle de oldukça fazla sayıda yinelenen veriyle uğraşmanız gerekebilir.

redis

redis, genellikle veritabanı, önbellek ve mesaj aracısı olarak kullanılan bir bellek içi veri yapısı deposudur. Oturum verileri veya gerçek zamanlı analiz verileri gibi hızla erişilmesi gereken verileri depolamak için özellikle kullanışlıdır. Redis, yüksek performansıyla tanınır ve yüksek düzeyde okuma ve yazma etkinliğinin üstesinden gelebilir.

redis Avantajlar

· Senkron çalıştığı için son derece hızlıdır.

· Birçok veri türünü destekler.

· Veriyi hem RAM üzerine hem de ayarlandığınız konfigürasyona göre disk üzerine kaydedebilir.

· Disk üzerine kayıt yaptığı için restart sonrasında aynı verilerle çalışmaya devam eder.

redis Dezavantajları

· Asenkron alternatiflerin eriştiği performansa erişemeyebilirsiniz.

· Veri boyutunuza göre RAM’e ihtiyacınız olur.

· Relational veritabanlarında olduğu gibi komplex sorguları desteklemez.

· Bir transaction hata alırsa geri dönüşü yoktur.

Couchbase

Couchbase; document ve key-value tabanlı, memory-first yapısına sahip bir NoSQL veritabanı çözümüdür. Verileri JSON olarak tutar.

Couchbase Avantajlar

1. Ölçeklenebilirlik: Couchbase yatay olarak ölçeklenebilir şekilde tasarlandığından, veritabanı kümenize daha fazla düğüm ekleyerek kapasite ve performansı artırmak kolaydır.

2. Yüksek performans: Couchbase hızlı ve verimli olmak üzere tasarlandı ve bellekte veri depolama ve indeksleme gibi özelliklerle performansını iyileştirmeye yardımcı olur.

3. Esneklik: Couchbase belge, anahtar-değer, arama ve analitik gibi çeşitli veri modellerini destekler, bu nedenle çeşitli kullanım durumları için uygun hale gelir.

4. Kullanım kolaylığı: Couchbase kullanıcı dostu bir arayüze sahiptir ve yönetme ve kullanma konusunda kolaylık sağlayan birçok araç ve özelliğe sahiptir.

Couchbase Dezavantajları

1. Karmaşıklık: Couchbase dağıtık sistemlerle daha az tecrübesi olan kullanıcılar için kurulum ve yönetim açısından diğer veritabanlarına göre daha karmaşık olabilir.

2. Maliyet: Couchbase ücretsiz değildir ve ölçeklendirme açısından kullanımı pahalı olabilir.

3. Sınırlı işlem desteği: Couchbase, geleneksel ACID işlemlerini desteklemez, bu nedenle güçlü tutarlılık garantileri gerektiren bazı uygulamalar için uygun olmayabilir.

4. Sınırlı join desteği: Couchbase, geleneksel SQL tarzı join’leri desteklemez, bu nedenle bazı sorgu türleri için bir sınırlama olabilir.

ApacheCassandra

Apache Cassandra : Veri kaybı önlem, yüksek erişilebilirlik ve yüksek performans gereksinimleri doğrultusunda günümüzde yaygın olarak tercih edilen bir veritabanı Apache Cassandra, en basit tanımıyla bir NoSQL veritabanıdır.

Apache Cassandra Veri tabanın tercih edildiği noktalar:

· Mesajlaşma, Cep telefonları ve mesajlaşma hizmetleri sağlayan şirketler için harika bir veri tabanıdır . Bu şirketlerin çok büyük miktarda verileri var, bu yüzden Cassandra onlar için en iyi tercihtir.

· Nesnelerin İnterneti Uygulaması

· Ürün Katalogları ve perakende uygulamaları

· Sosyal Medya Analitiği ve tavsiye motoru

Apache Cassandra Avantajlar

• Birden fazla node’dan oluşan cluster yapısı sayesinde veri kaybından koruyor.

• Master/Slave kurgusu yoktur.Her node aynı yetki ve özelliktedir. Böylece yeni eklenen bir node hem veri depolama kapasitesini arttırmakta hem de daha yüksek okuma performansı elde edilmesini sağlamaktadır.

• Benzer ürünlerde veriye ulaşmak için JSON formatında sorgular yazmak gerekebilirken, Cassandra’da tek satırlık sorgularla veriye ulaşmak mümkündür.

Apache Cassandra Dezavantajları

• foreign key yapısına sahip değildir olmaması Apache Cassandra içerisinde tutulan bir objenin ikinci bir tabloda var olsa dahi aynı obje olduğunun kanıtlanamaması anlamına gelmektedir.

--

--