12 puan yazan GN⁺ 2025-12-13 | Henüz yorum yok. | WhatsApp'ta paylaş
  • Litestream VFS, SQLite veritabanlarını nesne depolamadan (S3 vb.) doğrudan okuyup sorgulamayı mümkün kılan eklenti biçiminde bir genişletmedir
  • Tüm veritabanını indirmeden uzak yedek dosyaları üzerinde anında sorgu ve zamana noktasal geri yükleme (Point-in-Time Recovery, PITR) yapılabilir
  • Dahili olarak LTX formatını kullanarak değişen sayfa kümelerini verimli biçimde yönetir ve tekrarlanan sayfaları atlayan sıkıştırma (compaction) ile geri yükleme hızını artırır
  • SQLite’ın VFS arayüzünü kullanarak yalnızca okuma davranışını yakalar; yazma işlemleri ise mevcut Litestream süreci tarafından yürütülür
  • Saniye düzeyinde yedekleme ve indeks güncellemeleri sayesinde neredeyse gerçek zamanlı bir replika sunar ve bulut ortamlarında hızlı sorgu çalıştırmayı destekler

Litestream VFS’ye genel bakış

  • Litestream VFS, SQLite’ın nesne depolama URL’sini doğrudan veri kaynağı olarak kullanabilmesini sağlayan bir özelliktir
    • SQLite shell’de .load litestream.so ve .open file:///my.db?vfs=litestream komutlarıyla etkinleştirilebilir
    • Sonrasında S3’te saklanan yedek dosyaları temel alınarak sorgular çalıştırılabilir
  • Tüm veritabanını indirmeden uzak yedekten doğrudan sorgu çalıştırmak mümkündür
    • Örnekte SELECT * FROM sandwich_ratings sorgusuyla S3’te depolanan verinin bir kısmı anında görüntülenir

Zamana noktasal geri yükleme (PITR) özelliği

  • PRAGMA litestream_time = '5 minutes ago'; komutuyla belirli bir zamandaki veri durumunu görüntülemek mümkündür
    • Göreli zaman (5 minutes ago) veya mutlak zaman (2000-01-01T00:00:00Z) belirtilebilir
  • Böylece anında zamana noktasal geri yükleme (Point-in-Time Recovery) SQL düzeyinde gerçekleştirilebilir
    • Örnekte hatalı bir UPDATE çalıştırıldıktan sonra 5 dakika önceki duruma dönülerek doğru veriler doğrulanır

LTX formatı ve veri sıkıştırma

  • Litestream v0.5, LTX (Litestream Transaction eXchange) formatını entegre eder
    • Önceki sürümlerde SQLite sayfalarının tamamı aktarılırken, LTX yalnızca sıralı sayfa kümelerini aktarır
  • LTX’in temelinde “compaction” özelliği vardır; bu özellik geri yükleme sırasında yalnızca her sayfanın en güncel sürümünü seçer
    • Örnek: 1 2 3 5 3 5 4 5 5 içinden yalnızca en sağdaki 5, 4, 3, 2, 1 kullanılır
  • LTX yalnızca tüm veritabanında değil, LTX dosya kümeleri arasında da sıkıştırma yapabilir; bu sayede PITR geri yükleme mümkün olur
  • LTX dosyalarının trailer bölümünde her sayfanın ofset indeksi bulunur, bu sayede
    • Tüm dosyayı indirmeden S3 Range istekleri ile yalnızca gerekli sayfalar okunabilir

VFS’nin uygulanma biçimi

  • Litestream VFS, SQLite’ın VFS (Virtual File System) arayüzü kullanılarak uygulanır
    • VFS, SQLite’ın işletim sistemi erişim katmanını soyutlayan eklenti yapısıdır
  • Litestream VFS yalnızca okuma (Read) işlemlerini ele alır; yazma (Write) işlemleri mevcut Litestream süreci tarafından yürütülür
  • SQLite bir sayfayı okuduğunda, VFS istenen bayt ofseti yerine sayfa indeksi tabanlı eşleme yapar
    • İndeksten dosya adı, gerçek ofset ve sayfa boyutu bulunur; ardından S3 API’sinin Range başlığı ile ilgili blok indirilir
  • LRU cache uygulanarak sık erişilen “hot page”ler bellekte tutulur ve S3 çağrılarının sayısı en aza indirilir

Gerçek zamanlı replikasyon ve performans

  • Litestream saniyede bir kez L0 düzeyi yedekleme gerçekleştirir
    • VFS, S3 yolunu periyodik olarak yoklayarak indeksi kademeli olarak günceller
    • Sonuç olarak neredeyse gerçek zamanlı bir replika (near-realtime replica) oluşturulur
  • Tüm veritabanını stream etmek gerekmeden hemen kullanılabilir
  • Bu yapı sayesinde hızlı başlangıç süresi ve kısa geri yükleme süresi elde edilir

Kullanım alanları ve önemi

  • Litestream, veritabanının tüm durumlarını saniye düzeyinde çözünürlükle yedek olarak saklar
    • DELETE veya UPDATE hatalarında istenen zamana anında geri dönülebilir
  • Nesne depolamadan doğrudan sorgulama yapabilen bu yapı, ephemeral sunucu ortamlarında da hızlı çalışır
  • Karmaşık mekanizmalara ihtiyaç duymadan SQLite’ın temel özelliklerinden yararlanarak basit ama güçlü bir yedekleme ve geri yükleme sistemi sunar
  • Fly.io’nun dahili API’sinde de kullanılıyor ve üretim ortamında da kararlı şekilde işletilebiliyor

Henüz yorum yok.

Henüz yorum yok.