Vývojáři SQLite vyvíjejí experimentální VFS modul CBS (Cloud Backed SQLite), který umožňuje ukládat obsah databáze nikoli v lokálním souboru, ale ve vnějším cloudovém úložišti. Pro ukládání je použit speciálně optimalizovaný formát databáze pro externí úložiště, který umožňuje dynamicky načítat data z externího úložiště podle potřeby, aniž by bylo nutné zkopírovat celou databázi na lokální systém. V současnosti jsou podporována cloudová úložiště Azure Blob Storage a Google Cloud Storage. Jakákoli aplikace, která podporuje běžnou funkcionalitu SQLite, může být převedena na použití CBS.
VFS modul může pracovat v pozadí a v aktivním režimu. V pozadí je v systému neustále spuštěn proces, který umožňuje přístup k externí databázi pouze pro čtení, ale podporuje sdílenou mezipaměť, ke které mohou společně přistupovat různé procesy. V aktivním režimu je povoleno čtení a zápis, ale používá se pouze lokální mezipaměť aktuálního procesu. V každém okamžiku může provádět zápis pouze jeden klient, ostatní klienti neuvidí zapsané změny, dokud je výslovně nepožádají z cloudového úložiště. Pro oddělení různých zápisových požadavků se používá typový systém zámků SQLite založený na WAL logu.
Vývojářům je poskytnuto rozšířené C API a rozhraní příkazového řádku, které umožňuje provádět operace jako je vytváření a čištění externího úložiště, načítání a vysunutí databáze do/z externího úložiště, vytváření kopií databáze v externím úložišti, prohlížení seznamu databází v cloudovém úložišti a odstraňování nepoužívaných bloků z cloudového úložiště.
Samostatně vývojáři projektu libSQL (rozšířený fork SQLite) oznámili serverovou verzi SQLite — sqld, která umožňuje organizaci práce sdílené databázového systému, přičemž připojení klientů probíhá prostřednictvím protokolu PostgreSQL nebo HTTP. Například pro připojení k sqld mohou být použity existující klientské knihovny vytvořené pro databázové systémy PostgreSQL, včetně CLI rozhraní psql. K serveru sqld je možné přistupovat také pomocí API založeného na protokolu HTTP, což usnadňuje integraci s webovými aplikacemi. Kód sqld je napsán v jazyce Rust a je distribuován pod licencí MIT.
Mezi oblasti použití sqld patří zálohování, replikace na jiné systémy a organizace přístupu k databázi SQLite v bezserverových infrastrukturách, kde chybí trvalé úložiště a není možné zajistit vedení databáze v místním souboru. V bezserverových systémech může být databáze, se kterou sqld pracuje, replikována z jiných. servery. Pro zajištění vysoké dostupnosti a odolnosti proti poruchám je podporována integrace s mvSQLite (distribuovaná varianta SQLite, která pracuje na vrcholu FoundationDB). Existuje režim aktivní zálohy, který se realizuje prostřednictvím periodického ukládání snímků stavu databáze a replikace změn z WAL logu do cloudového úložiště kompatibilního s Amazon S3.
Pro aplikace je k dispozici knihovna kompatibilní s SQLite, kterou lze načíst pomocí LD_PRELOAD pro přechod z ukládání dat v místním souboru na práci přes sqld. Je možné načíst rozšíření pro SQLite. Klientské knihovny jsou připraveny pro TypeScript, JavaScript, Rust, Go a Python. S databází, která je připojena k sqld, lze pracovat současně pomocí standardního nástroje SQLite, tj. sqld funguje jako nadstavba pro poskytování síťového přístupu k databázi, replikaci a zálohování. Například: # Spouštíme server pro SQLite databázi foo.db: sqld -d foo.db -p 127.0.0.1:5432 —http-listen-addr=127.0.0.1:8000 # Získání přístupu k databázi pomocí utilit PostgreSQL: psql -q postgres://127.0.0.1 # Lokální připojení k databázi pomocí nástroje SQLite: sqlite3 foo.db # Přístup přes HTTP: curl -s -d "{\"statements\": [\"SELECT * from databases;\"] }" \ http://127.0.0.1:8000
Na závěr lze zmínit projekt LiteFS, který vyvíjí společnost Fly.io. LiteFS je FUSE modul pro organizaci práce s jednou společnou SQLite databází na několika hostech. LiteFS replikace stavu databáze mezi několika systémy zastavením operací zápisu do souboru s databází a přenášením těchto operací na jiné systémy s použitím mechanizmu transakcí a uchováním transakcí v samostatném souboru ve formátu LTX. Kód LiteFS je napsán v jazyce Go a je distribuován pod licencí Apache 2.0.
Zdroj: opennet.ru
