Rdbms vs Nosql Seçiminde Dikkat Edilmesi Gerekenler

Günümüzde veri tutan sistemlerin çeşitliliği ihtiyaçlara daha kolay cevap bulunması açısından önemlidir. Ancak bazı zorlukları da beraberinde getirmektedir. Projeleriniz için doğru veritabanını seçmek bu noktada kritik bir önem kazanıyor. Data’nın depolanması ve düşük maliyet ile performanslı şekilde yönetilmesi sorumluluğu bizlere sistemlerimizin doğru amaç ve pratiklerle kullanıldığından emin olma görevini de yüklüyor aslında. Böylece ilgili ekipleri doğru data altyapısına yönlendirmek de sorumluluklarımızdan bir tanesi haline geliyor. Bu yazıda doğru veritabanını seçmek için göz önünde bulundurulması gerekenlerden tecrübelerim dahilinde bahsetmek istiyorum. Bunlardan bahsederken de teknik bilgi ve kavramları da açıklamaya çalışacağım.

RDBMS vs Nosql

Relational database management system (ilişkisel veritabanları) veriyi tablo yapısında satırlarda tutan, kolonlar aracılığı ile verinin tipini belirleyebildiğimiz, verinin ilişkisel ve normalizasyon kurallarına uygun halde saklanmasını bekleyen bir veri depolama yazılımıdır. Standart Query Language (SQL) dili ile farklı tablolarda tutulan verileri kolayca joinleyip kullanabildiğimiz bir formata sahiptir. Yani tablolarda tutulan veriler birbiri ile ilişkilidir diyebiliriz. RDBMS’lerden max verimi almak için tutulacak verinin structured olması gerekir.

Günümüzde en çok kullanılan RDBMS’ler Postgresql, Oracle, MsSQL ve Mysql’dir. https://db-engines.com/en/ranking sitesini incelediğimizde Oracle’ın 2022 yılını da ilk sırada tamamladığını görüyoruz.

RDBMS’lerin en önemli avantajı ACID standartlarıdır. Atomicity, Consistency, Isolation, and Durability sayesinde rdbms’ler transactionların güvenilirliğini garanti eder. Yani bir transaction yarıda kaldığı zaman db bu transactiondan önceki halinde yaşamına devam eder. Bunun yanında rdbms’ler normalizasyon kuralları sayesinde de datanın tekrar edilmesinin önüne geçer ve maliyeti düşürür.

RDBMS’lerin Dezavantajları

Rdbms’lerin en önemli dezavantajı scalability diyebiliriz. Bu veritabanları geliştirildiğinde cluster ve distributed çalışma kavramları bugünkü kadar yaygın değildi. Ve sonradan bu özellikleri kazandılar. Rdbms veritabanlarını ihtiyaç durumlarında ölçeklendirebilmek hala ciddi efor isteyen bir iştir.
Rbdms’ler çok esnek kurallara da sahip değildir. Örneğin bir tablo create ettiğimizde kolon sayısını ve veri tipini belirlememiz gerekiyor. Bu tanıma uygun şekilde davranıp bazı satırların farklı kolonlara sahip olmasını sağlayamıyoruz. Bu yüzden tablo bütününde genel kurallara uymak durumundayız. Ayrıca tablo datası büyüdükçe performans optimizasyonu da ciddi bir iş başlığı olarak karşımıza çıkıyor.

NoSQL veri tabanları

Nosql veri tabanları unstructured datanın depolanması amacıyla geliştirilmiştir. Nosql’ler horizontal scalability özellikleri bakımından çok gelişmiştir. Nosqllerin de kendi içinde kullanım amacına göre kendi içinde farklılaşmıştır;

Document Based Database: Mongodb
Column Based Database: Hbase, Cassandra
Key-Value Store Database: Redis, DynamoDB
Graph Database: Neo4j

Document Based Nosql dbler veriyi döküman formatında field : value eşleştirmesi ile depolar. Rdbms’lerdeki gibi bir şema yapısı olmadığından esnektir ve fieldları ön tanım olmadan kolayca kullanabiliriz. Bu sayede unstructured datanın kolayca depolanmasına imkan verir.

Column based Nosql dbler ise verinin ilişkisel formata en yakın şekilde tutulduğu nosql dblerdir. Keyspace kavramı ilişkisel modeldeki veri tabanı kavramına karşılık gelir. Keyspace içerisinde ise column family’ ler bulunur. Column family ise kolon ve satırlardan oluşur.

Nosql veri tabanlarının kullanım oranlarını aşağıdaki grafikte görebiliriz;

nosql trend chart
nosql trend chart

Ne Zaman RDBMS, Ne Zaman Nosql ?

Bu kısa tanımlamalardan sonra aklımıza gelen soru büyük ihtimalle “Ne zaman RDBMS, Ne zaman Nosql veritabanı kullanacağız” sorusu olacaktır. Bu sorunun cevabı şu şekilde özetlenebilir;
Bir uygulama datasının yapısı, boyutu ve erişim sıklığı gibi konularda öngörülere sahipsek RDBMS’ler en iyi seçim olacaktır. Bu sayede ilişkisel datanın kompleks joinler ile birleştirilip sorgulanabilir hale getirilir. Ayrıca normalizasyon sayesinde datanın tekrarlanma sıklığı azaltılarak disk üzerinde kapladığı alan da azaltılmış olur.

Eğer büyük boyutta veri veya yapısal olmayan bir uygulama datası depolayacaksak bu senaryoda doğru seçim nosql veritabanı olacaktır. Yine veri yapısını bir schema mantığına oturtamıyorsak veya uygulama datası değişken, ilerde değişime açık bir data ise nosql veritabanı tercihi doğru olacaktır. Ayrıca scalability ihtiyaçlarının fazla olduğu projeler için de nosql veritabanı kullanımı doğru tercihtir. Aşağıdaki tabloda rdbms ve nosql veritabanları için özet bir karşılaştırma imkanı buluyoruz.

rdbms vs nosql
rdbms vs nosql

Diğer Faktörler

Teknik özellikler dışında uygun veritabanının seçimi konusunda başka bileşenler de bu karaları etkiler. Aşağıdaki faktörler ayrıca değerlendirilmesi gereken başlıklar olarak öne çıkıyor;

  • Performans ve ölçeklenebilirlik
  • Güvenlik ve yedekleme
  • Veri yapıları ve sorgulama ihtiyaçları
  • Proje ihtiyaçları ve bütçe

Tabiki her kurumun envanterinde belirli db’ler var ve maliyetler sebebi ile bu çeşitliliği çok arttırmak bazen mümkün olmayabiliyor. Hangi seçim yapılırsa yapılsın günümüzde verinin en hızlı ve efektif şekilde depolanması ve sorgulanabilmesi için rdbms ve nosql veritabanlarının bir arada kullanılması en uygun çözüm olarak ortaya çıkıyor. Bunun yanında data saklama maliyetinin düşürülmesi için uygun olan senaryolarda big data çözümlerini kullanmak da uygulanabilecek çözümlerden bir tanesidir.

Sonraki yazılarda görüşmek üzre, iyi çalışmalar.

Veysel YUKSEL
Latest posts by Veysel YUKSEL (see all)

Veysel YUKSEL

RDBMS ve NoSQL veri tabanı yönetimi ve Big Data teknolojileri.

You may also like...

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir