Projektet CBS dhe sqld po zhvillojnë variante cloud dhe serverike të SQLite

Zhvilluesit e SQLite po zhvillojnë një modul eksperimental VFS, CBS (Cloud Backed SQLite), që lejon ruajtjen e përmbajtjes së bazës së të dhënave jo në një skedar lokal, por në një ruajtje cloud të jashtme. Për ruajtje përdoret një format i optimizuar në mënyrë të veçantë për ruajtje të jashtme, që lejon ngarkimin e të dhënave nga ruajtja e jashtme në mënyrë dinamike sipas nevojës, pa kopjimin paraprak të të gjithë BD-së në sistemin lokal. Në momentin, ruajtjet cloud që mbështeten përfshijnë Azure Blob Storage dhe Google Cloud Storage. Çdo aplikacion që mbështet punën me SQLite të zakonshëm mund të kalojë në përdorimin e CBS.

Moduli VFS mund të funksionojë në mënyrë të prapambetur dhe aktive. Në mënyrë prapambetëse, në sistem ekzekutohet vazhdimisht një proces prapambetjesh që lejon aksesin në BD-në e jashtme vetëm në mënyrë leximore, por mbështet një përbashkësi të cache-it, të cilin mund ta aksesojnë bashkërisht procese të ndryshme. Në mënyrë aktive lejohet leximi dhe shkrimi, por përdoret vetëm cache-i lokal i procesit aktual. Në çdo moment, vetëm një klient mund të bëjë shkrim, dhe klientët e tjerë nuk do ta shohin ndryshimin e shkruar derisa të kërkojnë qartë atë nga ruajtja cloud. Për të ndarë kërkesa të ndryshme për shkrim aplikohet një sistem bllokimi tipik i SQLite bazuar në log-un WAL.

Zhvilluesit ofrojnë një API të zgjeruar C dhe një ndërfaqe të komandave për të lejuar kryerjen e operacioneve të tilla si krijimi dhe pastrimi i ruajtjes së jashtme, ngarkimi dhe shkarkimi i BD-së në/nga ruajtja e jashtme, krijimi i një kopjeje të BD-së në ruajtjen e jashtme, shikimi i listës së BD-ve në ruajtjen cloud, dhe fshirja e blloqeve të papërdorura nga ruajtja cloud.

Veçmas, zhvilluesit e projektit libSQL (një përçues i zgjeruar i SQLite) kanë njoftuar një version server të SQLite — sqld, që lejon organizimin e funksionimit të një DBMS të zakonshëm, me lidhjen e klientëve që bëhet përmes përdorimit të protokollit PostgreSQL ose HTTP. Për shembull, për lidhjen me sqld mund të përdoren bibliotekat ekzistuese të klientit të krijuara për DBMS PostgreSQL, dhe, përveç të tjerash, ndërfaqja CLI psql. Edhe në serverin sqld mund të aksesoheni nëpërmjet një API bazuar në protokollin HTTP, që lehtëson integrimin me aplikacionet web. Kodi sqld është shkruar në gjuhën Rust dhe shpërndahet nën licencën MIT.

Si fushat e aplikimit sqld përmenden rezervimi, replikimi në sisteme të tjera dhe organizimi i aksesit në DB SQlite në infrastrukturat pa server, ku nuk ka magazinim të përhershëm dhe nuk është e mundur të sigurohet mbajtja e bazës në një skedar lokal. Në sistemet pa server, DB me të cilën punon sqld mund të replikohet nga të tjera. serverësh. Për të siguruar disponueshmëri të lartë dhe qëndresë ndaj dështimeve, mbështetet integrimi me mvSQLite (varianti i shpërndarë i SQLite, që funksionon mbi FoundationDB). Ka një mod për mbajtjen e një kopjeje aktive, e realizuar përmes ruajtjes periodike të snapshots me gjendjen e DB dhe replikimin e ndryshimeve nga WAL-log në një magazinë cloud, e cila është e përputhshme me Amazon S3.

Për aplikacionet 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 përmes sqld. Është e mundur të ngarkohen zgjerime për SQLite. Bibliotekat kliente janë përgatitur për TypeScript, JavaScript, Rust, Go dhe Python. Me DB, e cila është e lidhur me sqld, është e mundur të punoni njëkohësisht me anë të mjeteve standarde të SQLite, pra sqld vepron si një shtresë për të ofruar akses në rrjet në DB, replikim dhe rezervim. 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 # Qasuni në DB duke përdorur mjete PostgreSQL: psql -q postgres://127.0.0.1 # Lidheni lokalisht me DB duke përdorur mjete SQLite: sqlite3 foo.db # Qasuni përmes HTTP: curl -s -d "{\"statements\": [\"SELECT * from databases;\"] }" \ http://127.0.0.1:8000

Në përfundim, mund të përmendet projekti LiteFS, i zhvilluar nga kompania Fly.io. LiteFS është një modul FUSE për organizimin e punës me një DB të përbashkët SQLite në disa host-e. LiteFS replikohet gjendja e DB mes disa sistemeve përmes kapjes së operacioneve të shkruarjes në skedarin me DB, dhe transmetimin e 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

Blini hosting të besueshëm për faqe interneti me mbrojtje nga DDoS, serverë VPS VDS 🔥 Blini hosting të besueshëm për faqe interneti me mbrojtje nga DDoS, serverë VPS VDS | ProHoster