Kwengezwe ukwesekwa kwe-SQLite WASM ukusebenzisa i-DBMS kusiphequluli sewebhu

SQLite

iwuhlelo lokuphathwa kolwazi olugciniwe oluhambisana ne-ACID, oluqukethwe kumtapo wolwazi omncane obhalwe ngo-C

I-Los Abathuthukisi be-SQLite bakha iphrojekthi abazoyiqalisa ikhono lokuhlanganisa umtapo wolwazi ube a ikhodi ye-WebAssembly ephakathi engasetshenziswa kusiphequluli sewebhu futhi ifanele ukuhlela umsebenzi ngesizindalwazi kusuka kuzinhlelo zokusebenza zewebhu ngolimi lwe-JavaScript.

Inhloso wephrojekthi ukuhlinzeka ngesixhumanisi esisebenzayo se-JavaScript lokho kuyafana ekusebenzeni kwe-SQLite API. Abathuthukisi bewebhu banikezwa isixhumi esibonakalayo esigxile entweni okusezingeni eliphezulu ukuze basebenze nedatha ngesitayela se-sql.js noma i-Node.js, esonga i-C API yezinga eliphansi kanye ne-API esekelwe kumshini we-Web Worker evumela ukudala okungavumelaniyo. asebenzisa imicu ehlukene.

Ukufihla ubunzima bokuthungatha nge-Web Worker-based API, Okuhlukile kwe i-interface yokuhlela esekelwe kumshini Thembisa.

Idatha egcinwa izinhlelo zokusebenza zewebhu kunguqulo ye-WASM ye-SQLite ingatholakala phakathi nesikhathi samanje (ilahlekile ngemva kokulayishwa kabusha kwekhasi) noma iqhubeke ohlangothini lweklayenti (iqhubeka kuzo zonke izikhathi).

Ukuze uthole isitoreji unomphela, okungemuva kulungiselelwe ukubeka idatha kusistimu yefayela yendawo usebenzisa i-OPFS (Origin-Private FileSystem, isandiso ku-File System Access API, okwamanje etholakala kuphela ku-WebKit neziphequluli ezisekelwe ku-Chromium) kanye nesitoreji sesiphequluli sendawo esisekelwe ku-window.localStorage kanye newindi.sessionStorage APIs.

Lapho usebenzisa i-LocalStorage/sessionStorage, idatha ifakwe kumephu ezitolo ezifanele zikakhiye/inani, kanti uma usebenzisa i-OPFS, kukhona izinketho ezimbili: ukulingisa i-FS ebonakalayo usebenzisa i-WASMFS, kanye nokusebenzisa okuhlukile kwe-sqlite3_vfs okunikeza isendlalelo se-VFS esisekelwe ku-SQLite. ku-OPFS. .

I-Emscripten compiler isetshenziselwa ukwakha i-SQLite esethulweni se-WASM. Umphumela uthi sqlite3.js kanye namafayela e-sqlite3.wasm ongawafaka kuphrojekthi yakho ye-JavaScript (isampula ye-HTML ne-JavaScript).

zezinjongo ezithile zale phrojekthi zibaliwe:

Ngaphandle kwalapho kuphawulwe khona kokungekona okuqondiwe, hlinzeka ngokugoqa okuphelele noma okuncane kwezici ze-sqlite3 C API, ngokwezinga ukulinganisa kwesici se-WASM no-C kuvumela. Eqinisweni, hlinzeka okungenani ngama-API alandelayo .

  • Hlanganisa izinga eliphansi le-sqlite3 API eliseduze nelomdabu ngangokunokwenzeka mayelana nokusetshenziswa.
  • Izinga eliphakeme le-OO API, efana nokusetshenziswa kwesitayela se-sql.js ne-node.js.
  • I-API esekwe kubasebenzi exhumana nama-API angenhla ngemilayezo yabasebenzi. Lokhu kuklanyelwe ukusetshenziswa kuchungechunge oluyinhloko, nama-API asezingeni eliphansi afakwe kuchungechunge lwabasebenzi, futhi uxhumane nabo ngemilayezo yabasebenzi.
  • Okuhlukile okusekelwe kusithembiso se-Worker API efihla ngokuphelele izici zokuxhumana ze-inter-thread zomsebenzisi.
  • Ngokwezinga ongakwazi ngalo, sekela isitoreji esiqhubekayo sohlangothi lweklayenti usebenzisa ama-JS API atholakalayo. Ngesikhathi sokubhala lokhu, lokho kuhlanganisa i-Source Private File System (OPFS) kanye (nomkhawulo kakhulu) wesitoreji ngewindi.localStorage kanye .window.sessionStorage backends

Ngokuqondene ne izinjongo ezingaqondile:

  • Njengoba i-WASM iwubuchwepheshe be-web-centric futhi i-UTF-8 iyinkosi yombhalo wekhodi kulowo mbuso, azikho izinhlelo zamanje zokusekela i-UTF3-sqlite16 APIs.
  • Nakuba ukusekelwa kwezikhathi zokusebenza ze-WASM esingaphandle kwesiphequluli kusandile, le phrojekthi okwamanje (ngasekupheleni kuka-2022) igxile ekuhlosweni kwesiphequluli kuphela. Nakuba imininingwane yokusetshenziswa ehlobene newebhu iza kuqala, futhi izingxenye ze-JavaScript ze-API zigxila ngokukhethekile kumakhasimende esiphequluli, imojuli ye-WASM yezinga eliphansi "kufanele" isebenze ezindaweni ezingezona zewebhu ze-WASM.
  • Ukuhambisana namapulatifomu amadala noma ama-niche. I-WASM yakhelwe iwebhu yesimanjemanje futhi idinga izinkundla zesimanje. Ngokufanayo, izinketho zelabhulali ye-sqlite3 eyehlisiwe zizosuswa ku-WASM interface ngokuphelele.

Ikhodi yosekelo lwe-WebAssembly yengezwe endaweni yokugcina enkulu yephrojekthi. Ngokungafani ne-WebSQL API, esekelwe ku-SQLite, i-WASM SQLite ihlukaniswe ngokuphelele nesiphequluli futhi akuthinti ukuphepha kwaso (i-Google inqume ukuyeka ukusekelwa kwe-WebSQL ku-Chrome ngemva kokulimala okuningana ku-SQLite okungase kusetshenziswe nge-WebSQL ukuze kuhlaselwe I-Navigator. ).

ekugcineni uma ukhona unentshisekelo yokufunda okwengeziwe ngayo, ungabheka imininingwane Kulesi sixhumanisi esilandelayo.


Shiya umbono wakho

Ikheli lakho le ngeke ishicilelwe. Ezidingekayo ibhalwe nge *

*

*

  1. Unomthwalo wemfanelo ngedatha: AB Internet Networks 2008 SL
  2. Inhloso yedatha: Lawula Ugaxekile, ukuphathwa kwamazwana.
  3. Ukusemthethweni: Imvume yakho
  4. Ukuxhumana kwemininingwane: Imininingwane ngeke idluliselwe kubantu besithathu ngaphandle kwesibopho esisemthethweni.
  5. Isitoreji sedatha: Idatabase ebanjwe yi-Occentus Networks (EU)
  6. Amalungelo: Nganoma yisiphi isikhathi ungakhawulela, uthole futhi ususe imininingwane yakho.