OceanBase, tek bir sunucuya sığmayan yükleri birden fazla makineye dağıtarak çalışan, ilişkisel bir veritabanı yönetim sistemidir. Klasik bir RDBMS gibi SQL ve ACID işlem garantileri sunarken; ölçeklenebilirliği, yüksek erişilebilirliği ve güçlü tutarlılığı dağıtık bir mimariyle bir araya getirir. Bu yazıda OceanBase'in ne olduğunu, nereden geldiğini, mimarisini ve hangi senaryolarda anlamlı olduğunu tarafsız biçimde ele alıyoruz.
OceanBase Nedir?
OceanBase, dağıtık ilişkisel veritabanı (distributed RDBMS) kategorisine giren bir sistemdir. Verileri birden fazla düğüme (node) yayar, ancak uygulamaya karşı tek bir mantıksal veritabanı gibi görünür. Yani geliştirici tarafında tanıdık SQL yazılırken, arka planda veriler bölümlenir, çoğaltılır ve düğümler arasında dağıtılır.
OceanBase'i sıradan bir tek-düğüm veritabanından ayıran temel fikir, ölçeğin yatay büyümesidir. Daha güçlü bir sunucu almak (dikey ölçekleme) yerine, kümeye yeni sunucular ekleyerek kapasiteyi artırabilirsiniz. Bu yaklaşım, çevrim içi işlem hacmi çok yükselen sistemlerde tek bir makinenin sınırına takılmayı önlemeyi hedefler.
Kısa Tarihçe ve Kökeni
OceanBase, Çin merkezli Alibaba Group ve onun finansal teknoloji kolu Ant Group bünyesinde geliştirilmeye başlanmış bir projedir. Başlangıç motivasyonu, Alibaba ve Alipay ekosisteminin çok yüksek işlem hacimlerini karşılayabilecek bir altyapı ihtiyacıydı. Özellikle her yıl büyük trafik dalgaları yaratan alışveriş etkinlikleri ("Çift 11" / Singles' Day gibi), tek makineli veya klasik ölçekleme yaklaşımlarını zorlayan bir yük profili oluşturuyordu.
Zaman içinde OceanBase, iç kullanımdan çıkıp ürünleşen ve dışarıya da sunulan bir veritabanı hâline geldi. Bir topluluk sürümü açık kaynak olarak yayımlandı; kurumsal sürüm ise ticari destekle sunulmaktadır. Bu geçmiş, OceanBase'in tasarım önceliklerini açıklar: çok yüksek eşzamanlılık, kesinti toleransı ve büyük ölçekli çevrim içi işlem (OLTP) yükleri.
Mimari: Paylaşımsız Dağıtık Yapı
OceanBase, paylaşımsız (shared-nothing) bir mimari benimser. Kümede her sunucu kendi işlemci, bellek ve diskine sahiptir; düğümler ortak bir disk paylaşmaz. Bu, tek bir donanım bileşeninin tüm sistemi kilitlemesini önler ve yatay ölçeklemeyi kolaylaştırır.
Veritabanı hizmetini veren süreçler genel olarak OBServer olarak anılır. Veriler mantıksal olarak bölümlere (partition) ayrılır ve her bölümün birden çok kopyası (replica) farklı sunuculara, çoğunlukla farklı hata alanlarına (zone) yerleştirilir. Böylece bir sunucu ya da bölge devre dışı kalsa bile veri erişilebilir kalır.
| Kavram | Açıklama |
|---|---|
| Düğüm (OBServer) | Veritabanı hizmetini çalıştıran sunucu süreci; işlemci, bellek ve depolamaya sahiptir. |
| Zone (Bölge) | Sunucuların mantıksal/fiziksel gruplandırması; kopyalar farklı zone'lara dağıtılarak hataya dayanıklılık sağlanır. |
| Partition (Bölüm) | Tabloların dağıtım ve çoğaltma için bölündüğü mantıksal birim. |
| Replica (Kopya) | Bir bölümün başka sunuculardaki eşlenik kopyası; okuma ölçeği ve yüksek erişilebilirlik için kullanılır. |
| Tenant (Kiracı) | Aynı küme içinde izole edilmiş, kendi kaynak ve şemasına sahip mantıksal veritabanı ortamı. |
Paxos ve Yüksek Erişilebilirlik
OceanBase, kopyalar arasında tutarlılığı sağlamak için Paxos tabanlı bir uzlaşı (consensus) protokolü kullanır. Her bölüm için kopyalar bir grup oluşturur; yazma işlemleri, grup içinde çoğunluğun (quorum) onayıyla kalıcı hâle gelir. Bir lider (leader) kopya devre dışı kaldığında, kalan kopyalar arasından otomatik olarak yeni bir lider seçilir.
Bu yaklaşımın pratik sonucu, tek bir sunucunun ya da bir bölgenin kaybı durumunda bile sistemin veri kaybetmeden ve kısa bir kesintiyle hizmete devam edebilmesidir. Çoğunluk mantığı gereği, kopyalar genellikle tek sayıda (örneğin üç veya beş) ve farklı hata alanlarına dağıtılacak biçimde konumlandırılır.
Bu tasarımın önemli bir sonucu da, verinin diskteki tek bir kopyaya bağlı kalmamasıdır. Klasik kurulumlarda çoğu zaman ayrı bir yedeklilik katmanı (RAID, ana-yedek replikasyon, harici küme yönetimi) planlamak gerekirken; OceanBase'te çoğaltma ve otomatik lider seçimi doğrudan veritabanının içine gömülüdür. Bu, işletim yükünü azaltabildiği gibi, tutarlılık modelini de basitleştirir çünkü uygulama her zaman güncel ve onaylanmış veriyle çalışır.
Depolama Motoru: LSM-Tree Yaklaşımı
OceanBase'in depolama katmanı, LSM-tree (Log-Structured Merge-Tree) temeline dayanır. Bu modelde veriler iki katmanda düşünülür: bellekte biriken güncel (incremental) değişiklikler ve diskte tutulan sıkıştırılmış temel (baseline) veri. Yazmalar önce belleğe alınır, arka planda periyodik birleştirme (compaction) ile diske indirgenir.
LSM-tree yaklaşımı, yoğun yazma yüklerinde rastgele disk yazımını azaltarak verimi artırmayı hedefler. Okumalarda ise güncel bellek verisi ile disk üzerindeki temel veri birleştirilerek sonuç üretilir. Sıkıştırma sayesinde disk alanı kullanımının verimli olması da bu tasarımın sık vurgulanan yönlerindendir.
LSM-tree yaklaşımı, aynı ailedeki bazı NoSQL sistemlerinde de yaygın olsa da, OceanBase bunu tam ilişkisel bir modelle ve SQL ile birleştirir. Yani hem yazma-yoğun iş yüklerinde verimli bir depolama düzeni hem de tanıdık ilişkisel sorgu yetenekleri aynı anda hedeflenir. İş yükü, ağırlıklı olarak ekleme ve güncelleme içeriyorsa bu tasarımın avantajı daha belirgin hâle gelir.
MySQL ve Oracle Uyumluluğu
OceanBase'in en dikkat çeken pratik özelliklerinden biri, farklı uyumluluk modları sunmasıdır. MySQL uyumlu modda, MySQL protokolü ve büyük ölçüde MySQL söz dizimiyle çalışabilir; bu, mevcut MySQL uygulamalarının geçişini kolaylaştırmayı amaçlar. Ayrı bir Oracle uyumlu mod da, Oracle söz dizimine ve bazı özelliklerine yakınlık sağlamayı hedefler.
Uyumluluk hiçbir zaman yüzde yüz değildir; sürüme ve özelliğe göre farklılıklar bulunabilir. Yine de bu modlar, ekiplerin tanıdık araç ve sürücülerle çalışmaya devam etmesini kolaylaştırır. MySQL dünyasına aşinaysanız MySQL Nedir? yazımız, Oracle tarafını merak ediyorsanız Oracle Database Nedir? yazımız bağlamı tamamlar.
HTAP: İşlem ve Analitiği Birlikte
OceanBase, HTAP (Hybrid Transactional/Analytical Processing) yaklaşımını benimseyen sistemler arasında konumlanır. Amaç, hızlı çevrim içi işlemler (OLTP) ile analitik sorguları (OLAP) tek bir platformda, ayrı bir veri ambarına kopyalama ihtiyacını azaltarak yürütebilmektir.
Pratikte bu, güncel işlem verisi üzerinde analitik sorgular çalıştırabilme esnekliği anlamına gelir. Ancak HTAP her iş yükü için sihirli bir çözüm değildir; ağır ve karmaşık analitik ihtiyaçlarda, kaynak izolasyonu ve sorgu planlaması dikkatle tasarlanmalıdır.
Çok Kiracılı (Multi-tenant) Yapı
OceanBase, aynı fiziksel küme üzerinde birden fazla mantıksal veritabanı ortamını (tenant) izole biçimde barındırabilir. Her kiracının kendi kaynak sınırları, kullanıcıları ve şeması olabilir. Bu, birden çok uygulamayı ya da ekibi tek bir altyapıda, birbirinden yalıtılmış biçimde çalıştırmak isteyen kurumlar için pratik bir modeldir.
Çok kiracılı model, kaynak kullanımını daha verimli hâle getirebilir; ancak kaynak sınırlarının ve önceliklerinin doğru tanımlanması, bir kiracının diğerini etkilemesini (gürültülü komşu problemi) önlemek açısından önemlidir.
OceanBase'i Benzerleriyle Karşılaştırmak
OceanBase'i konumlandırmanın en iyi yolu, onu tek-düğüm ilişkisel veritabanları ve diğer dağıtık SQL sistemleriyle yan yana düşünmektir. Aşağıdaki tablo kavramsal bir çerçeve sunar; kesin davranış her ürünün sürümüne göre değişebilir.
| Özellik | Klasik tek-düğüm RDBMS | OceanBase (dağıtık SQL) |
|---|---|---|
| Ölçekleme | Ağırlıklı olarak dikey (daha güçlü sunucu) | Yatay (kümeye sunucu ekleme) |
| Yüksek erişilebilirlik | Genelde ayrı replikasyon/kümeleme kurulumu | Paxos tabanlı çoğaltma ile yerleşik |
| Veri dağıtımı | Tek düğümde | Bölümlere ayrılmış ve çoğaltılmış |
| Uyumluluk | Kendi söz dizimi | MySQL/Oracle uyumlu modlar |
| Tipik hedef | Orta ölçekli OLTP/OLAP | Yüksek hacimli OLTP ve HTAP |
Benzer felsefeyi paylaşan bir başka örnek için Google Cloud Spanner Nedir? yazımıza bakabilirsiniz; o da güçlü tutarlılık sunan, küresel ölçekli bir dağıtık ilişkisel veritabanıdır.
Basit Bir Kullanım Örneği
MySQL uyumlu modda temel SQL, tanıdık gelir. Aşağıda bölümlenmiş bir tablo oluşturmanın kavramsal bir örneği yer alıyor. Söz dizimi ayrıntıları sürüme göre değişebileceği için, üretim öncesi resmî dokümantasyonu kontrol edin.
-- Kavramsal örnek (MySQL uyumlu mod)
CREATE TABLE siparisler (
id BIGINT NOT NULL,
musteri BIGINT NOT NULL,
tutar DECIMAL(12,2) NOT NULL,
olusturma TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id)
)
PARTITION BY HASH(id) PARTITIONS 8;
INSERT INTO siparisler (id, musteri, tutar)
VALUES (1001, 42, 199.90);
SELECT musteri, SUM(tutar) AS toplam
FROM siparisler
GROUP BY musteri;Ne Zaman Tercih Edilir, Ne Zaman Edilmez?
OceanBase, aşağıdaki gibi durumlarda değerlendirilmeye değerdir:
- Tek bir sunucunun kapasitesini aşan, yüksek eşzamanlılıklı OLTP yükleri
- Kesintiye toleransın kritik olduğu, güçlü tutarlılık gerektiren sistemler
- MySQL veya Oracle uyumluluğuyla geçişin kolaylaştırılmak istendiği projeler
- İşlem ve analitiği (HTAP) tek platformda birleştirme ihtiyacı
Öte yandan, küçük ve orta ölçekli, tek sunucuda rahatça çalışan uygulamalar için dağıtık bir sistemin işletme karmaşıklığı gereksiz olabilir. Basit bir gömülü veritabanı yeterliyse SQLite ya da tek-düğüm bir PostgreSQL daha sade bir seçim olabilir. Doğru araç, her zaman iş yükünüze ve ölçek beklentinize bağlıdır.
Sürüm ve Lisanslama
OceanBase, bir topluluk (community) sürümü açık kaynak olarak sunar; ayrıca ticari destek ve ek özellikler içeren bir kurumsal (enterprise) sürüm de mevcuttur. Açık kaynak sürüm, teknolojiyi denemek ve öğrenmek isteyenler için erişilebilir bir başlangıç noktası sağlar.
Özet
OceanBase; SQL ve ACID sağlayan, ancak verileri paylaşımsız bir küme üzerine dağıtan, Paxos ile güçlü tutarlılık sunan yatay ölçeklenebilir bir ilişkisel veritabanıdır. Yüksek hacimli çevrim içi işlemler, kesinti toleransı ve MySQL/Oracle uyumluluğu ihtiyaçlarında öne çıkar. Daha küçük ölçeklerde ise klasik tek-düğüm sistemler çoğu zaman yeterli ve daha sadedir.
Farklı veritabanı ailelerini ve hangi ihtiyaca hangisinin uyduğunu bütünsel görmek isterseniz, Veritabanı Türleri Rehberi yazımız iyi bir başlangıç noktasıdır.