- Litestream VFS एक plugin-शैली का extension है जो SQLite database को object storage (जैसे S3) से सीधे पढ़ने और query करने देता है
- पूरा database डाउनलोड किए बिना remote backup file से तुरंत query और Point-in-Time Recovery (PITR) करना संभव
- अंदरूनी तौर पर LTX format का उपयोग करके बदले हुए page sets को कुशलता से प्रबंधित करता है, और duplicate pages को छोड़ने वाली compaction से recovery speed बेहतर होती है
- SQLite के VFS interface का उपयोग करके केवल read operations को intercept करता है, जबकि write processing मौजूदा Litestream process संभालता है
- सेकंड-स्तरीय backup और index updates के जरिए लगभग real-time replica प्रदान करता है, जिससे cloud environment में तेज query execution संभव होता है
Litestream VFS का अवलोकन
- Litestream VFS SQLite को object storage URL को सीधे data source के रूप में उपयोग करने देता है
- SQLite shell में
.load litestream.so और .open file:///my.db?vfs=litestream कमांड से इसे सक्रिय किया जा सकता है
- इसके बाद S3 में संग्रहित backup files के आधार पर query चलाई जा सकती है
- पूरे database को डाउनलोड किए बिना remote backup से सीधे query चलाना संभव है
- उदाहरण में
SELECT * FROM sandwich_ratings query के जरिए S3 में संग्रहित कुछ data को तुरंत देखा जाता है
Point-in-Time Recovery (PITR) सुविधा
PRAGMA litestream_time = '5 minutes ago'; कमांड से किसी specific time point पर data state को देखना संभव है
- relative time (
5 minutes ago) या absolute time (2000-01-01T00:00:00Z) दिया जा सकता है
- इससे SQL स्तर पर तुरंत Point-in-Time Recovery (PITR) किया जा सकता है
- उदाहरण में गलत
UPDATE चलाने के बाद, 5 मिनट पहले की स्थिति में लौटकर सही data की पुष्टि की जाती है
LTX format और data compaction
- Litestream v0.5 ने LTX (Litestream Transaction eXchange) format को एकीकृत किया
- पहले के version पूरे SQLite pages भेजते थे, लेकिन LTX केवल ordered page sets भेजता है
- LTX की मुख्य विशेषता “compaction” है, जो recovery के समय हर page का सबसे नया version चुनती है
- उदाहरण:
1 2 3 5 3 5 4 5 5 में सबसे दाईं ओर वाले 5, 4, 3, 2, 1 का ही उपयोग किया जाता है
- LTX न केवल पूरे database पर, बल्कि LTX files के sets के बीच भी compaction कर सकता है, जिससे PITR recovery संभव होती है
- LTX file के trailer में हर page का offset index शामिल होता है, इसलिए
- पूरी file डाउनलोड किए बिना S3 Range request से केवल ज़रूरी pages पढ़े जा सकते हैं
VFS implementation का तरीका
- Litestream VFS, SQLite के VFS (Virtual File System) interface का उपयोग करके implement किया गया है
- VFS, SQLite की OS access layer को abstract करने वाली plugin structure है
- Litestream VFS केवल read operation संभालता है, जबकि write मौजूदा Litestream process संभालता है
- जब SQLite page पढ़ता है, VFS requested byte offset की जगह page index आधारित mapping करता है
- index से filename, actual offset, और page size निकालकर S3 API के Range header से वही block डाउनलोड किया जाता है
- LRU cache लागू किया गया है ताकि बार-बार उपयोग होने वाले “hot pages” memory में बने रहें और S3 calls कम हों
Real-time replication और performance
- Litestream हर सेकंड L0 level backup करता है
- VFS समय-समय पर S3 path को poll करके index को incrementally update करता है
- नतीजतन near-realtime replica बनता है
- पूरे database को stream किए बिना भी इसे तुरंत उपयोग किया जा सकता है
- इस architecture की वजह से तेज़ startup speed और कम recovery time मिलता है
उपयोग और महत्व
- Litestream database की हर state का backup second-level resolution पर बनाए रखता है
DELETE या UPDATE की गलती होने पर, इच्छित समय बिंदु पर तुरंत restore किया जा सकता है
- object storage से सीधे query करने वाली यह संरचना ephemeral server environment में भी तेज़ी से काम करती है
- जटिल mechanism के बिना, SQLite की मूल क्षमताओं का उपयोग करके सरल लेकिन शक्तिशाली backup·recovery system प्रदान करती है
- Fly.io की internal API में भी उपयोग हो रहा है, और production environment में भी स्थिर रूप से चलाया जा सकता है
अभी कोई टिप्पणी नहीं है.