Lade till stöd för SQLite WASM för att använda DBMS i en webbläsare

SQLite

är ett ACID-kompatibelt relationsdatabashanteringssystem, som finns i ett relativt litet bibliotek skrivet i C

mycket SQLite-utvecklare utvecklar ett projekt att implementera förmågan att sammanställa biblioteket till en mellanliggande WebAssembly-kod som kan köras i en webbläsare och är lämplig för att organisera arbetet med databasen från webbapplikationer i JavaScript-språket.

Målet av projektet är att tillhandahålla en funktionell JavaScript-länk som är identisk i funktionalitet med SQLite API. Webbutvecklare är försedda med ett objektorienterat gränssnitt på hög nivå för att arbeta med data i stil med sql.js eller Node.js, med ett lågnivå-C API och ett API baserat på Web Worker-mekanismen som gör det möjligt att skapa asynkrona kontroller som körs på separata trådar.

För att dölja komplexiteten med att tråda över Web Worker-baserade API: En variant av programmeringsgränssnittet baserat på mekanismen Löfte.

Datan som webbapplikationer lagrar i WASM-versionen av SQLite kan finnas inom den aktuella sessionen (försvunnen efter omladdning av sidan) eller kvarstå på klientsidan (bevaras över sessioner).

För permanent lagring har backends förberetts för att lägga data på ett lokalt filsystem använder OPFS (Origin-Private FileSystem, tillägg till File System Access API, för närvarande endast tillgängligt i WebKit och Chromium-baserade webbläsare) och lokal lagring i webbläsaren baserad på API:erna window.localStorage och window.sessionStorage.

När du använder localStorage/sessionStorage, mappas data till lämpliga nyckel-/värdelager, medan när du använder OPFS finns det två alternativ: simulering av en virtuell FS med WASMFS och en separat sqlite3_vfs-implementering som erbjuder ett SQLite-baserat VFS-lager. i OPFS .

Emscripten-kompilatorn används för att bygga SQLite i en WASM-representation. Resultatet är sqlite3.js- och sqlite3.wasm-filer som du kan inkludera i ditt JavaScript-projekt (HTML och JavaScript-exempel).

av de specifika målen av detta projekt nämns:

Förutom där det anges i icke-målen, tillhandahåll ett mer eller mindre komplett omslag av funktioner för sqlite3 C API, i den utsträckning som WASM:s funktionsparitet med C tillåter. Ge faktiskt åtminstone följande API:er .

  • Bind ett lågnivå sqlite3 API som är så nära native som möjligt när det gäller användning.
  • En högre nivå OO API, mer som sql.js och node.js stilimplementeringarna.
  • Ett arbetarbaserat API som kommunicerar med ovanstående API:er genom arbetarmeddelanden. Detta är designat för att användas på huvudtråden, med API:er på lägre nivå installerade på en arbetartråd, och kommunicera med dem via arbetarmeddelanden.
  • En löftesbaserad variant av Worker API som helt döljer användarens kommunikationsaspekter mellan trådar.
  • I den mån det är möjligt, stödja beständig lagring på klientsidan med hjälp av tillgängliga JS API:er. När detta skrivs inkluderar det Source Private File System (OPFS) och (mycket begränsad) lagring via backenderna window.localStorage och .window.sessionStorage

Som för icke-specifika mål:

  • Eftersom WASM är en webbcentrerad teknologi och UTF-8 är kungen av kodningar i det området, finns det inga aktuella planer på att stödja UTF3-relaterade sqlite16 API:er.
  • Även om stöd för WASM-körtider utanför webbläsaren är utbrett, fokuserar detta projekt för närvarande (sent 2022) endast på webbläsarmål. Även om webbrelaterade implementeringsdetaljer har företräde och API:s JavaScript-komponenter fokuserar specifikt på webbläsarklienter, "bör" WASM-modulen på lägre nivå fungera i icke-webb-WASM-miljöer.
  • Kompatibilitet med gamla eller nischade plattformar. WASM är designat för en modern webb och kräver moderna plattformar. På samma sätt kommer utfasade sqlite3-biblioteksalternativ att tas bort helt från WASM-gränssnittet.

Koden för WebAssembly-stöd har lagts till i projektets huvudlager. Till skillnad från WebSQL API, som är baserat på SQLite, är WASM SQLite helt isolerad från webbläsaren och påverkar inte dess säkerhet (Google beslutade att ta bort stödet för WebSQL i Chrome efter flera sårbarheter i SQLite som kunde utnyttjas genom WebSQL för att attackera Navigatorn ).

äntligen om du är det intresserad av att lära sig mer om detkan du kontrollera detaljerna I följande länk.


Lämna din kommentar

Din e-postadress kommer inte att publiceras. Obligatoriska fält är markerade med *

*

*

  1. Ansvarig för data: AB Internet Networks 2008 SL
  2. Syftet med uppgifterna: Kontrollera skräppost, kommentarhantering.
  3. Legitimering: Ditt samtycke
  4. Kommunikation av uppgifterna: Uppgifterna kommer inte att kommuniceras till tredje part förutom enligt laglig skyldighet.
  5. Datalagring: databas värd för Occentus Networks (EU)
  6. Rättigheter: När som helst kan du begränsa, återställa och radera din information.