SQLite voeg WASM-ondersteuning by vir die gebruik van die DBMS in 'n webblaaier

SQLite-ontwikkelaars ontwikkel 'n projek om die vermoë te implementeer om die biblioteek saam te stel in WebAssembly-tussenkode, wat in staat is om in 'n webblaaier te loop en geskik is om werk met die databasis te organiseer vanaf webtoepassings in JavaScript. Kode om WebAssembly te ondersteun is by die hoofprojekbewaarplek gevoeg. Anders as die WebSQL API, wat op SQLite gebaseer is, is WASM SQLite heeltemal geïsoleer van die blaaier en beïnvloed dit nie die sekuriteit daarvan nie (Google het besluit om ondersteuning vir WebSQL in Chrome af te skei nadat verskeie kwesbaarhede in SQLite deur WebSQL uitgebuit kon word om die blaaier aan te val) .

Die doel van die projek is om 'n werkende JavaScript-raamwerk te verskaf wat identies is in funksionaliteit aan die SQLite API. Webontwikkelaars word voorsien van 'n hoëvlak objekgeoriënteerde koppelvlak om met data in die styl van sql.js of Node.js te werk, 'n binding oor die laevlak C API en 'n API gebaseer op die Web Worker-meganisme, wat dit moontlik maak jy om asynchrone hanteerders te skep wat in aparte drade uitgevoer word. Om die ingewikkeldhede van die organisering van werk met strome bo-op die Web Worker-gebaseerde API weg te steek, word 'n weergawe van die programkoppelvlak gebaseer op die Promise-meganisme ook ontwikkel.

Die data wat webtoepassings in die WASM-weergawe van SQLite stoor, kan binne die huidige sessie gelokaliseer word (verlore na bladsy herlaai) of op die kliëntkant gestoor word (tussen sessies gestoor). Vir permanente berging is backends voorberei vir die plasing van data in die plaaslike lêerstelsel met OPFS (Origin-Private FileSystem, 'n uitbreiding van die File System Access API, tans slegs beskikbaar in blaaiers gebaseer op WebKit en Chromium) en in plaaslike blaaierberging gebaseer op die window.localStorage API en window.sessionStorage. Wanneer localStorage/sessionStorage gebruik word, word die data in die ooreenstemmende winkels in 'n sleutel/waarde-formaat weerspieël, en wanneer OPFS gebruik word, is daar twee opsies: simuleer 'n virtuele FS met behulp van WASMFS en 'n aparte implementering van sqlite3_vfs, wat 'n SQLite VFS-laag gebaseer bied op OPFS.

Om SQLite in 'n WASM-aansig in te bou, word die Emscripten-samesteller gebruik (dit is genoeg om die ext/wasm-uitbreiding te bou: "./configure —enable-all; make sqlite3.c; cd ext/wasm; make"). Die uitvoer is sqlite3.js- en sqlite3.wasm-lêers, wat by jou JavaScript-projek ingesluit kan word (HTML- en JavaScript-voorbeeld).

Bron: opennet.ru

Voeg 'n opmerking