RadarGitHub Radarai üretimi

GitHub Radar — redb

Saf Rust ile yazılmış, WAL gerektirmeyen kopyala-yaz B-tree mimarisine ve MVCC desteğine sahip gömülü anahtar-değer veritabanı.

redb, modern sistem programlama ve yerel veri saklama ihtiyaçları için C/C++ bağımlılıklarını ve güvenli olmayan işaretçi aritmetiğini tamamen dışlayan, saf Rust (pure Rust) ile geliştirilmiş gömülü bir anahtar-değer (key-value) veritabanıdır 1. Geleneksel RocksDB veya LMDB kütüphanelerinin C++ FFI (Foreign Function Interface) derleme zorlukları, bellek haritalama (mmap) kaynaklı tanımsız davranış (undefined behavior) riskleri ve ağır arka plan sıkıştırma (compaction) duraklamaları yarattığı senaryolarda redb; tip güvenli tabloları, Çok Sürümlü Eşzamanlılık Denetimi (MVCC) ve doğrudan donanıma konuşan kopyala-yaz (copy-on-write) B-tree mimarisiyle sıfır soyutlama maliyetli bir depolama motoru sunar 2.

Gömülü veritabanı ekosisteminde 4.8 bin yıldız ve son commit 2 hafta önce düzeyinde istikrarlı bir ilgiye sahip olan repo, kusursuz bakım disiplinini belgeleyen 4 açık issue ve kararlı üretim olgunluğunu kanıtlayan son sürüm v2.6.1 (Temmuz 2025) metrikleriyle canlılığını korumaktadır.

Mimari Deep-Dive: redb

redb’nin mimari tasarım felsefesi, LMDB’nin bellek içi B-tree zarafetini alıp Rust’ın katı mülkiyet (ownership) ve bellek güvenliği kurallarıyla baştan inşa etmeye dayanır. Proje harici hiçbir C bağımlılığı barındırmaksızın tamamen Rust ile yazılmıştır 1. Rust seçimi; çekirdek API yüzeyinde unsafe blokları en aza indirmek, veri yarışlarından arındırılmış eşzamanlılık sağlamak ve genel anahtar-değer tiplerini TableDefinition<'_, Key, Value> yapısıyla derleme zamanında tip denetimine tabi tutmak için yapılmıştır. Veri serileştirme ve karşılaştırma işlemleri doğrudan tip seviyesinde çözülerek çalışma zamanı yansıma (reflection) maliyetleri sıfırlanır.

Geleneksel ilişkisel ve NoSQL veritabanlarının çökme dayanıklılığı (crash durability) sağlamak için başvurduğu ilk mekanizma Önceden Yazma Günlüğüdür (Write-Ahead Log / WAL). WAL mimarisi her yazmada çift G/Ç işlemi gerektirir ve çökmelerden sonra uzun toparlanma (recovery replay) süreçleri doğurur. redb ise WAL mekanizmasını tamamen reddeder; bunun yerine saf bir Kopyala-Yaz (Copy-on-Write / COW) B-tree katmanı işletir 3. Bir yazma işlemi sırasında değiştirilen yaprak ve dal düğümleri yerinde güncellenmez; yeni bir bellek sayfasına kopyalanarak üzerinde değişiklik yapılır ve bu yol ağacın kök düğümüne kadar yeni sayfalar oluşturularak tırmanır.

İşlemin kalıcılığı iki aşamalı tamamlama (2PC) veya küçük işlemler için geliştirilmiş tek aşamalı sağlama toplamlı (1PC+C) tamamlama ile sağlanır 4. Değiştirilen tüm yeni sayfalar fdatasync ile diske güvenle yazıldıktan sonra, dosya başlığındaki aktif kök göstericisi (root pointer) tek bir atomik yazma işlemiyle yeni köke çevrilir. Eğer disk yazımı sırasında elektrik kesilirse veya süreç çökerse, kök göstericisi eski geçerli ağacı göstermeye devam eder; veri tabanında tek bir bayt dahi bozulmaz ve sıfır toparlanma süresiyle anında açılır. Eşzamanlılık tarafında ise MVCC mimarisi sınırsız sayıda kilitsiz okuyucuya izin verir. Okuyucular kök göstericisinin değişmez bir anlık görüntüsünü (snapshot) tutar; tekil yazıcı kendi işlemlerini yürütürken okuyucular asla kilitlenmez, okuyucular da yazıcıyı asla durdurmaz. Eski bellek sayfaları ise serbest sayfa yöneticisi (freelist) tarafından referansları bittiğinde güvenle geri dönüştürülür.

Kod ve Topluluk Sağlığı

redb, eski OpenAI altyapı mühendislerinden Christopher Berner (cberner) tarafından tasarlanan ve bağımsız sistem programcılarının desteğiyle geliştirilen olağanüstü yüksek disiplinli bir projedir 1. Açık kaynak dünyasında binlerce yıldız alıp yüzlerce sahipsiz issue biriktiren depoların aksine, redb’nin açık issue listesinde yalnızca 4 kayıt bulunması projenin teknik olgunluğunu ve bakım ciddiyetini açıkça gösterir.

Kod tabanındaki kalite güvencesi endüstriyel standartlardadır. Depoya sunulan her değişiklik; property-based test araçları (proptest), yapay çökme ve elektrik kesintisi simülasyonları (fault injection) ve bellek güvenliği denetimlerinden geçer. Geliştirici ekibi, dışarıdan gelen PR’larda sıfır kopyalama ve bellek tahsisatı kurallarına tavizsiz bir titizlikle yaklaşır; gereksiz soyutlamalar ve kod karmaşası anında reddedilir. Sürüm notları geriye dönük dosya formatı uyumluluğunu, yükseltme kılavuzlarını ve B-tree sayfa hizalama optimizasyonlarını eksiksiz belgeler 5. Maintainer ekibi hata bildirimlerine saatler içinde yanıt vermekte ve yamaları hızla yayımlamaktadır. health_score bu bölümden türer: issue kapanma hızı, sürüm düzeni, bakımcı ekibi. Ajanın tahminidir; künyede öyle yazılır. Ekibin anlık issue kapatma refleksleri, katı mimari kapıları ve üretim kararlılığı göz önüne alınarak projenin sağlık puanı health_score: 8.8 olarak takdir edilmiştir.

Production Riski: Gerçekten Kullanılır mı?

redb’yi canlı üretim mimarilerine dahil etmeyi planlayan mühendisler için lisanslama açısından hiçbir hukuki risk bulunmamaktadır; proje MIT ve Apache 2.0 çift lisansı (dual-licensed) ile dağıtılmakta olup kurumsal sistemlerde tam kullanım özgürlüğü sunar 6.

redb’nin üretimde hayat kurtardığı senaryolar oldukça nettir: Dağıtık mutabakat sistemlerinde Raft log depolaması, Rust ile yazılmış mikroservislerde yerel durum önbelleklemesi, masaüstü uygulamaları ve uç (edge) IoT cihazları. C++ derleyicisi gerektirmeyen saf Rust yapısı sayesinde çapraz derleme (cross-compilation) kabusu yaşatmaz ve SQLite’ın gereksiz SQL ayrıştırma ek yükünden kurtararak tekil okuma işlemlerinde mikro-saniye seviyesinde gecikme sunar.

Buna karşın, mimari ödünleşimlerin bilincinde olmak gerekir. İlk kısıt, kopyala-yaz (COW) mekanizmasının doğası gereği rastgele yazma işlemlerinde yarattığı yazma şişmesidir (write amplification). Sürekli yüksek hacimli rastgele anahtar yazan iş yüklerinde LSM-tree mimarileri (Pebble veya RocksDB) daha yüksek yazma verimi sağlayabilir. İkinci kısıt ise çoklu süreç (multi-process) mimarileridir; redb tek bir süreç içinde yüzlerce iş parçacığıyla eşzamanlı çalışacak biçimde tasarlanmıştır, işletim sistemi seviyesinde birden fazla bağımsız sürecin aynı dosyaya eşzamanlı yazmasına izin vermez. Doğru iş yükü sınırlarında konumlandırıldığında redb, yerel depolama için tartışmasız en zarif ve dayanıklı Rust motorlarından biridir.

Kaynaklar

  1. redb GitHub Ana Deposu
  2. redb Resmi Web Sitesi ve Dokümantasyonu
  3. redb B-tree Mimarisi ve Tasarım Tartışması
  4. redb 1PC+C ve İki Aşamalı Tamamlama İncelemesi
  5. redb Crates.io Paket Sayfası ve Sürümleri
  6. redb Apache 2.0 Lisans Dosyası