Pridėtas SQLite WASM palaikymas, kad būtų galima naudoti DBVS žiniatinklio naršyklėje

SQLite

yra su ACID suderinama reliacinė duomenų bazių valdymo sistema, esanti santykinai mažoje bibliotekoje, parašyta C

Los SQLite kūrėjai kuria projektą, kurį reikia įgyvendinti gebėjimas kompiliuoti biblioteką į a tarpinis WebAssembly kodas kurį galima paleisti žiniatinklio naršyklėje ir tinka organizuoti darbą su duomenų baze iš žiniatinklio programų JavaScript kalba.

Tikslas projekto yra pateikti funkcionalią „JavaScript“ nuorodą kurios funkcionalumas yra identiškas SQLite API. Žiniatinklio kūrėjams suteikiama aukšto lygio į objektą orientuota sąsaja, skirta dirbti su duomenimis sql.js arba Node.js stiliaus, apvynioti žemo lygio C API ir API, pagrįstą Web Worker mechanizmu, leidžiančiu kurti asinchroninius duomenis. valdikliai, kurie veikia atskiromis gijomis.

Norėdami paslėpti gijų kūrimo per žiniatinklio darbuotojo API sudėtingumą, Variantas programavimo sąsaja, pagrįsta mechanizmu Pažadai

Duomenys, kuriuos žiniatinklio programos saugo WASM SQLite versijoje, gali būti dabartinės sesijos metu (prarandami iš naujo įkėlus puslapį) arba išlikti kliento pusėje (išlikti per seansus).

Nuolatiniam saugojimui užpakalinės programos buvo paruoštos įdėti duomenis į vietinę failų sistemą naudojant OPFS („Origin-Private FileSystem“, failų sistemos prieigos API plėtinį, šiuo metu pasiekiamą tik „WebKit“ ir „Chromium“ pagrindu veikiančiose naršyklėse) ir naršyklės vietinę saugyklą, pagrįstą windows.localStorage ir window.sessionStorage API.

Naudojant localStorage/sessionStorage, duomenys susiejami su atitinkamomis raktų/reikšmių saugyklomis, o naudojant OPFS yra dvi parinktys: virtualaus FS modeliavimas naudojant WASMFS ir atskiras sqlite3_vfs diegimas, siūlantis SQLite pagrįstą VFS sluoksnį OPFS. .

Emscripten kompiliatorius naudojamas kuriant SQLite WASM atvaizde. Rezultatas yra sqlite3.js ir sqlite3.wasm failai, kuriuos galite įtraukti į savo JavaScript projektą (HTML ir JavaScript pavyzdys).

konkrečių tikslų iš šio projekto paminėti:

Išskyrus atvejus, kai nurodyta ne tikslinėse dalyse, pateikite daugiau ar mažiau pilną sqlite3 C API funkcijų paketą tiek, kiek leidžia WASM funkcijų lygybė su C. Tiesą sakant, pateikite bent šias API .

  • Susiekite žemo lygio sqlite3 API, kuri naudojimo požiūriu yra kuo artimesnė vietinei.
  • Aukštesnio lygio OO API, panašesnė į sql.js ir node.js stiliaus įgyvendinimą.
  • Darbuotojo API, kuri palaiko ryšį su aukščiau nurodytomis API darbuotojo pranešimais. Tai skirta naudoti pagrindinėje gijoje, kai darbuotojo gijoje įdiegtos žemesnio lygio API, ir bendrauti su jais darbuotojo pranešimais.
  • Pažadu pagrįstas Worker API variantas, visiškai paslepiantis vartotojo bendravimo tarp gijų aspektus.
  • Kiek įmanoma, palaikykite nuolatinę kliento saugyklą naudodami galimas JS API. Šio rašymo metu tai apima šaltinio privačių failų sistemą (OPFS) ir (labai ribotą) saugyklą per window.localStorage ir .window.sessionStorage pagrindines programas

kaip nekonkretūs tikslai:

  • Kadangi WASM yra į internetą orientuota technologija, o UTF-8 yra šios srities kodavimo karalius, šiuo metu neplanuojama palaikyti su UTF3 susijusias sqlite16 API.
  • Nors ne naršyklės WASM vykdymo laiko palaikymas yra plačiai paplitęs, šiuo metu (2022 m. pabaigoje) šis projektas yra orientuotas tik į naršyklės tikslus. Nors su žiniatinkliu susijusios diegimo detalės turi pirmenybę, o API „JavaScript“ komponentai yra skirti būtent naršyklės klientams, žemesnio lygio WASM modulis „turėtų“ veikti ne žiniatinklio WASM aplinkose.
  • Suderinamumas su senomis ar nišinėmis platformomis. WASM sukurtas šiuolaikiniam žiniatinkliui ir reikalauja modernių platformų. Panašiai nebenaudojamos sqlite3 bibliotekos parinktys bus visiškai pašalintos iš WASM sąsajos.

WebAssembly palaikymo kodas buvo įtrauktas į pagrindinę projekto saugyklą. Skirtingai nuo WebSQL API, kuri yra pagrįsta SQLite, WASM SQLite yra visiškai izoliuota nuo naršyklės ir neturi įtakos jos saugumui (Google nusprendė nutraukti WebSQL palaikymą naršyklėje Chrome po kelių SQLite pažeidžiamumų, kuriuos naudojant WebSQL galima išnaudoti ir atakuoti Navigator ).

pagaliau jei esi nori sužinoti daugiau apie tai, galite patikrinti išsamią informaciją Šioje nuorodoje.


Palikite komentarą

Jūsų elektroninio pašto adresas nebus skelbiamas. Privalomi laukai yra pažymėti *

*

*

  1. Už duomenis atsakingas: AB Internet Networks 2008 SL
  2. Duomenų paskirtis: kontroliuoti šlamštą, komentarų valdymą.
  3. Įteisinimas: jūsų sutikimas
  4. Duomenų perdavimas: Duomenys nebus perduoti trečiosioms šalims, išskyrus teisinius įsipareigojimus.
  5. Duomenų saugojimas: „Occentus Networks“ (ES) talpinama duomenų bazė
  6. Teisės: bet kuriuo metu galite apriboti, atkurti ir ištrinti savo informaciją.