Dodana podrška za SQLite WASM za korištenje DBMS-a u web pregledniku

SQLite

je sustav za upravljanje relacijskom bazom podataka usklađen s ACID-om, sadržan u relativno maloj biblioteci napisanoj u C-u

The SQLite programeri razvijaju projekt za implementaciju sposobnost sastavljanja biblioteke u a srednji WebAssembly kod koji se može pokrenuti u web pregledniku i pogodan je za organizaciju rada s bazom podataka iz web aplikacija u jeziku JavaScript.

Cilj projekta je pružiti funkcionalnu JavaScript vezu koji je po funkcionalnosti identičan SQLite API-ju. Web programeri dobivaju objektno orijentirano sučelje visoke razine za rad s podacima u stilu sql.js ili Node.js, omotavajući C API niske razine i API temeljen na mehanizmu Web Worker koji omogućuje stvaranje asinkronih kontroleri koji rade na zasebnim nitima.

Kako biste sakrili složenost povezivanja niti preko API-ja temeljenog na Web Workeru, Varijanta od programsko sučelje temeljeno na mehanizmu Obećanje.

Podaci koje web aplikacije pohranjuju u WASM verziji SQLitea mogu se nalaziti unutar trenutne sesije (izgubljeni nakon ponovnog učitavanja stranice) ili postojati na strani klijenta (trajati kroz sesije).

Za trajnu pohranu, pozadina je pripremljena za stavljanje podataka u lokalni datotečni sustav koristeći OPFS (Origin-Private FileSystem, proširenje API-ja za pristup sustavu datoteka, trenutno dostupno samo u preglednicima baziranim na WebKitu i Chromiumu) i lokalnu pohranu preglednika temeljenu na API-jima window.localStorage i window.sessionStorage.

Kada koristite localStorage/sessionStorage, podaci se mapiraju u odgovarajuće pohrane ključeva/vrijednosti, dok kada koristite OPFS, postoje dvije opcije: simulacija virtualnog FS-a pomoću WASMFS-a i zasebna implementacija sqlite3_vfs koja nudi VFS sloj temeljen na SQLiteu. u OPFS-u .

Emscripten kompajler se koristi za izgradnju SQLite u WASM reprezentaciji. Rezultat su datoteke sqlite3.js i sqlite3.wasm koje možete uključiti u svoj JavaScript projekt (HTML i JavaScript primjer).

specifičnih ciljeva ovog projekta spominju se:

Osim gdje je navedeno u neciljevima, osigurajte više ili manje potpuni omotač značajki za sqlite3 C API, u onoj mjeri u kojoj to dopušta paritet značajki WASM-a s C. Zapravo, osigurajte barem sljedeće API-je.

  • Povežite sqlite3 API niske razine koji je što je moguće bliži izvornom u smislu upotrebe.
  • OO API više razine, sličniji implementacijama stilova sql.js i node.js.
  • API temeljen na radnicima koji komunicira s gore navedenim API-jima putem poruka radnika. Ovo je dizajnirano za korištenje na glavnoj niti, s API-jima niže razine instaliranim na radnoj niti i komunikaciji s njima putem radničkih poruka.
  • Promise-based varijanta Worker API-ja koja u potpunosti skriva aspekte komunikacije među nitima korisnika.
  • U mjeri u kojoj je to moguće, podržite trajnu pohranu na strani klijenta koristeći dostupne JS API-je. U vrijeme pisanja ovog teksta, to uključuje izvorni privatni datotečni sustav (OPFS) i (vrlo ograničenu) pohranu putem pozadinskih dijelova window.localStorage i .window.sessionStorage

Što se tiče nespecifični ciljevi:

  • Budući da je WASM tehnologija usmjerena na web, a UTF-8 je kralj kodiranja u tom području, trenutno nema planova za podršku sqlite3 API-ja povezanih s UTF16.
  • Dok je podrška za WASM runtimes izvan preglednika široko rasprostranjena, ovaj je projekt trenutno (krajem 2022.) fokusiran samo na ciljeve preglednika. Iako detalji implementacije koji se odnose na web imaju prednost, a JavaScript komponente API-ja usmjerene su posebno na klijente preglednika, WASM modul niže razine "trebao bi" raditi u neweb okruženjima WASM.
  • Kompatibilnost sa starim ili nišnim platformama. WASM je dizajniran za moderan web i zahtijeva moderne platforme. Slično tome, zastarjele opcije biblioteke sqlite3 bit će u potpunosti uklonjene iz WASM sučelja.

Kôd za podršku za WebAssembly dodan je glavnom repozitoriju projekta. Za razliku od WebSQL API-ja koji se temelji na SQLite-u, ​​WASM SQLite potpuno je izoliran od preglednika i ne utječe na njegovu sigurnost (Google je odlučio ukinuti podršku za WebSQL u Chromeu nakon nekoliko ranjivosti u SQLite-u koje bi se mogle iskoristiti putem WebSQL-a za napad na Navigator ).

konačno ako jesi zainteresirani da saznaju više o tome, možete provjeriti detalje U sljedećem linku.


Ostavite svoj komentar

Vaša email adresa neće biti objavljen. Obavezna polja su označena s *

*

*

  1. Odgovoran za podatke: AB Internet Networks 2008 SL
  2. Svrha podataka: Kontrola neželjene pošte, upravljanje komentarima.
  3. Legitimacija: Vaš pristanak
  4. Komunikacija podataka: Podaci se neće dostavljati trećim stranama, osim po zakonskoj obvezi.
  5. Pohrana podataka: Baza podataka koju hostira Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.