on ACID-yhteensopiva relaatiotietokannan hallintajärjestelmä, joka sisältyy suhteellisen pieneen C-kielellä kirjoitettuun kirjastoon
Los SQLite-kehittäjät kehittävät projektia toteutettavaksi kyky koota kirjasto a WebAssembly-välikoodi joka on ajettavissa verkkoselaimella ja sopii tietokannan työn organisointiin JavaScript-kielisistä web-sovelluksista.
Tavoite projektin on tarjota toimiva JavaScript-linkki joka on toiminnaltaan identtinen SQLite API:n kanssa. Web-kehittäjille tarjotaan korkean tason oliokäyttöliittymä sql.js- tai Node.js-tyylisten tietojen kanssa työskentelemiseen, matalan tason C API:n ja Web Worker -mekanismiin perustuvan API:n käärimiseen, joka mahdollistaa asynkronisen luomisen. ohjaimet, jotka toimivat erillisissä säikeissä.
Voit piilottaa Web Worker -pohjaisen sovellusliittymän ketjutuksen monimutkaisuuden Variantti mekanismiin perustuva ohjelmointirajapinta Lupaus.
Verkkosovellusten SQLiten WASM-versioon tallentamat tiedot voivat sijaita nykyisessä istunnossa (menetetty sivun uudelleenlatauksen jälkeen) tai säilyä asiakaspuolella (pysyä istuntojen aikana).
Pysyvää tallennusta varten taustajärjestelmät on valmistettu sijoittamaan tiedot paikalliseen tiedostojärjestelmään käyttäen OPFS:ää (Origin-Private FileSystem, File System Access API:n laajennus, tällä hetkellä saatavilla vain WebKit- ja Chromium-pohjaisissa selaimissa) ja selaimen paikallista tallennustilaa, joka perustuu windows.localStorage- ja window.sessionStorage-sovellusliittymiin.
LocalStorage/sessionStoragea käytettäessä tiedot kartoitetaan asianmukaisiin avain/arvovarastoihin, kun taas OPFS:ää käytettäessä on kaksi vaihtoehtoa: virtuaalisen FS:n simulointi WASMFS:n avulla ja erillinen sqlite3_vfs-toteutus, joka tarjoaa SQLite-pohjaisen VFS-kerroksen. .
Emscripten-kääntäjää käytetään SQLiten rakentamiseen WASM-esitykseen. Tuloksena on sqlite3.js- ja sqlite3.wasm-tiedostot, jotka voit sisällyttää JavaScript-projektiisi (HTML- ja JavaScript-esimerkki).
erityistavoitteista tästä projektista mainitaan:
Ellei ei-kohdissa ole mainittu, tarjoa sqlite3 C API:lle enemmän tai vähemmän täydellinen ominaisuuksien kääre siinä määrin kuin WASM:n ominaisuuspariteetti C:n kanssa sallii. Käytä itse asiassa ainakin seuraavat API:t .
- Sido matalan tason sqlite3 API, joka on käytön suhteen mahdollisimman lähellä alkuperäistä.
- Korkeamman tason OO API, enemmän kuin sql.js- ja node.js-tyylitoteutukset.
- Työntekijäpohjainen API, joka kommunikoi yllä olevien API:iden kanssa työntekijäviestien kautta. Tämä on suunniteltu käytettäväksi pääsäikeessä, ja alemman tason API:t on asennettu työntekijäsäikeeseen, ja kommunikoimaan heidän kanssaan työntekijöiden viestien kautta.
- Promise-pohjainen Worker API -versio, joka piilottaa täysin käyttäjän säikeiden väliset viestintänäkökohdat.
- Tue mahdollisuuksien mukaan asiakaspuolen jatkuvaa tallennusta käytettävissä olevien JS-sovellusliittymien avulla. Tätä kirjoitettaessa se sisältää Source Private File System (OPFS) ja (erittäin rajoitetun) tallennustilan windows.localStorage- ja .window.sessionStorage-taustaohjelmien kautta
kuten epäspesifiset tavoitteet:
- Koska WASM on verkkokeskeinen tekniikka ja UTF-8 on koodausten kuningas tällä alueella, tällä hetkellä ei ole suunnitteilla tukea UTF3:een liittyviä sqlite16-sovellusliittymiä.
- Vaikka selaimen ulkopuolisten WASM-ajoaikojen tuki on laajalle levinnyt, tämä projekti keskittyy tällä hetkellä (vuoden 2022 lopulla) vain selainkohteisiin. Vaikka verkkoon liittyvät toteutustiedot ovat etusijalla ja API:n JavaScript-komponentit keskittyvät erityisesti selainasiakkaisiin, alemman tason WASM-moduulin "pitäisi" toimia muissa kuin web-WASM-ympäristöissä.
- Yhteensopivuus vanhojen tai niche-alustojen kanssa. WASM on suunniteltu nykyaikaiselle webille ja vaatii nykyaikaiset alustat. Samoin vanhentuneet sqlite3-kirjastoasetukset poistetaan WASM-liittymästä kokonaan.
WebAssembly-tuen koodi on lisätty projektin päätietovarastoon. Toisin kuin SQLiteen perustuva WebSQL API, WASM SQLite on täysin eristetty selaimesta eikä vaikuta sen turvallisuuteen (Google päätti lopettaa WebSQL:n tuen Chromessa useiden SQLiten haavoittuvuuksien jälkeen, joita WebSQL voitiin hyödyntää hyökätäkseen Navigaattoriin ).
vihdoin jos olet kiinnostunut oppimaan siitä lisää, voit tarkistaa yksityiskohdat Seuraavassa linkissä.
Ole ensimmäinen kommentti