MariaDB, MySQL'in kaynak kodundan türetilmiş, açık kaynak ve ticari desteği bulunan ilişkisel bir veritabanı yönetim sistemidir (RDBMS). MySQL ile büyük ölçüde uyumlu kalmayı hedeflerken, zamanla kendi özelliklerini ve motorlarını ekleyerek ayrı bir proje kimliği kazanmıştır. Bu yazıda MariaDB'nin ne olduğunu, nereden geldiğini, mimarisini ve gerçek dünyada nasıl kullanıldığını adım adım ele alıyoruz.
MariaDB Nedir?
MariaDB, SQL tabanlı, ilişkisel bir veritabanı sunucusudur. Verileri satır ve sütunlardan oluşan tablolarda saklar; tablolar arasındaki ilişkileri anahtarlarla kurar ve ACID (Atomiklik, Tutarlılık, İzolasyon, Kalıcılık) garantileri sunan işlemler (transaction) üzerinden güncellenir. Sunucu bileşeni GPLv2 lisansı altında dağıtılır; bu da onu özgür ve açık kaynaklı bir yazılım yapar.
MariaDB, MySQL'in bir çatallanması (fork) olarak doğdu. Amaç, MySQL'in açık kaynak ruhunu sürdürmek ve tek bir şirketin kontrolünden bağımsız, toplulukça geliştirilen bir alternatif sunmaktı. Yıllar içinde iki proje aynı köklerden beslense de birbirinden uzaklaştı; bugün MariaDB'nin kendi depolama motorları, SQL uzantıları ve geliştirme yol haritası vardır.
İlgili rehberler: Veritabanı türleri rehberi · MySQL Nedir? · PostgreSQL Nedir? · Percona Server Nedir?
Kısa Tarihçe: Neden Çatallandı?
MySQL'i geliştiren ekibin bir bölümü, MySQL AB'nin önce Sun Microsystems, ardından Oracle bünyesine geçmesiyle projenin açık kaynak geleceği konusunda endişe duydu. MySQL'in kurucu geliştiricilerinden Michael "Monty" Widenius öncülüğünde, MySQL kod tabanı çatallanarak MariaDB başlatıldı.
İsmin hikâyesi de projeye dair bir ipucu verir: Widenius, MySQL'i kızı "My"nin adından esinlenerek adlandırmıştı; MariaDB ise diğer kızı "Maria"nın adını taşır. Proje bugün iki ana gövde tarafından sürdürülür: açık kaynak sürümü gözeten MariaDB Foundation ve ticari ürün ile destek sunan MariaDB Corporation.
Sürüm Numaralandırması
MariaDB'nin ilk sürümleri, uyumluluğu vurgulamak için MySQL'in sürüm numaralarını takip etti. Projeler ayrıştıkça MariaDB kendi numaralandırma serisine geçti (önce 10.x serisi, ardından 11.x serisi). Bu nedenle bir MariaDB sürüm numarasını doğrudan aynı numaralı bir MySQL sürümüyle eşleştirmek yanıltıcı olabilir; özellik karşılaştırması yaparken sürüm notlarına bakmak doğru yaklaşımdır.
MySQL ile İlişkisi ve Uyumluluk
MariaDB, uzun süre MySQL için bir yerine geçebilir alternatif (drop-in replacement) olarak konumlandı. Birçok sürümde ağ protokolü, istemci kütüphaneleri ve SQL söz dizimi büyük ölçüde uyumlu kaldı; böylece MySQL için yazılmış uygulamalar çoğu zaman yapılandırmayı değiştirmeden çalışabildi. Ancak iki proje bağımsız geliştikçe farklılıklar arttığı için, bugün geçiş öncesi test yapmak şarttır.
| Konu | Açıklama |
|---|---|
| Köken | MariaDB, MySQL kod tabanının çatallanmasıdır |
| Lisans (sunucu) | MariaDB Server GPLv2; MySQL Community GPLv2, ayrıca ticari lisans seçeneği vardır |
| Yönetişim | MariaDB'de Foundation + Corporation; MySQL Oracle tarafından yönetilir |
| Uyumluluk | Çok sayıda sürümde protokol/SQL uyumu yüksek; zamanla özellik ayrışımları artmıştır |
| Depolama motorları | MariaDB ek motorlar sunar (Aria, MyRocks, ColumnStore, Spider, CONNECT vb.) |
| Kümeleme | MariaDB ile Galera tabanlı senkron çok-master replikasyon yaygın kullanılır |
Mimari ve Depolama Motorları
MariaDB'nin en ayırt edici yanlarından biri takılabilir depolama motoru mimarisidir. Aynı sunucu içinde her tablo için farklı bir depolama motoru seçebilir; böylece iş yüküne göre işlemsel, analitik veya dağıtık davranış elde edebilirsiniz. Varsayılan motor, ACID işlem ve satır kilidi sunan InnoDB'dir.
| Motor | Kullanım amacı |
|---|---|
| InnoDB | Varsayılan; ACID işlemler, satır kilidi, foreign key desteği |
| Aria | MyISAM'in crash güvenliği iyileştirilmiş ardılı; bazı sistem tablolarında kullanılır |
| MyISAM | Eski, işlemsiz motor; okuma ağırlıklı basit senaryolar |
| MyRocks | LSM tabanlı, yazma yoğun ve disk verimliliği önemli iş yükleri |
| ColumnStore | Sütun tabanlı; büyük ölçekli analitik/OLAP sorgular |
| Spider | Tabloları birden çok sunucuya bölüp dağıtmak (sharding) için |
| Memory | Verileri RAM'de tutar; geçici ve çok hızlı erişim gereken tablolar |
Ekosistem ve Yardımcı Araçlar
MariaDB yalnızca bir veritabanı sunucusu değil, çevresindeki araçlarla birlikte bir ekosistemdir. Uygulama geliştirirken ve sistemi işletirken sıklıkla şu bileşenlerle karşılaşırsınız:
- mariadb / mysql komut satırı istemcisi: sorgu çalıştırma ve yönetim için
- MaxScale: bağlantı yönlendirme, yük dengeleme ve yüksek erişilebilirlik sağlayan veritabanı proxy'si
- ColumnStore: sütun tabanlı analitik iş yükleri için ayrı motor/dağıtım
- Galera: senkron çok-master kümeleme katmanı
- Connector kütüphaneleri: C, Java (JDBC), Python, Node.js ve diğer diller için sürücü/bağlayıcılar
- mariadb-dump / yedekleme araçları: mantıksal ve fiziksel yedek alma
Bu araçların çoğu MySQL ekosistemiyle de çalışabilir; ancak sürüm uyumuna ve önerilen sürücü versiyonlarına dikkat etmek gerekir. Özellikle uzun süreli çalışacak üretim sistemlerinde, kullandığınız istemci kütüphanesinin hedef sunucu sürümüyle test edilmiş olması önemlidir.
Öne Çıkan Özellikler
MariaDB, modern SQL standardının birçok bileşenini ve işletim kolaylığı sağlayan araçları içerir. Bu özellikler, basit CRUD işlemlerinin ötesinde analitik sorgular, veri geçmişi takibi ve ölçeklenme gibi ihtiyaçları da karşılamaya yöneliktir. Başlıca özellikler:
- Pencere fonksiyonları (window functions) ve ortak tablo ifadeleri (CTE) ile karmaşık analitik sorgular
- JSON işlevleriyle yarı yapısal veriyle çalışma
- Sistem-sürümlü (temporal) tablolar: kayıtların geçmiş hallerini otomatik saklama
- Sequence nesneleri ile esnek sayaç/anahtar üretimi
- GTID tabanlı replikasyon ile daha güvenilir yüksek erişilebilirlik
- Çeşitli kimlik doğrulama ve şifreleme eklentileri, veri-durgun (at-rest) şifreleme
- MaxScale veritabanı proxy'si ile yük dengeleme, yönlendirme ve yüksek erişilebilirlik
Kurulum ve İlk Bağlantı
MariaDB, Linux dağıtımlarının depolarında, resmi paketlerde ve konteyner imajlarında bulunur. Aşağıda tipik bir Debian/Ubuntu kurulumu ve komut satırı istemcisiyle ilk bağlantı örneği yer alıyor. İstemci komutu hem mariadb hem de gelenekten gelen mysql adıyla çağrılabilir.
# Debian / Ubuntu deposundan kurulum
sudo apt update
sudo apt install mariadb-server mariadb-client
# Servisi baslat ve acilista etkinlestir
sudo systemctl enable --now mariadb
# Guvenlik sihirbazi (root parolasi, anonim kullanicilar vb.)
sudo mariadb-secure-installation
# Yerel baglanti
sudo mariadb -u root -pTemel SQL Kullanımı
Aşağıdaki örnek; bir veritabanı ve tablo oluşturmayı, veri eklemeyi, sınırlı yetkili bir kullanıcı tanımlamayı ve basit bir analitik sorguyu gösterir. Söz dizimi MySQL'e aşina olanlara tanıdık gelecektir.
-- Veritabani ve tablo
CREATE DATABASE haber_portali
CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE haber_portali;
CREATE TABLE makaleler (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
baslik VARCHAR(200) NOT NULL,
yayin_tarihi DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
goruntulenme INT NOT NULL DEFAULT 0
) ENGINE=InnoDB;
-- Veri ekleme
INSERT INTO makaleler (baslik, goruntulenme) VALUES
('MariaDB Nedir?', 1200),
('Veritabani Turleri', 800);
-- Uygulama icin sinirli yetkili kullanici
CREATE USER 'app'@'%' IDENTIFIED BY 'guclu-parola';
GRANT SELECT, INSERT, UPDATE, DELETE ON haber_portali.* TO 'app'@'%';
FLUSH PRIVILEGES;
-- Pencere fonksiyonu ile siralama
SELECT baslik, goruntulenme,
RANK() OVER (ORDER BY goruntulenme DESC) AS sira
FROM makaleler;Yüksek Erişilebilirlik: Replikasyon ve Galera
MariaDB, tek sunucunun ötesine geçmek için birkaç yol sunar. Klasik asenkron/yarı-senkron replikasyon ile bir birincil (primary) sunucudaki değişiklikler bir veya daha fazla ikincil (replica) sunucuya aktarılır; bu, okuma yükünü dağıtmak ve yedek almak için yaygındır. GTID (Global Transaction ID) tabanlı replikasyon, kopyalar arasında geçişi ve tutarlılığı kolaylaştırır.
Daha yüksek yazma erişilebilirliği için Galera Cluster kullanılır. Galera, senkron ve sanal olarak çok-master (multi-master) bir replikasyon sağlar: bir işlem, kümedeki düğümlerde sertifikasyondan geçtikten sonra onaylanır. Bir düğüm düştüğünde diğerleri hizmet vermeye devam eder. Önünde MaxScale gibi bir proxy ile okuma/yazma yönlendirmesi ve otomatik yük dengeleme eklenebilir.
Güvenlik
MariaDB, kurumsal ortamlar için gerekli güvenlik denetimlerini destekler. Önemli başlıklar:
- En az yetki ilkesi: her uygulama için ayrı kullanıcı ve yalnızca gereken izinler (GRANT)
- Aktarım güvenliği: istemci-sunucu trafiği için TLS/SSL
- Veri-durgun şifreleme: tablo alanları ve günlük dosyaları için at-rest şifreleme seçenekleri
- Kimlik doğrulama eklentileri: parola politikaları ve harici doğrulama yöntemleri
- Rol tabanlı yetkilendirme (roles) ile izin yönetimini sadeleştirme
- Denetim günlüğü (audit) eklentisiyle erişim ve değişiklik izleme
Ne Zaman MariaDB Seçmeli?
MariaDB, MySQL ekosistemine aşina ekipler için doğal bir tercihtir. Tipik senaryolar:
- MySQL tabanlı mevcut uygulamalar için açık kaynak, toplulukça geliştirilen bir alternatif arayanlar
- Web uygulamaları ve içerik/haber yönetim sistemleri gibi OLTP iş yükleri
- Galera ile yüksek erişilebilirlik isteyen orta ölçekli servisler
- Aynı sistemde ColumnStore ile hafif analitik veya MyRocks ile yazma verimliliği arayan ekipler
Buna karşılık çok özel iş yüklerinde diğer sistemleri de değerlendirmek mantıklıdır. Geniş eklenti ekosistemi ve gelişmiş metin/coğrafi özellikler için PostgreSQL, Oracle uyumluluğu için MySQL'in ticari sürümü veya başka çözümler daha uygun olabilir. Karşılaştırmalı bir bakış için veritabanı türleri rehberimize göz atabilirsiniz.
Lisans ve Yönetişim
MariaDB Server, GPLv2 kapsamında özgür/açık kaynak yazılım olarak dağıtılır; kaynak kodu herkese açıktır ve GPL koşulları altında kullanılabilir. İstemci kütüphaneleri ve bazı araçlar farklı açık kaynak lisanslara sahip olabilir (ör. bağlayıcı kütüphaneler için LGPL). Ticari destek, danışmanlık ve bazı ürünler MariaDB Corporation tarafından sağlanır; açık kaynak projenin yönetişimini ise MariaDB Foundation üstlenir.
Haber Siteleri İçin Kısa Notlar
Yüksek trafikli haber ve içerik siteleri için veritabanı katmanı; okuma performansı, yedekleme, yüksek erişilebilirlik ve karakter kodlaması (utf8mb4 ile tam Unicode ve emoji desteği) açısından doğru kurgulanmalıdır. MariaDB'nin replikasyon ve Galera seçenekleri, artan yük altında ölçeklenmeye ve kesintisiz yayına yardımcı olur. Uygun indeksleme, sorgu önbellekleme stratejisi ve düzenli yedek testleri, sahada en çok fark yaratan alıştırmalardır.