Bir veritabanı, verinin düzenli biçimde saklandığı, güncellendiği ve sorgulandığı sistemdir. Ama tek bir veritabanı türü yoktur: ilişkisel sistemler, NoSQL aileleri, bellek içi motorlar ve analitik depolar farklı ihtiyaçlara göre tasarlanmıştır. Bu rehber, veritabanı türlerini sınıflandırır, her ailenin nerede parladığını anlatır ve popüler ürünleri kısaca tanıtıp ayrıntılı yazılara yönlendirir.

Veritabanı Nedir?

Veritabanı, birbiriyle ilişkili verileri disk ya da bellek üzerinde yapısal bir biçimde tutan bir koleksiyondur. Bu veriyi yöneten yazılıma ise veritabanı yönetim sistemi (DBMS) denir. DBMS; veriyi yazma, okuma, güncelleme ve silme işlemlerini, aynı anda birden fazla kullanıcının erişimini, yetkilendirmeyi ve dayanıklılığı üstlenir.

Çoğu ciddi iş uygulaması verinin bütünlüğünü ACID özellikleriyle (Atomiklik, Tutarlılık, İzolasyon, Dayanıklılık) garanti etmek ister. Bazı dağıtık sistemler ise ölçeklenebilirlik uğruna daha gevşek tutarlılık modelleri (nihai tutarlılık) tercih eder. Bir veritabanı türü seçerken bu dengeyi anlamak belirleyicidir.

Veritabanı ile düz dosya (örn. bir metin ya da tablo dosyası) arasındaki temel fark, DBMS'in sağladığı güvencelerdir: eşzamanlı erişimde kilitleme, kısmi güncellemede geri alma, yetkilendirme ve sorgulama için optimize edilmiş indeksler. Küçük bir veri seti için dosya yeterli olabilir; veri büyüdükçe ve birden fazla kullanıcı eriştikçe bir DBMS neredeyse zorunlu hale gelir.

Veritabanı Türleri Nasıl Sınıflandırılır?

Veritabanı Türleri Nasıl Sınıflandırılır? İlişkisel (RDBMS), NoSQL - Doküman, NoSQL - Anahtar-Değer, NoSQL - Kolon Ailesi

Veritabanları birden fazla eksende sınıflandırılabilir: veri modeline göre (ilişkisel, doküman, anahtar-değer, grafik, kolon), verinin nerede tutulduğu (disk tabanlı, bellek içi), iş yüküne göre (işlemsel/OLTP, analitik/OLAP) ve mimariye göre (tek düğüm, dağıtık). Aşağıdaki tablo temel aileleri özetler.

AileVeri modeliTipik kullanımÖrnekler
İlişkisel (RDBMS)Tablolar, satır ve sütunlar; SQLİşlemsel iş uygulamaları, finans, ERPPostgreSQL, MySQL, Oracle
NoSQL - DokümanJSON benzeri belgelerİçerik, kataloglar, esnek şemalı veriMongoDB, Couchbase
NoSQL - Anahtar-DeğerAnahtar -> değer çiftleriÖnbellek, oturum, sayaçlarRedis, DynamoDB
NoSQL - Kolon AilesiGeniş kolon yapılarıÇok yüksek yazma hacmi, zaman serisiCassandra, HBase
NoSQL - GrafikDüğüm ve kenarlarİlişki ağırlıklı veri, öneri, dolandırıcılıkNeo4j
Bellek içiÇoğunlukla RAM'deDüşük gecikme, gerçek zamanlıRedis, Oracle TimesTen
Analitik (OLAP)Çoğunlukla kolon tabanlı depolamaRaporlama, veri ambarı, BIVertica, DuckDB, SAP HANA

İlişkisel Veritabanları (RDBMS)

İlişkisel veritabanları veriyi tablolar halinde tutar; her tablo satırlardan (kayıt) ve sütunlardan (alan) oluşur. Tablolar arasındaki bağlar birincil ve yabancı anahtarlarla kurulur. Sorgu dili olarak standartlaşmış SQL kullanılır ve çoğu sistem ACID işlemlerini destekler. İyi tanımlı bir şema, veri bütünlüğünü ve tutarlı ilişkileri sağlar.

sql
-- Basit bir iliskisel sorgu: musterileri siparisleriyle birlestirme
SELECT m.ad, COUNT(s.id) AS siparis_sayisi
FROM musteriler m
LEFT JOIN siparisler s ON s.musteri_id = m.id
GROUP BY m.ad
ORDER BY siparis_sayisi DESC;

İlişkisel model; muhasebe, e-ticaret, ERP ve genel iş uygulamaları gibi tutarlılığın kritik olduğu alanlarda uzun süredir standarttır. Güçlü tarafı netlik ve bütünlük; ölçeklenirken (özellikle yatay ölçekte) ise ek tasarım çabası gerektirebilir. Normalizasyon ile veri tekrarı azaltılır; indeksler ile sorgular hızlandırılır; işlemler (transaction) ile birden çok değişiklik tek bir bütün olarak uygulanır ya da tümüyle geri alınır.

İlişkisel sistemlerin büyük avantajı olgunluklarıdır: on yıllara dayanan bir ekosistem, geniş araç desteği, yerleşik yedekleme ve kurtarma pratikleri ile büyük bir uzman topluluğu mevcuttur. Bu nedenle çoğu proje için makul bir başlangıç noktası oluşturur.

NoSQL Veritabanları

NoSQL, katı ilişkisel şemaya bağlı kalmayan çeşitli veritabanı ailelerinin ortak adıdır. Amaç çoğu zaman esneklik ve yatay ölçeklenebilirliktir. Dört ana alt aile vardır:

  • Doküman veritabanları: Veriyi JSON benzeri belgelerde tutar; şema esnektir. İçerik yönetimi ve kataloglar için yaygındır (örn. MongoDB).
  • Anahtar-değer depoları: En basit model; bir anahtara karşılık bir değer. Önbellek ve oturum verisi için çok hızlıdır (örn. Redis).
  • Kolon ailesi (wide-column): Çok büyük yazma hacimleri ve zaman serisi verisi için ölçeklenir (örn. Apache Cassandra).
  • Grafik veritabanları: Düğüm ve kenarlarla ilişkileri modeller; sosyal ağ, öneri ve dolandırıcılık analizi için uygundur (örn. Neo4j).

NoSQL sistemleri genellikle ölçeklenebilirlik için bazı durumlarda daha gevşek tutarlılık (nihai tutarlılık) sunar. Bu, doğru kullanım senaryosunda avantaj, yanlış senaryoda ise risk olabilir; seçim iş gereksinimlerine bağlıdır.

NoSQL, ilişkisel veritabanlarının yerini alan değil, onları tamamlayan bir yaklaşım olarak düşünülmelidir. Çok sayıda modern sistem, aynı uygulamada birden fazla veritabanını bir arada kullanır (polyglot persistence): işlemsel çekirdek ilişkisel bir sistemde, önbellek bir anahtar-değer deposunda, arama ise ayrı bir motorda tutulabilir.

SQL mi NoSQL mi?

SQL mi NoSQL mi? Şema, Sorgu dili, Tutarlılık, Ölçekleme eğilimi

Bu ikisi arasındaki seçim çoğu zaman 'hangisi daha iyi' değil, 'hangisi bu işe uygun' sorusudur. İlişkisel sistemler güçlü tutarlılık ve karmaşık ilişkiler için, NoSQL sistemleri esnek şema ve belirli ölçekleme desenleri için öne çıkar.

Kriterİlişkisel (SQL)NoSQL
ŞemaÖnceden tanımlı, katıEsnek, değişken
Sorgu diliStandart SQLÜrüne özgü API/sorgu
TutarlılıkGenelde güçlü (ACID)Çoğu zaman ayarlanabilir / nihai
Ölçekleme eğilimiDikey; yatay için ek tasarımYatay ölçek için tasarlanmış
Uygun senaryoFinans, ERP, ilişkisel veriBüyük hacim, esnek/değişken veri

Bellek İçi Veritabanları

Bellek içi (in-memory) veritabanları birincil veriyi diskten çok RAM üzerinde tutar. Böylece disk gecikmesi ortadan kalkar ve okuma-yazma işlemleri çok düşük gecikmeyle tamamlanabilir. Bedeli, RAM'in disk'e göre pahalı ve kalıcı olmamasıdır; bu nedenle bu sistemler genellikle dayanıklılık için diske günlük (log) ya da anlık görüntü (snapshot) yazar.

Bu aile; önbellekleme, oturum yönetimi, gerçek zamanlı skor tabloları, öneri motorları ve düşük gecikme gerektiren işlemsel yükler için tercih edilir. İlişkisel bir arayüz sunan bellek içi sistemler de vardır; örneğin ilgili ürünler için Oracle TimesTen Nedir? ve VoltDB Nedir? yazılarına göz atabilirsiniz.

Analitik Veritabanları (OLAP)

Analitik veritabanları çok sayıda satır üzerinde toplama, gruplama ve raporlama sorgularını hızlı çalıştırmak için tasarlanır. Bunların çoğu kolon tabanlı (columnar) depolama kullanır: veriyi satır satır değil sütun sütun sakladıkları için, yalnızca gereken sütunları okuyup büyük taramaları verimli yaparlar. İşlemsel (OLTP) sistemlerden farklı olarak amaç, tekil kayıt güncellemeleri değil büyük ölçekli analizdir.

ÖzellikOLTP (işlemsel)OLAP (analitik)
AmaçGünlük işlemler, kayıt güncellemeRaporlama, toplu analiz
Tipik sorguAz satır, sık yazmaÇok satır, ağırlıklı okuma
Depolama eğilimiÇoğunlukla satır tabanlıÇoğunlukla kolon tabanlı
ÖrnekSipariş almaAylık satış trendi raporu

Bu alanda MPP (massively parallel processing) mimarili Vertica, tek süreçte çalışan gömülü analitik motor DuckDB ve hem bellek içi hem kolon tabanlı çalışan SAP HANA öne çıkan örneklerdir. DuckDB için sıklıkla kullanılan benzetme, analitik iş yükleri için bir tür gömülü motor olmasıdır.

Popüler İlişkisel Veritabanı Ürünleri

İlişkisel dünyada açık kaynaktan kurumsal ticari sistemlere kadar geniş bir yelpaze vardır. En yaygın kullanılan ürünlerin her biri için ayrıntılı tanıtım yazılarına aşağıdan ulaşabilirsiniz:

NewSQL ve Dağıtık SQL

NewSQL ve Dağıtık SQL: Google Cloud Spanner Nedir?, OceanBase Nedir?, VoltDB Nedir?

NewSQL, ilişkisel modelin ve SQL'in tanıdık tutarlılığı ile NoSQL sistemlerinin yatay ölçeklenebilirliğini birleştirmeyi hedefleyen bir yaklaşımdır. Bu sistemler genellikle birden fazla düğüme dağılır, ancak ACID işlemleri ve SQL arayüzü sunmayı sürdürürler.

  • Google Cloud Spanner Nedir? - küresel ölçekte dağıtık, güçlü tutarlılık hedefleyen yönetilen ilişkisel servis.
  • OceanBase Nedir? - yüksek ölçek için tasarlanmış dağıtık ilişkisel veritabanı.
  • VoltDB Nedir? - düşük gecikmeli işlemler için bellek içi, ölçeklenebilir bir SQL sistemi.

Masaüstü ve Gömülü Veritabanları

Her veritabanı ayrı bir sunucu gerektirmez. Gömülü (embedded) ve masaüstü veritabanları uygulamanın içine ya da tek bir kullanıcının makinesine yerleşir; kurulum ve yönetim yükü düşüktür. Küçük uygulamalar, mobil yazılımlar, prototipler ve tek kullanıcılı senaryolar için idealdir.

Bulut Veritabanı Servisleri

Bulut sağlayıcıları, veritabanlarını yönetilen servis olarak sunar: yedekleme, yama, ölçeklendirme ve yüksek erişilebilirlik gibi işletim yüklerini sağlayıcı üstlenir. Böylece ekipler altyapı yerine uygulamaya odaklanabilir. Yönetilen kurulumlar, kendi sunucunuzda çalıştırmaya göre farklı avantaj ve ödünler taşır.

Google Cloud SQL, Azure SQL ve Amazon RDS gibi seçenekleri; ne zaman yönetilen servis, ne zaman kendi sunucunuzu tercih etmeniz gerektiğiyle birlikte Bulut Veritabanı Servisleri: Cloud SQL, Azure SQL, Amazon RDS yazısında inceliyoruz.

Doğru Veritabanını Nasıl Seçersiniz?

Tek bir 'en iyi' veritabanı yoktur; doğru seçim iş yüküne bağlıdır. Karar verirken şu soruları sormak faydalıdır:

  • Veri modeliniz ne? Güçlü ilişkiler ve tutarlılık mı, yoksa esnek şema mı öne çıkıyor?
  • İş yükünüz işlemsel (OLTP) mi, analitik (OLAP) mi, yoksa ikisi karışık mı?
  • Gecikme hedefiniz nedir? Bellek içi bir katman gerekli mi?
  • Ölçekleme ihtiyacınız dikey mi (daha güçlü tek makine) yoksa yatay mı (çok düğüm)?
  • İşletim modeli: kendi sunucunuzda mı, yoksa yönetilen bulut servisinde mi çalışacak?
  • Lisans ve maliyet: açık kaynak mı, ticari lisans mı? Ekip deneyimi ve ekosistem desteği ne durumda?