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 от ниско ниво и API, базиран на механизма Web Worker, който позволява можете да създадете асинхронни манипулатори, изпълнявани в отделни нишки. За да се скрият тънкостите на организиране на работа с потоци върху базирания на Web Worker API, също се разработва версия на програмния интерфейс, базиран на механизма Promise.

Данните, които уеб приложенията съхраняват в WASM версията на SQLite, могат да бъдат локализирани в рамките на текущата сесия (загубени след презареждане на страницата) или съхранени от страна на клиента (запазени между сесиите). За постоянно съхранение са подготвени бекендове за поставяне на данни в локалната файлова система с помощта на OPFS (Origin-Private FileSystem, разширение на API за достъп до файловата система, понастоящем достъпно само в браузъри, базирани на WebKit и Chromium) и в базирано на локално хранилище на браузър на window.localStorage API и window.sessionStorage. Когато използвате localStorage/sessionStorage, данните се отразяват в съответните хранилища във формат ключ/стойност, а когато използвате OPFS, има две опции: симулиране на виртуална FS с помощта на 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

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