بن جانسون، نویسنده ذخیرهسازی BoltDB NoSQL، پروژه Litestream را ارائه کرد که افزونهای را برای سازماندهی تکرار دادهها در SQLite ارائه میدهد. Litestream به هیچ تغییری در SQLite نیاز ندارد و می تواند با هر برنامه ای که از این کتابخانه استفاده می کند کار کند. همانندسازی توسط یک فرآیند پسزمینه اجرا شده جداگانه انجام میشود که تغییرات فایلها را از پایگاه داده نظارت میکند و آنها را به فایل دیگری یا به حافظه خارجی منتقل میکند. کد پروژه در Go نوشته شده و تحت مجوز Apache 2.0 توزیع شده است.
تمام تعاملات با پایگاه داده از طریق API استاندارد SQLite انجام می شود. Litestream مستقیماً در عملکرد دخالت نمی کند، عملکرد را تحت تأثیر قرار نمی دهد و نمی تواند به محتوای پایگاه داده آسیب برساند، که Litestream را از راه حل هایی مانند Rqlite و Dqlite متمایز می کند. تغییرات با فعال کردن WAL log ("Write-Ahead Log") در SQLite ردیابی می شوند. برای صرفه جویی در فضای ذخیره سازی، سیستم به صورت دوره ای جریان تغییرات را در برش های پایگاه داده (عکس های فوری) جمع می کند، که در بالای آن تغییرات دیگر شروع به جمع شدن می کنند. زمان ایجاد برش ها در تنظیمات نشان داده شده است؛ به عنوان مثال، می توانید یک بار در روز یا یک بار در ساعت ایجاد کنید.
زمینه های اصلی کاربرد Litestream شامل سازماندهی پشتیبان گیری ایمن و توزیع بار خواندن در چندین سرور است. از انتقال جریان تغییر به Amazon S3، Azure Blob Storage، Backblaze B2، DigitalOcean Spaces، Scaleway Object Storage، Google Cloud Storage، Linode Object Storage یا هر میزبان خارجی که از پروتکل SFTP پشتیبانی می کند، پشتیبانی می کند. اگر محتویات پایگاه داده اصلی آسیب ببیند، نسخه پشتیبان را می توان از حالتی که مربوط به یک نقطه زمانی مشخص، یک تغییر خاص، آخرین تغییر یا یک برش مشخص شده است، بازیابی کرد.
منبع: opennet.ru