- 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.