12 poin oleh GN⁺ 2025-12-13 | Belum ada komentar. | Bagikan ke WhatsApp
  • Litestream VFS adalah ekstensi berbentuk plugin yang memungkinkan SQLite membaca dan menjalankan kueri langsung dari object storage (seperti S3)
  • Memungkinkan kueri instan dari file cadangan jarak jauh dan pemulihan titik waktu (Point-in-Time Recovery, PITR) tanpa perlu mengunduh seluruh database
  • Secara internal menggunakan format LTX untuk mengelola kumpulan halaman yang berubah secara efisien, serta meningkatkan kecepatan pemulihan dengan compaction yang melewati halaman duplikat
  • Memanfaatkan antarmuka VFS milik SQLite untuk hanya mencegat operasi baca, sementara penulisan tetap ditangani oleh proses Litestream yang sudah ada
  • Menyediakan replika yang nyaris real-time melalui backup per detik dan pembaruan indeks, sehingga mendukung eksekusi kueri cepat di lingkungan cloud

Gambaran Umum Litestream VFS

  • Litestream VFS adalah fitur yang memungkinkan SQLite menggunakan URL object storage langsung sebagai sumber data
    • Dapat diaktifkan di shell SQLite dengan perintah .load litestream.so dan .open file:///my.db?vfs=litestream
    • Setelah itu, kueri dapat dijalankan berdasarkan file cadangan yang disimpan di S3
  • Memungkinkan menjalankan kueri langsung dari backup jarak jauh tanpa mengunduh seluruh database
    • Dalam contoh, kueri SELECT * FROM sandwich_ratings langsung mengambil sebagian data yang tersimpan di S3

Fitur Point-in-Time Recovery (PITR)

  • Dengan perintah PRAGMA litestream_time = '5 minutes ago';, pengguna dapat melihat status data pada titik waktu tertentu
    • Bisa menggunakan waktu relatif (5 minutes ago) atau waktu absolut (2000-01-01T00:00:00Z)
  • Ini memungkinkan Point-in-Time Recovery instan di level SQL
    • Dalam contoh, setelah UPDATE yang salah dijalankan, data dikembalikan ke kondisi 5 menit sebelumnya untuk memverifikasi keadaan normal

Format LTX dan kompresi data

  • Litestream v0.5 mengintegrasikan format LTX (Litestream Transaction eXchange)
    • Versi sebelumnya mengirim seluruh halaman SQLite, tetapi LTX hanya mengirim kumpulan halaman berurutan yang diperlukan
  • Inti dari LTX adalah fitur “compaction”, yang memilih hanya versi halaman terbaru saat pemulihan
    • Contoh: dari 1 2 3 5 3 5 4 5 5, yang dipakai hanya 5, 4, 3, 2, 1 paling kanan
  • LTX dapat dikompaksi bukan hanya untuk seluruh database tetapi juga antar kumpulan file LTX, sehingga pemulihan PITR menjadi mungkin
  • Trailer pada file LTX berisi indeks offset tiap halaman, sehingga
    • halaman yang dibutuhkan saja bisa dibaca melalui permintaan S3 Range tanpa mengunduh seluruh file

Cara implementasi VFS

  • Litestream VFS diimplementasikan menggunakan antarmuka VFS (Virtual File System) milik SQLite
    • VFS adalah struktur plugin yang mengabstraksikan lapisan akses OS pada SQLite
  • Litestream VFS hanya menangani operasi Read, sedangkan Write tetap ditangani oleh proses Litestream yang sudah ada
  • Saat SQLite membaca halaman, VFS melakukan pemetaan berbasis indeks halaman alih-alih menggunakan byte offset yang diminta
    • Dari indeks, sistem mencari nama file, offset aktual, dan ukuran halaman, lalu hanya mengunduh blok yang diperlukan melalui header Range pada API S3
  • Menerapkan cache LRU untuk menyimpan “hot page” yang sering diakses di memori, sehingga jumlah panggilan ke S3 dapat diminimalkan

Replikasi real-time dan performa

  • Litestream melakukan backup level L0 sekali per detik
    • VFS secara berkala melakukan polling ke jalur S3 untuk memperbarui indeks secara bertahap
    • Hasilnya adalah replika nyaris real-time (near-realtime replica)
  • Dapat langsung digunakan tanpa perlu melakukan streaming seluruh database
  • Berkat struktur ini, sistem memperoleh startup yang cepat dan waktu pemulihan yang singkat

Pemanfaatan dan makna

  • Litestream menyimpan backup semua status database dengan resolusi per detik
    • Saat terjadi kesalahan DELETE atau UPDATE, data bisa langsung dipulihkan ke titik waktu yang diinginkan
  • Struktur yang memungkinkan kueri langsung dari object storage membuatnya cepat bahkan di lingkungan server ephemeral
  • Tanpa mekanisme yang rumit, sistem ini memanfaatkan fitur dasar SQLite untuk menyediakan skema backup dan pemulihan yang sederhana namun kuat
  • Sudah digunakan dalam API internal Fly.io, dan dapat dioperasikan secara stabil di lingkungan produksi

Belum ada komentar.

Belum ada komentar.