Utvecklarna av SQLite utvecklar en experimentell VFS-modul CBS (Cloud Backed SQLite) som möjliggör lagring av databasens innehÄll inte i en lokal fil, utan i en extern molnlagring. För lagring anvÀnds ett speciellt optimerat format för extern lagring som tillÄter att data laddas frÄn extern lagring dynamiskt efter behov, utan att först kopiera hela databasen till det lokala systemet. För molnlagring stöds för nÀrvarande Azure Blob Storage och Google Cloud Storage. Alla applikationer som stöder vanlig SQLite kan övergÄ till att anvÀnda CBS.
VFS-modulen kan arbeta i bakgrunds- och aktivt lÀge. I bakgrundslÀget körs en bakgrundsprocess kontinuerligt i systemet, vilket gör det möjligt att komma Ät den externa databasen endast i lÀslÀge och stödja en gemensam cache som olika processer kan anvÀnda. I aktivt lÀge tillÄts bÄde lÀsning och skrivning, men endast den lokala cachen för den aktuella processen anvÀnds. Vid varje given tidpunkt kan endast en klient skriva, och andra klienter ser inte de skrivna Àndringarna förrÀn de uttryckligen begÀrs frÄn molnlagringen. För att separera olika skrivförfrÄgningar anvÀnds SQLite:s typiska lÄsesystem baserat pÄ WAL-logg.
Utvecklarna ges ett utökat C API och kommandoradsgrÀnssnitt som möjliggör operationer som att skapa och rensa extern lagring, ladda och avlasta databasen till/frÄn extern lagring, skapa en kopia av databasen pÄ extern lagring, visa listan över databaser i molnlagring, ta bort oanvÀnda block frÄn molnlagringen.
Separat har utvecklarna av projektet libSQL (en utökad fork av SQLite) tillkĂ€nnagett en serverversion av SQLite â sqld, som möjliggör att organisera arbetet för en gemensamt anvĂ€nd databashanteringssystem, dĂ€r klientanslutningar görs via PostgreSQL-protokollet eller HTTP. Till exempel kan befintliga klientbibliotek som skapats för databashanteringssystemet PostgreSQL anvĂ€ndas för att ansluta till sqld, bland annat kommandoradsgrĂ€nssnittet psql. Servern sqld kan ocksĂ„ nĂ„s via ett API baserat pĂ„ HTTP-protokollet, vilket underlĂ€ttar integrationen med webbapplikationer. Koden för sqld Ă€r skriven i Rust och distribueras under MIT-licensen.
AnvÀndningsomrÄdena för sqld inkluderar sÀkerhetskopiering, replikering till andra system och organisering av Ätkomst till databasen SQlite i serverlösa infrastrukturer dÀr det inte finns nÄgot permanent lagringsutrymme och dÀr det Àr omöjligt att upprÀtthÄlla databasen i en lokal fil. I serverlösa system kan databasen som sqld arbetar med replikeras frÄn andra. servrar. För att sÀkerstÀlla hög tillgÀnglighet och motstÄndskraft mot fel stöds integration med mvSQLite (en distribuerad variant av SQLite som körs ovanpÄ FoundationDB). Det finns ett lÀge för att upprÀtthÄlla en aktiv sÀkerhetskopia, implementerat genom periodisk sparande av ögonblicksbilder av databasens tillstÄnd och replikering av Àndringar frÄn WAL-loggen till en molnlagring som Àr kompatibel med Amazon S3.
För applikationer finns en SQLite-kompatibel bibliotek som kan laddas via LD_PRELOAD för att gĂ„ frĂ„n att lagra data i en lokal fil till att arbeta via sqld. Det Ă€r möjligt att ladda tillĂ€gg till SQLite. Klientbiblioteken Ă€r förberedda för TypeScript, JavaScript, Rust, Go och Python. Med databasen kopplad till sqld kan man samtidigt arbeta med standardverktygen för SQLite, dvs. sqld fungerar som ett lager för att tillhandahĂ„lla nĂ€tverksĂ„tkomst till databasen, replikering och sĂ€kerhetskopiering. Till exempel: # Starta servern för SQLite-databasen foo.db: sqld -d foo.db -p 127.0.0.1:5432 âhttp-listen-addr=127.0.0.1:8000 # Anslut till databasen med PostgreSQL-verktyg: psql -q postgres://127.0.0.1 # Anslut lokalt till databasen med SQLite-verktyg: sqlite3 foo.db # Anslut via HTTP: curl -s -d "{\"statements\": [\"SELECT * from databases;\"] }" \\ http://127.0.0.1:8000
Avslutningsvis kan projektet LiteFS nÀmnas, vilket utvecklas av Fly.io. LiteFS Àr en FUSE-modul för att organisera arbete med en gemensam SQLite-databas pÄ flera vÀrdar. LiteFS replikar databastillstÄndet mellan flera system genom att fÄnga skrivoperationer till filen med databasen och översÀnda dessa operationer till andra system med liknande transaktionsmekanismer och spara transaktionerna i en separat fil i LTX-format. Koden för LiteFS Àr skriven i Go och distribueras under Apache 2.0-licensen.
KĂ€lla: opennet.ru
