SQLite добавя поддръжка на WASM за използване на СУБД в уеб браузър

Разработчиците на SQLite разработват проект, който ще позволи на библиотеката да бъде компилирана в междинен код на WebAssembly, способен да работи в уеб браузър и подходящ за работа с базата данни от JavaScript уеб приложения. Кодът за поддръжка на WebAssembly е добавен към основното хранилище на проекта. За разлика от WebSQL API, който е базиран на SQLite, WASM SQLite е напълно изолиран от браузъра и не влияе на неговата сигурност (Google реши да премахне поддръжката на WebSQL в Chrome след няколко уязвимости в SQLite, които биха могли да бъдат използвани чрез WebSQL за атака срещу браузъра).

Целта на проекта е да предостави работеща JavaScript рамка, идентична по функционалност с SQLite API. На уеб разработчиците се предоставя високо ниво, обектно-ориентиран интерфейс за работа с данни в стила на sql.js или Node.js, рамка за ниско ниво C API и Web Worker-базиран API, който позволява създаването на асинхронни манипулатори, работещи в отделни нишки. За да се скрият тънкостите на нишките, върху Web Worker-базирания API се разработва и Promise-базиран API.

Данните, съхранявани от уеб приложенията във WASM версията на SQLite, могат да бъдат локализирани в рамките на текущата сесия (загубени след презареждане на страници) или запазени от страна на клиента (запазени между сесиите). За постоянно съхранение са налични бекендове за съхранение на данни в локална файлова система, използвайки OPFS (Origin-Private FileSystem, разширение на File System Access API, понастоящем достъпно само в браузъри, базирани на WebKit и Chromium), и в локално хранилище на браузъра, използвайки API-тата window.localStorage и window.sessionStorage. При използване на localStorage/sessionStorage, данните се отразяват в съответното хранилище във формат ключ/стойност, докато при използване на OPFS са налични две опции: симулиране на виртуална файлова система, използвайки WASMFS, и отделна имплементация, sqlite3_vfs, която предлага SQLite VFS слой, базиран на OPFS.

Компилаторът Emscripten се използва за изграждане на SQLite в WASM представяне (просто изградете разширението ext/wasm: "./configure --enable-all; make sqlite3.c; cd ext/wasm; make"). Получените файлове са sqlite3.js и sqlite3.wasm, които могат да бъдат включени във вашия JavaScript проект (пример за HTML и JavaScript).

Източник: opennet.ru

Добавяне на нов коментар