Lagt til SQLite WASM-støtte for å bruke DBMS i en nettleser

SQLite

er et ACID-kompatibelt relasjonsdatabasestyringssystem, inneholdt i et relativt lite bibliotek skrevet i C

den SQLite-utviklere utvikler et prosjekt som skal implementeres muligheten til å kompilere biblioteket til en mellomliggende WebAssembly-kode som kan kjøres i en nettleser og egner seg til å organisere arbeid med databasen fra nettapplikasjoner på JavaScript-språket.

Målet av prosjektet er å gi en funksjonell JavaScript-lenke som er identisk i funksjonalitet med SQLite API. Webutviklere er utstyrt med et objektorientert grensesnitt på høyt nivå for å arbeide med data i stil med sql.js eller Node.js, med et lavt nivå C API og et API basert på Web Worker-mekanismen som gjør det mulig å lage asynkron kontrollere som kjører på separate tråder.

For å skjule kompleksiteten ved tråding over Web Worker-baserte API, En variant av programmeringsgrensesnittet basert på mekanismen Love.

Dataene som nettapplikasjoner lagrer i WASM-versjonen av SQLite kan lokaliseres innenfor gjeldende økt (tapt etter sideinnlasting) eller vedvare på klientsiden (vedvarer på tvers av økter).

For permanent lagring er backends forberedt for å legge data på et lokalt filsystem ved hjelp av OPFS (Origin-Private FileSystem, utvidelse til File System Access API, foreløpig kun tilgjengelig i WebKit og Chromium-baserte nettlesere) og lokal nettleserlagring basert på window.localStorage og window.sessionStorage APIene.

Når du bruker localStorage/sessionStorage, tilordnes dataene til de riktige nøkkel-/verdilagrene, mens ved bruk av OPFS er det to alternativer: simulering av en virtuell FS ved bruk av WASMFS, og en separat sqlite3_vfs-implementering som tilbyr et SQLite-basert VFS-lag. i OPFS .

Emscripten-kompilatoren brukes til å bygge SQLite i en WASM-representasjon. Resultatet er sqlite3.js- og sqlite3.wasm-filer som du kan inkludere i JavaScript-prosjektet ditt (HTML- og JavaScript-eksempel).

av de spesifikke målene av dette prosjektet er nevnt:

Bortsett fra der det er angitt i ikke-målene, oppgi en mer eller mindre komplett innpakning av funksjoner for sqlite3 C API, i den grad WASMs funksjonsparitet med C tillater. Faktisk, oppgi minst følgende APIer .

  • Bind en lavnivå sqlite3 API som er så nær native som mulig når det gjelder bruk.
  • Et høyere nivå OO API, mer som sql.js og node.js stilimplementeringer.
  • En arbeiderbasert API som kommuniserer med de ovennevnte APIene gjennom arbeidermeldinger. Dette er designet for å brukes på hovedtråden, med API-er på lavere nivå installert på en arbeidertråd, og kommunisere med dem via arbeidermeldinger.
  • En løftebasert variant av Worker API som fullstendig skjuler brukerens kommunikasjonsaspekter mellom tråder.
  • I den grad det er mulig, støtte vedvarende lagring på klientsiden ved å bruke tilgjengelige JS APIer. Når dette skrives, inkluderer det Source Private File System (OPFS) og (svært begrenset) lagring via backends for window.localStorage og .window.sessionStorage

Som for ikke-spesifikke mål:

  • Siden WASM er en nettsentrisk teknologi og UTF-8 er kongen av kodinger i det riket, er det ingen aktuelle planer om å støtte UTF3-relaterte sqlite16 APIer.
  • Mens støtte for WASM-kjøringer utenfor nettleseren er utbredt, er dette prosjektet for øyeblikket (sent 2022) kun fokusert på nettlesermål. Selv om nettrelaterte implementeringsdetaljer har forrang, og API-ens JavaScript-komponenter fokuserer spesifikt på nettleserklienter, "bør" WASM-modulen på lavere nivå fungere i ikke-web WASM-miljøer.
  • Kompatibilitet med gamle eller nisjeplattformer. WASM er designet for et moderne web og krever moderne plattformer. På samme måte vil utdaterte sqlite3-biblioteksalternativer bli fjernet fra WASM-grensesnittet helt.

Koden for WebAssembly-støtte er lagt til prosjektets hovedlager. I motsetning til WebSQL API, som er basert på SQLite, er WASM SQLite fullstendig isolert fra nettleseren og påvirker ikke sikkerheten (Google bestemte seg for å droppe støtte for WebSQL i Chrome etter flere sårbarheter i SQLite som kunne utnyttes gjennom WebSQL for å angripe Navigator ).

endelig hvis du er det interessert i å lære mer om det, kan du sjekke detaljene I den følgende lenken.


Legg igjen kommentaren

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *

*

*

  1. Ansvarlig for dataene: AB Internet Networks 2008 SL
  2. Formålet med dataene: Kontroller SPAM, kommentaradministrasjon.
  3. Legitimering: Ditt samtykke
  4. Kommunikasjon av dataene: Dataene vil ikke bli kommunisert til tredjeparter bortsett fra ved juridisk forpliktelse.
  5. Datalagring: Database vert for Occentus Networks (EU)
  6. Rettigheter: Når som helst kan du begrense, gjenopprette og slette informasjonen din.