S-a adăugat suport SQLite WASM pentru a utiliza DBMS într-un browser web

SQLite

este un sistem de management al bazelor de date relaționale compatibil cu ACID, conținut într-o bibliotecă relativ mică scrisă în C

L Dezvoltatorii SQLite dezvoltă un proiect de implementat capacitatea de a compila biblioteca într-un cod WebAssembly intermediar care poate fi rulat într-un browser web și este potrivit pentru organizarea lucrului cu baza de date din aplicații web în limbajul JavaScript.

Obiectivul a proiectului este de a furniza un link JavaScript funcțional care este identic ca funcționalitate cu API-ul SQLite. Dezvoltatorii web sunt furnizați cu o interfață de nivel înalt orientată pe obiecte pentru a lucra cu date în stilul sql.js sau Node.js, împachetând un API C de nivel scăzut și un API bazat pe mecanismul Web Worker care permite crearea asincronă. controlere care rulează pe fire separate.

Pentru a ascunde complexitatea threading-ului prin API-ul bazat pe Web Worker, O variantă a interfața de programare bazată pe mecanism Promisiune.

Datele pe care aplicațiile web le stochează în versiunea WASM a SQLite pot fi localizate în cadrul sesiunii curente (pierdute după reîncărcarea paginii) sau pot fi păstrate în partea clientului (persista peste sesiuni).

Pentru stocarea permanentă, backend-urile au fost pregătite pentru a pune date într-un sistem de fișiere local folosind OPFS (Origin-Private FileSystem, extensie la API-ul de acces la sistemul de fișiere, disponibil în prezent numai în browserele bazate pe WebKit și Chromium) și stocarea locală a browserului bazată pe API-urile window.localStorage și window.sessionStorage.

Când utilizați localStorage/sessionStorage, datele sunt mapate la depozitele de chei/valoare adecvate, în timp ce atunci când utilizați OPFS, există două opțiuni: simularea unui FS virtual folosind WASMFS și o implementare separată sqlite3_vfs care oferă un strat VFS bazat pe SQLite. .

Compilatorul Emscripten este folosit pentru a construi SQLite într-o reprezentare WASM. Rezultatul sunt fișierele sqlite3.js și sqlite3.wasm pe care le puteți include în proiectul dvs. JavaScript (eșantion HTML și JavaScript).

a obiectivelor specifice din acest proiect sunt mentionate:

Cu excepția cazurilor menționate în non-ținte, furnizați un pachet mai mult sau mai puțin complet de caracteristici pentru API-ul sqlite3 C, în măsura în care permite paritatea caracteristicilor WASM cu C. De fapt, furnizați cel puțin următoarele API-uri .

  • Legați un API sqlite3 de nivel scăzut, care este cât mai aproape de nativ în ceea ce privește utilizarea.
  • Un API OO de nivel superior, mai degrabă ca implementările în stilul sql.js și node.js.
  • Un API bazat pe lucrători care comunică cu API-urile de mai sus prin mesaje ale lucrătorilor. Acesta este conceput pentru a fi utilizat pe firul principal, cu API-uri de nivel inferior instalate pe un fir de lucru și pentru a comunica cu ei prin mesaje de lucru.
  • O variantă bazată pe Promise a API-ului Worker, care ascunde complet aspectele de comunicare inter-thread ale utilizatorului.
  • În măsura în care este posibil, acceptați stocarea persistentă pe partea clientului folosind API-urile JS disponibile. La momentul scrierii acestui articol, aceasta include sistemul de fișiere private sursă (OPFS) și stocarea (foarte limitată) prin backend-urile window.localStorage și .window.sessionStorage

în ceea ce privește obiective nespecifice:

  • Deoarece WASM este o tehnologie centrată pe web și UTF-8 este regele codificărilor în acel domeniu, nu există planuri actuale de a sprijini API-urile sqlite3 legate de UTF16.
  • În timp ce suportul pentru runtime WASM din afara browserului este larg răspândit, acest proiect este în prezent (la sfârșitul anului 2022) axat doar pe ținte ale browserului. Deși detaliile de implementare legate de web au prioritate, iar componentele JavaScript ale API-ului se concentrează în mod special pe clienții browser, modulul WASM de nivel inferior „ar trebui” să funcționeze în medii WASM non-web.
  • Compatibilitate cu platforme vechi sau de nișă. WASM este conceput pentru un web modern și necesită platforme moderne. În mod similar, opțiunile depășite ale bibliotecii sqlite3 vor fi eliminate în întregime din interfața WASM.

Codul pentru suportul WebAssembly a fost adăugat în depozitul principal al proiectului. Spre deosebire de API-ul WebSQL, care se bazează pe SQLite, WASM SQLite este complet izolat de browser și nu afectează securitatea acestuia (Google a decis să renunțe la suportul pentru WebSQL în Chrome după mai multe vulnerabilități în SQLite care ar putea fi exploatate prin WebSQL pentru a ataca Navigator). ).

in sfarsit daca esti interesat să afle mai multe despre el, puteți verifica detaliile În următorul link.


Lasă comentariul tău

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

*

*

  1. Responsabil pentru date: AB Internet Networks 2008 SL
  2. Scopul datelor: Control SPAM, gestionarea comentariilor.
  3. Legitimare: consimțământul dvs.
  4. Comunicarea datelor: datele nu vor fi comunicate terților decât prin obligație legală.
  5. Stocarea datelor: bază de date găzduită de Occentus Networks (UE)
  6. Drepturi: în orice moment vă puteți limita, recupera și șterge informațiile.