У SQLite дададзеная падтрымка WASM для выкарыстання СКБД у web-браўзэры

Распрацоўнікі SQLite развіваюць праект па рэалізацыі магчымасці кампіляцыі бібліятэкі ў прамежкавы код WebAssembly, здольны запускацца ў web-браўзэры і прыдатны для арганізацыі працы з БД з web-прыкладанняў на мове JavaScript. Код для падтрымкі WebAssembly дададзены ў асноўны рэпазітар праекта. У адрозненне ад API WebSQL, у аснове якога ляжыць SQLite, WASM SQLite цалкам ізаляваны ад браўзэра і не ўплывае на яго бяспеку (Google вырашыў адмовіцца ад падтрымкі WebSQL у Chrome пасля некалькіх уразлівасцяў у SQLite, якія можна было эксплуатаваць праз WebSQL для нападу на браўзэр) .

Мэтай праекта з'яўляецца прадастаўленне працоўнай JavaScript-абвязкі, ідэнтычнай па функцыянальнасці з API SQLite. Web-распрацоўнікам падаецца высокаўзроўневы аб'ектна-арыентаваны інтэрфейс для працы з дадзенымі ў стылі sql.js ці Node.js, абвязка над нізкаўзроўневым C API і API на базе механізму Web Worker, які дазваляе ствараць асінхронныя апрацоўшчыкі, выкананыя ў асобных струменях. Для ўтойвання тонкасцяў арганізацыі працы з струменямі па-над API на базе Web Worker таксама развіваецца варыянт праграмнага інтэрфейсу на аснове механізму Promise.

Дадзеныя, якія web-прыкладанні захоўваюць у WASM-версіі SQLite, могуць быць лакалізаваны ў рамках бягучага сеансу (губляюцца пасля перазагрузкі старонак) або захаваны на баку кліента (захоўваюцца паміж сеансамі). Для сталага захоўвання падрыхтаваны бэкэнды для размяшчэння дадзеных у лакальнай ФС пры дапамозе OPFS (Origin-Private FileSystem, пашырэнне да API File System Access, даступнае пакуль толькі ў браўзэрах на аснове WebKit і Chromium) і ў лакальных браўзэрных сховішчах на базе API window.localStorage window.sessionStorage. У выпадку ўжывання localStorage/sessionStorage дадзеныя адлюстроўваюцца ў адпаведныя сховішчы ў фармаце ключ/значэнне, а пры ўжыванні OPFS прадугледжана два варыянты: сімуляцыя віртуальнай ФС пры дапамозе WASMFS і асобная рэалізацыя sqlite3_vfs, якая прапануе пласт SQLite VFS на базе OPFS.

Для зборкі SQLite у WASM-прадстаўленне задзейнічаны кампілятар Emscripten (досыць сабраць пашырэнне ext/wasm: "./configure -enable-all; make sqlite3.c; cd ext/wasm; make"). На вынахадзе фармуюцца файлы sqlite3.js і sqlite3.wasm, якія можна ўлучыць у свой JavaScript-праект (прыклад HTML і JavaScript).

Крыніца: opennet.ru

Дадаць каментар