U shtua mbështetje SQLite WASM për të përdorur DBMS në një shfletues ueb

SQLite

është një sistem i menaxhimit të bazës së të dhënave relacionale në përputhje me ACID, i përfshirë në një bibliotekë relativisht të vogël të shkruar në C

L Zhvilluesit e SQLite po zhvillojnë një projekt për ta zbatuar aftësia për të përpiluar bibliotekën në a kod i ndërmjetëm WebAssembly i cili mund të ekzekutohet në një shfletues ueb dhe është i përshtatshëm për organizimin e punës me bazën e të dhënave nga aplikacionet ueb në gjuhën JavaScript.

Objektivi të projektit është të sigurojë një lidhje funksionale JavaScript që është identik në funksionalitet me SQLite API. Zhvilluesit e uebit pajisen me një ndërfaqe të nivelit të lartë të orientuar nga objekti për të punuar me të dhëna në stilin e sql.js ose Node.js, duke mbështjellë një API të nivelit të ulët C dhe një API të bazuar në mekanizmin Web Worker që lejon krijimin e asinkronëve kontrollorët.që funksionojnë në fije të veçanta.

Për të fshehur kompleksitetin e lidhjes së filetimit mbi API-në e bazuar në Web Worker, Një variant i ndërfaqen e programimit bazuar në mekanizmin Premtimi

Të dhënat që aplikacionet në ueb ruajnë në versionin WASM të SQLite mund të vendosen brenda sesionit aktual (humben pas ringarkimit të faqes) ose të vazhdojnë në anën e klientit (të vazhdojnë në sesione).

Për ruajtje të përhershme, backend-et janë përgatitur për të vendosur të dhëna në një sistem skedari lokal duke përdorur OPFS (Origin-Private FileSystem, zgjerim në API-në e qasjes në sistemin e skedarëve, aktualisht disponohet vetëm në shfletuesit WebKit dhe Chromium) dhe hapësirën ruajtëse lokale të shfletuesit bazuar në API-të window.localStorage dhe window.sessionStorage.

Kur përdorni localStorage/sessionStorage, të dhënat hartohen në ruajtjen e duhur të çelësit/vlerës, ndërsa kur përdorni OPFS, ekzistojnë dy opsione: simulimi i një FS virtual duke përdorur WASMFS dhe një zbatim i veçantë sqlite3_vfs që ofron një shtresë VFS të bazuar në SQLite. në OPFS .

Përpiluesi Emscripten përdoret për të ndërtuar SQLite në një përfaqësim WASM. Rezultati është skedarët sqlite3.js dhe sqlite3.wasm që mund t'i përfshini në projektin tuaj JavaScript (mostra HTML dhe JavaScript).

të objektivave specifike të këtij projekti përmenden:

Me përjashtim të rasteve kur shënohet në jo-objektivat, siguroni një mbështjellës pak a shumë të plotë të veçorive për API-në sqlite3 C, në masën që lejon barazia e veçorive të WASM me C. Në fakt, siguroni të paktën API-të e mëposhtme .

  • Lidhni një API të nivelit të ulët sqlite3 që është sa më afër që të jetë e mundur me vendasin për sa i përket përdorimit.
  • Një API OO e nivelit më të lartë, më shumë si zbatimet e stilit sql.js dhe node.js.
  • Një API e bazuar në punonjës që komunikon me API-të e mësipërme përmes mesazheve të punonjësve. Kjo është krijuar për t'u përdorur në fillin kryesor, me API të nivelit më të ulët të instaluar në një fillesë pune dhe për të komunikuar me ta nëpërmjet mesazheve të punonjësve.
  • Një variant i bazuar në premtime të API-së së Punëtorëve që fsheh plotësisht aspektet e komunikimit ndërmjet temave të përdoruesit.
  • Për aq sa është e mundur, mbështetni ruajtjen e vazhdueshme nga ana e klientit duke përdorur API-të e disponueshme JS. Në kohën e këtij shkrimi, ai përfshin sistemin e skedarëve privat burimor (OPFS) dhe ruajtjen (shumë të kufizuar) nëpërmjet dritareve.localStorage dhe .window.sessionStorage

Sa për objektiva jo specifike:

  • Meqenëse WASM është një teknologji e përqendruar në ueb dhe UTF-8 është mbreti i kodimeve në atë fushë, nuk ka plane aktuale për të mbështetur API-të sqlite3 të lidhura me UTF16.
  • Ndërsa mbështetja për kohëzgjatjet WASM jashtë shfletuesit është e përhapur, ky projekt aktualisht (në fund të vitit 2022) është i fokusuar vetëm në objektivat e shfletuesit. Megjithëse detajet e zbatimit të lidhura me ueb-in kanë përparësi dhe komponentët JavaScript të API-së fokusohen në mënyrë specifike te klientët e shfletuesit, moduli WASM i nivelit më të ulët "duhet" të funksionojë në mjedise WASM jo-web.
  • Pajtueshmëria me platformat e vjetra ose të veçanta. WASM është krijuar për një ueb modern dhe kërkon platforma moderne. Në mënyrë të ngjashme, opsionet e vjetëruara të bibliotekës sqlite3 do të hiqen tërësisht nga ndërfaqja WASM.

Kodi për mbështetjen e WebAssembly është shtuar në depon kryesore të projektit. Ndryshe nga WebSQL API, i cili bazohet në SQLite, WASM SQLite është plotësisht i izoluar nga shfletuesi dhe nuk ndikon në sigurinë e tij (Google vendosi të heqë mbështetjen për WebSQL në Chrome pas disa dobësive në SQLite që mund të shfrytëzoheshin përmes WebSQL për të sulmuar Navigatorin ).

më në fund nëse jeni të interesuar për të mësuar më shumë rreth tij, ju mund të kontrolloni detajet Në lidhjen vijuese.


Lini komentin tuaj

Adresa juaj e emailit nuk do të publikohet. Fusha e kërkuar janë shënuar me *

*

*

  1. Përgjegjës për të dhënat: AB Internet Networks 2008 SL
  2. Qëllimi i të dhënave: Kontrolloni SPAM, menaxhimin e komenteve.
  3. Legjitimimi: Pëlqimi juaj
  4. Komunikimi i të dhënave: Të dhënat nuk do t'u komunikohen palëve të treta përveç me detyrim ligjor.
  5. Ruajtja e të dhënave: Baza e të dhënave e organizuar nga Occentus Networks (BE)
  6. Të drejtat: Në çdo kohë mund të kufizoni, rikuperoni dhe fshini informacionin tuaj.