Zhvilluesit e SQLite po zhvillojnë një modul eksperimental VFS CBS (Cloud Backed SQLite), i cili lejon ruajtjen e përmbajtjes së bazës së të dhënave jo në një skedar lokal, por në një ruajtje të jashtme në cloud. Për ruajtjen përdoret një format i optimizuar veçmas për ruajtje të jashtme, i cili lejon ngarkimin dinamik të të dhënave nga ruajtja e jashtme sipas nevojës, pa e kopjuar paraprakisht të gjithë DB-në në sistemin lokal. Tani për tani, mbështetet ruajtja në cloud si Azure Blob Storage dhe Google Cloud Storage. Çdo aplikacion që mbështet punën me SQLite-në e zakonshme mund të kalojë në përdorimin e CBS.
Moduli VFS mund të funksionojë në modalitetin e prapaskenës dhe në modalitetin aktiv. Në modalitetin e prapaskenës, një proces prapaskenë ekzekutohet në mënyrë të vazhdueshme në sistem, duke lejuar aksesin në një DB të jashtme vetëm në modalitetin e leximit, por duke mbështetur një cache të përbashkët që mund të përdoret nga procese të ndryshme. Në modalitetin aktiv, lejohet leximi dhe shkruajta, por përdoret vetëm cache lokal i procesit aktual. Në çdo moment vetëm një klient mund të realizojë shkruajta, dhe klientët e tjerë nuk do të shohin ndryshimet e shkruara deri sa t'i kërkojnë ato në mënyrë eksplicite nga ruajtja cloud. Për ndarjen e kërkesave të ndryshme për shkruajta, aplikohet një sistem standard bllokimi SQLite bazuar në log-un WAL.
Zhvilluesve u ofrohet një API i zgjeruar C dhe një ndërfaqe e komandave që mundëson kryerjen e operacioneve të tilla si krijimi dhe pastrimi i ruajtjes së jashtme, ngarkimi dhe shkarkimi i DB-së në/nga ruajtjen e jashtme, krijimi i një kopjeje të DB-së në ruajtjen e jashtme, shikimi i listës së DB-ve në ruajtjen cloud, dhe fshirja e bllokimeve të pazbatuara nga ruajtja cloud.
Zhvillohet veçmas nga zhvilluesit e projektit libSQL (një fork i avancuar i SQLite), është shpallur një version serveri i SQLite — sqld, i cili lejon organizimin e punës së një DBMS të ndarë, ku lidhja e klientëve bëhet përmes përdorimit të protokollit PostgreSQL ose HTTP. Për shembuj, për t'u lidhur me sqld mund të përdoren bibliotekat ekzistuese të klientëve të krijuara për DBMS PostgreSQL, dhe, ndër të tjera, ndërfaqja CLI psql. Serveri sqld gjithashtu mund të arrihet duke përdorur API-në që bazohet në protokollin HTTP, e cila thjeshton integrimin me aplikacionet web. Kodi i sqld është shkruar në gjuhën Rust dhe shpërndahet nën licencën MIT.
Si fusha përdorimi të sqld përmenden kopjimi, replikimi në sisteme të tjera dhe organizimi i aksesit në DB SQlite në infrastrukturat pa serverë, ku nuk ka një depo të qëndrueshme dhe nuk është e mundur të sigurohet mbajtja e bazës në një skedar lokal. Në sistemet pa serverë, DB që punon me sqld mund të replikojë nga të tjerë servera. Për të siguruar disponueshmëri të lartë dhe qëndrueshmëri ndaj dështimeve, mbështetet integrimi me mvSQLite (varianti i shpërndarë i SQLite që punon mbi FoundationDB). Ekziston një mod të mbështetjes së kopjes rezervë aktive, e implementuar përmes ruajtjes periodike të kopjeve të gjendjes së DB-së dhe replika e ndryshimeve nga WAL-logu në një depo të përputhshme me Amazon S3.
Për aplikacioneve ofrohet një bibliotekë e përputhshme me SQLite, e cila mund të ngarkohet përmes LD_PRELOAD për kalimin nga ruajtja e të dhënave në një skedar lokal në punën me sqld. Ngarkimi i zgjerimeve për SQLite është i mundur. Bibliotekat klienti janë përgatitur për TypeScript, JavaScript, Rust, Go dhe Python. Me DB-në e lidhur me sqld, mund të punohet njëkohësisht me mjetet standarde të SQLite, pra, sqld vepron si një shtresë për të ofruar qasje në rrjet në DB, replikim dhe kopjim rezervë. Për shembull: # Nisni serverin për SQLite DB foo.db: sqld -d foo.db -p 127.0.0.1:5432 —http-listen-addr=127.0.0.1:8000 # Bashkohuni me DB-në përmes mjeteve PostgreSQL: psql -q postgres://127.0.0.1 # Lidheni lokalisht me DB-në përmes mjeteve SQLite: sqlite3 foo.db # Bashkohuni përmes HTTP: curl -s -d "{\"statements\": [\"SELECT * from databases;\"]} " \ http://127.0.0.1:8000
Në përfundim, mund të përmendim projektin LiteFS, të zhvilluar nga kompania Fly.io. LiteFS është një modul FUSE për organizimin e punës me një bazë të dhënash SQLite të përbashkët në disa hoste. LiteFS replikon gjendjen e bazës së të dhënave midis disa sistemeve përmes kapjes së operacioneve të shkrimit në skedarin e bazës së të dhënave dhe translacionit të këtyre operacioneve në sisteme të tjera, duke përdorur një mekanizëm të ngjashëm me transaksionet dhe ruajtjen e transaksioneve në një skedar të veçantë në formatin LTX. Kodi i LiteFS është shkruar në gjuhën Go dhe shpërndahet nën licencën Apache 2.0.
Burimi: opennet.ru
