Nagdagdag ng suporta sa SQLite WASM para magamit ang DBMS sa isang web browser

SQLite

ay isang ACID-compliant relational database management system, na nakapaloob sa isang medyo maliit na library na nakasulat sa C

Los Gumagawa ang mga developer ng SQLite ng isang proyektong ipapatupad ang kakayahang mag-compile ng library sa isang intermediate WebAssembly code na maaaring patakbuhin sa isang web browser at angkop para sa pag-aayos ng trabaho kasama ang database mula sa mga web application sa wikang JavaScript.

Ang layunin ng proyekto ay upang magbigay ng functional na JavaScript link na magkapareho sa functionality sa SQLite API. Ang mga web developer ay binibigyan ng isang mataas na antas na object-oriented na interface para sa pagtatrabaho sa data sa istilo ng sql.js o Node.js, pagbabalot ng mababang antas na C API at isang API batay sa mekanismo ng Web Worker na nagbibigay-daan sa paggawa ng asynchronous controllers. na tumatakbo sa magkahiwalay na mga thread.

Upang itago ang mga kumplikado ng threading sa Web Worker-based API, Isang variant ng ang interface ng programming batay sa mekanismo Pangako

Ang data na iniimbak ng mga web application sa WASM na bersyon ng SQLite ay maaaring matagpuan sa loob ng kasalukuyang session (nawala pagkatapos ng pag-reload ng pahina) o nanatili sa panig ng kliyente (nagpapatuloy sa mga session).

Para sa permanenteng imbakan, inihanda ang mga backend para maglagay ng data sa isang lokal na file system gamit ang OPFS (Origin-Private FileSystem, extension sa File System Access API, kasalukuyang available lang sa WebKit at Chromium-based na mga browser) at lokal na storage ng browser batay sa window.localStorage at window.sessionStorage API.

Kapag gumagamit ng localStorage/sessionStorage, ang data ay nakamapa sa naaangkop na key/value store, samantalang kapag gumagamit ng OPFS, mayroong dalawang opsyon: pagtulad sa isang virtual na FS gamit ang WASMFS, at isang hiwalay na pagpapatupad ng sqlite3_vfs na nag-aalok ng SQLite based na VFS layer. sa OPFS .

Ang Emscripten compiler ay ginagamit upang bumuo ng SQLite sa isang representasyon ng WASM. Ang resulta ay sqlite3.js at sqlite3.wasm file na maaari mong isama sa iyong proyekto sa JavaScript (HTML at JavaScript sample).

ng mga tiyak na layunin ng proyektong ito ay nabanggit:

Maliban kung nabanggit sa mga hindi target, magbigay ng higit pa o hindi gaanong kumpletong wrapper ng mga feature para sa sqlite3 C API, sa lawak na pinapayagan ng feature parity ng WASM sa C. Sa katunayan, magbigay ng hindi bababa sa mga sumusunod na API .

  • Magbigkis ng mababang antas na sqlite3 API na mas malapit sa native hangga't maaari sa mga tuntunin ng paggamit.
  • Isang mas mataas na antas ng OO API, mas katulad ng mga pagpapatupad ng istilo ng sql.js at node.js.
  • Isang worker-based na API na nakikipag-ugnayan sa mga API sa itaas sa pamamagitan ng mga mensahe ng manggagawa. Idinisenyo ito para magamit sa pangunahing thread, na may mga lower-level na API na naka-install sa isang worker thread, at makipag-ugnayan sa kanila sa pamamagitan ng mga mensahe ng manggagawa.
  • Isang Promise-based na variant ng Worker API na ganap na nagtatago sa mga aspeto ng inter-thread na komunikasyon ng user.
  • Hangga't maaari, suportahan ang patuloy na storage sa panig ng kliyente gamit ang mga available na JS API. Sa oras ng pagsulat na ito, kabilang dito ang Source Private File System (OPFS) at (napakalimitado) na storage sa pamamagitan ng window.localStorage at .window.sessionStorage backends

Tulad ng para sa di-tiyak na mga layunin:

  • Dahil ang WASM ay isang web-centric na teknolohiya at ang UTF-8 ay ang hari ng mga pag-encode sa larangang iyon, walang kasalukuyang mga plano upang suportahan ang mga sqlite3 API na nauugnay sa UTF16.
  • Bagama't laganap ang suporta para sa mga out-of-browser na WASM runtime, ang proyektong ito ay kasalukuyang (huli ng 2022) na nakatuon lamang sa mga target ng browser. Bagama't inuuna ang mga detalye ng pagpapatupad na nauugnay sa web, at partikular na nakatuon ang mga bahagi ng JavaScript ng API sa mga kliyente ng browser, "dapat" gumana ang module ng WASM na nasa mababang antas sa mga kapaligirang WASM na hindi web.
  • Pagkatugma sa mga luma o niche na platform. Ang WASM ay idinisenyo para sa isang modernong web at nangangailangan ng mga modernong platform. Katulad nito, ang mga hindi na ginagamit na opsyon sa library ng sqlite3 ay ganap na aalisin sa interface ng WASM.

Ang code para sa suporta sa WebAssembly ay naidagdag sa pangunahing repositoryo ng proyekto. Hindi tulad ng WebSQL API, na nakabatay sa SQLite, ang WASM SQLite ay ganap na nakahiwalay sa browser at hindi nakakaapekto sa seguridad nito (nagpasya ang Google na ihinto ang suporta para sa WebSQL sa Chrome pagkatapos ng ilang mga kahinaan sa SQLite na maaaring samantalahin sa pamamagitan ng WebSQL upang atakehin ang Navigator ).

sa wakas kung ikaw nga interesadong matuto pa tungkol dito, maaari mong suriin ang mga detalye Sa sumusunod na link.


Iwanan ang iyong puna

Ang iyong email address ay hindi nai-publish. Mga kinakailangang patlang ay minarkahan ng *

*

*

  1. Responsable para sa data: AB Internet Networks 2008 SL
  2. Layunin ng data: Kontrolin ang SPAM, pamamahala ng komento.
  3. Legitimation: Ang iyong pahintulot
  4. Komunikasyon ng data: Ang data ay hindi maiparating sa mga third party maliban sa ligal na obligasyon.
  5. Imbakan ng data: Ang database na naka-host ng Occentus Networks (EU)
  6. Mga Karapatan: Sa anumang oras maaari mong limitahan, mabawi at tanggalin ang iyong impormasyon.