← Teknoloji Radarı

Veritabanı

Turso: SQLite'ı Rust ile baştan yazmak

SQLite dünyanın en yaygın veritabanı ama dışarıdan katkı kabul etmiyor. Turso ekibi onu Rust ile sıfırdan yazıyor ve üstüne aynı anda yazma, vektör arama ve şifreleme gibi SQLite'ta olmayan özellikler ekliyor.

Bu neden önemli?

Telefonundaki uygulamalardan tarayıcına kadar her yerde SQLite var. Onun yerine geçmeye aday bir proje, 'güvenilir yazılım nasıl yeniden yazılır?' sorusunun da iyi bir örneği.

The most trusted code on Earth is being rewritten in Rust · Fireship, YouTube (İngilizce). Tıklayınca video yüklenir.

SQLite neden bu kadar önemli?

Çoğu veritabanı ayrı bir sunucu olarak çalışır. Uygulaman ona ağ üzerinden bağlanır. SQLite ise bir kütüphane. Doğrudan programının içinde çalışır ve bütün veriyi tek bir dosyada tutar. Kurulum yok, sunucu yok, port yok.

Bu sadelik onu her yere taşıdı. Telefonlar, tarayıcılar, masaüstü uygulamaları, hatta uzay araçları SQLite kullanıyor. Yaklaşık 25 yıldır geliştiriliyor ve çok sıkı test edildiği için “en güvenilir kod” diye anılıyor.

Sorun ne o zaman?

SQLite’ın kodu herkese açık, istediğin gibi kullanabilirsin. Ama proje küçük bir ekip tarafından yönetiliyor ve dışarıdan kod katkısı kabul etmiyor. Bu, kalitenin korunmasına yardım ediyor. Öte yandan yeni özellikler çok yavaş geliyor. Bir fikrin varsa, onu SQLite’a sokman neredeyse imkânsız.

Turso şirketi önce SQLite’ın bir kopyası (fork) olan libSQL’i çıkardı. 2024 sonunda ise daha büyük bir adım attı: SQLite’ı Rust ile sıfırdan yazmaya karar verdi. İlk adı Limbo olan proje artık Turso Database diye biliniyor ve açık kaynak, dışarıdan katkıya açık.

SQLite’ta olmayan ne var?

  • Aynı anda yazma. SQLite’ta aynı anda sadece bir işlem yazabilir. Diğerleri sırada bekler. Turso’da BEGIN CONCURRENT ile birden fazla işlem aynı anda yazabiliyor. Ancak aynı satırlara dokunurlarsa çakışma oluyor. Turso’ya göre bu, yazmayı 4 kata kadar hızlandırabiliyor.
  • Asenkron giriş/çıkış. SQLite diske her dokunduğunda bekler. Turso bu bekleme sırasında kontrolü uygulamaya geri verebiliyor. Linux’ta bunun için io_uring kullanıyor.
  • Vektör arama. Yapay zekâ uygulamaları metinleri embedding denen sayı dizilerine çevirip “anlamca en yakın” kayıtları arar. Genelde bunun için ayrı bir vektör veritabanı kurulur. Turso bunu doğrudan veritabanının içine koyuyor. Verin ve embedding’lerin aynı dosyada duruyor.
  • Şifreleme, değişiklik takibi (CDC) ve tarayıcı desteği de yerleşik geliyor.

Güveni nasıl kazanacak?

Daha fazla özellik eklemek kolay kısım. Zor olan, 25 yılda kazanılmış güveni yakalamak. Bunun iki şartı var: SQLite’ın yerine sorunsuz oturmak ve asla veri kaybetmemek.

Turso, dosya biçimi ve SQL dili olarak SQLite ile uyumlu olmayı hedefliyor. Mart 2026’daki yazılarına göre SQLite’ın özelliklerinin neredeyse tamamı hazır. Birden fazla sürecin aynı dosyayı kullanması ve VACUUM gibi birkaç parça ise hâlâ yapım aşamasında. Proje de henüz beta.

Veri kaybına karşı kullandıkları yöntem ilginç: Deterministic simulation testing (belirlenimci simülasyon testi). Veritabanı sahte bir dünyada çalıştırılıyor. Zaman, disk ve ağ tamamen test kodunun kontrolünde. Yazmanın ortasında elektrik kesintisi, bozuk bir sayfa ya da “kaydettim” deyip kaydetmeyen bir disk gibi hatalar bilerek üretiliyor. Hata bulunursa, aynı rastgele tohum (seed) ile senaryo birebir tekrar oynatılabiliyor. Böylece nadir görülen hatalar da yakalanıp düzeltilebiliyor.

Kullanmalı mısın?

Bugün çalışan bir uygulamada SQLite’ı Turso ile değiştirmek için acele etme. Proje beta ve SQLite’ın sicili hâlâ rakipsiz. Ama yeni bir yapay zekâ projesinde vektör aramaya ya da yoğun yazmaya ihtiyacın varsa, denemeye değer.

Düşün

  • Bir yazılımın “güvenilir” olduğuna neye bakarak karar verirsin: yaşına mı, testlerine mi, kullanıcı sayısına mı?
  • Bir projenin dışarıdan katkı kabul etmemesi, sence bir güç mü yoksa zayıflık mı?

Bu yazıdaki araçlar Araç Kutusu'nda: Turso Database