У 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.

Дані, які веб-програми зберігають у 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

Додати коментар або відгук