Dodana podpora za SQLite WASM za uporabo DBMS v spletnem brskalniku

SQLite

je ACID-združljiv sistem za upravljanje relacijskih baz podatkov, vsebovan v relativno majhni knjižnici, napisani v C

P Razvijalci SQLite razvijajo projekt za izvedbo zmožnost prevajanja knjižnice v a vmesna koda WebAssembly ki se izvaja v spletnem brskalniku in je primeren za organizacijo dela z bazo iz spletnih aplikacij v jeziku JavaScript.

Cilj projekta je zagotoviti funkcionalno povezavo JavaScript ki je po funkcionalnosti enak API-ju SQLite. Spletnim razvijalcem je na voljo visokonivojski objektno usmerjen vmesnik za delo s podatki v slogu sql.js ali Node.js, ki ovija nizkonivojski C API in API, ki temelji na mehanizmu Web Worker, ki omogoča ustvarjanje asinhronih krmilniki, ki tečejo v ločenih nitih.

Če želite skriti zapletenost niti prek API-ja, ki temelji na spletnem delavcu, Različica programski vmesnik, ki temelji na mehanizmu Obljubi.

Podatki, ki jih spletne aplikacije shranjujejo v različici SQLite WASM, se lahko nahajajo znotraj trenutne seje (izgubijo se po ponovnem nalaganju strani) ali pa se ohranijo na strani odjemalca (obstanejo med sejami).

Za trajno shranjevanje so bila pripravljena zaledja za shranjevanje podatkov v lokalni datotečni sistem z uporabo OPFS (Origin-Private FileSystem, razširitev API-ja za dostop do datotečnega sistema, trenutno na voljo samo v brskalnikih WebKit in Chromium) in lokalnega pomnilnika brskalnika, ki temelji na API-jih window.localStorage in window.sessionStorage.

Pri uporabi localStorage/sessionStorage se podatki preslikajo v ustrezne shrambe ključev/vrednosti, medtem ko pri uporabi OPFS obstajata dve možnosti: simulacija virtualnega FS z uporabo WASMFS in ločena implementacija sqlite3_vfs, ki ponuja plast VFS na osnovi SQLite. .

Prevajalnik Emscripten se uporablja za izdelavo SQLite v predstavitvi WASM. Rezultat sta datoteki sqlite3.js in sqlite3.wasm, ki ju lahko vključite v svoj projekt JavaScript (vzorec HTML in JavaScript).

specifičnih ciljev tega projekta so omenjeni:

Razen kjer je navedeno v neciljih, zagotovite bolj ali manj popoln ovoj funkcij za sqlite3 C API, v obsegu, ki ga omogoča pariteta funkcij WASM s C. Pravzaprav zagotovite vsaj naslednje API-je.

  • Povežite nizko raven sqlite3 API, ki je čim bližje izvornemu v smislu uporabe.
  • OO API višje ravni, bolj podoben implementacijam stilov sql.js in node.js.
  • API, ki temelji na delavcih, ki komunicira z zgornjimi API-ji prek sporočil delavcev. To je zasnovano za uporabo v glavni niti, z API-ji nižje ravni, nameščenimi v delovni niti, in komunikacijo z njimi prek delovnih sporočil.
  • Različica API-ja Worker, ki temelji na Promise in popolnoma skrije vidike komunikacije med nitmi uporabnika.
  • V največji možni meri podpirajte trajno shranjevanje na strani odjemalca z uporabo razpoložljivih API-jev JS. V času tega pisanja to vključuje izvorni zasebni datotečni sistem (OPFS) in (zelo omejeno) shrambo prek ozadja window.localStorage in .window.sessionStorage

Kar se tiče nespecifični cilji:

  • Ker je WASM tehnologija, osredotočena na splet in je UTF-8 kralj kodiranja na tem področju, trenutno ni načrtov za podporo API-jev sqlite3, povezanih z UTF16.
  • Medtem ko je podpora za izvajalne čase WASM zunaj brskalnika zelo razširjena, je ta projekt trenutno (konec leta 2022) osredotočen samo na cilje brskalnika. Čeprav imajo podrobnosti izvedbe, povezane s spletom, prednost in se komponente JavaScript API-ja osredotočajo posebej na odjemalce brskalnika, bi moral modul WASM na nižji ravni delovati v nespletnih okoljih WASM.
  • Združljivost s starimi ali nišnimi platformami. WASM je zasnovan za sodoben splet in zahteva sodobne platforme. Podobno bodo zastarele možnosti knjižnice sqlite3 v celoti odstranjene iz vmesnika WASM.

Koda za podporo WebAssembly je bila dodana v glavni repozitorij projekta. Za razliko od API-ja WebSQL, ki temelji na SQLite, je WASM SQLite popolnoma izoliran od brskalnika in ne vpliva na njegovo varnost (Google se je odločil opustiti podporo za WebSQL v Chromu po več ranljivostih v SQLite, ki bi jih bilo mogoče izkoristiti prek WebSQL za napad na Navigator ).

končno če si zanima več o tem, lahko preverite podrobnosti V naslednji povezavi.


Pustite svoj komentar

Vaš e-naslov ne bo objavljen. Obvezna polja so označena z *

*

*

  1. Odgovoren za podatke: AB Internet Networks 2008 SL
  2. Namen podatkov: Nadzor neželene pošte, upravljanje komentarjev.
  3. Legitimacija: Vaše soglasje
  4. Sporočanje podatkov: Podatki se ne bodo posredovali tretjim osebam, razen po zakonski obveznosti.
  5. Shranjevanje podatkov: Zbirka podatkov, ki jo gosti Occentus Networks (EU)
  6. Pravice: Kadar koli lahko omejite, obnovite in izbrišete svoje podatke.