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

SQLite

е ACID-съвместима система за управление на релационни бази данни, съдържаща се в относително малка библиотека, написана на C

Лос Разработчиците на SQLite разработват проект за внедряване способността да компилирате библиотеката в a междинен код на WebAssembly който може да се стартира в уеб браузър и е подходящ за организиране на работа с базата данни от уеб приложения на езика JavaScript.

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

За да скриете сложността на нишките през базирания на Web Worker API, Вариант на интерфейсът за програмиране, базиран на механизма Обещайте.

Данните, които уеб приложенията съхраняват в WASM версията на SQLite, могат да бъдат разположени в рамките на текущата сесия (загубени след презареждане на страницата) или запазени от страна на клиента (продължават през сесиите).

За постоянно съхранение са подготвени задните части за поставяне на данни в локална файлова система използване на OPFS (Origin-Private FileSystem, разширение на API за достъп до файловата система, понастоящем достъпно само в браузъри, базирани на WebKit и Chromium) и локално хранилище на браузъра, базирано на API на window.localStorage и window.sessionStorage.

Когато използвате localStorage/sessionStorage, данните се нанасят на съответните хранилища за ключ/стойност, докато когато използвате OPFS, има две опции: симулиране на виртуална FS с помощта на WASMFS и отделна реализация на sqlite3_vfs, която предлага VFS слой, базиран на SQLite. .

Компилаторът Emscripten се използва за изграждане на SQLite в WASM представяне. Резултатът са sqlite3.js и sqlite3.wasm файлове, които можете да включите във вашия JavaScript проект (HTML и JavaScript пример).

на конкретните цели на този проект са посочени:

Освен където е отбелязано в нецелевите, осигурете повече или по-малко пълна обвивка на функции за sqlite3 C API, до степента, която позволява равенството на функциите на WASM с C. Всъщност осигурете поне следните API.

  • Свържете API на ниско ниво на sqlite3, който е възможно най-близък до естествения по отношение на използването.
  • OO API от по-високо ниво, по-скоро подобни на реализациите в стил sql.js и node.js.
  • API, базиран на работник, който комуникира с горните API чрез съобщения на работник. Това е проектирано да се използва в главната нишка, с API от по-ниско ниво, инсталирани на работна нишка, и да комуникира с тях чрез работни съобщения.
  • Базиран на Promise вариант на Worker API, който напълно скрива аспектите на комуникация между нишките на потребителя.
  • Доколкото е възможно, поддържайте постоянно съхранение от страна на клиента, като използвате налични JS API. Към момента на писане това включва Source Private File System (OPFS) и (много ограничено) съхранение чрез бекендовете window.localStorage и .window.sessionStorage

Що се отнася до неспецифични цели:

  • Тъй като WASM е уеб-ориентирана технология и UTF-8 е кралят на кодирането в тази сфера, няма настоящи планове за поддръжка на sqlite3 API, свързани с UTF16.
  • Въпреки че поддръжката за времена за изпълнение на WASM извън браузъра е широко разпространена, този проект в момента (края на 2022 г.) е фокусиран само върху цели на браузъра. Въпреки че подробностите за внедряване, свързани с мрежата, имат предимство и компонентите на JavaScript на API се фокусират конкретно върху клиентите на браузъра, модулът WASM от по-ниско ниво „трябва“ да работи в не-уеб среди WASM.
  • Съвместимост със стари или нишови платформи. WASM е проектиран за модерна мрежа и изисква модерни платформи. По същия начин остарелите опции на библиотеката sqlite3 ще бъдат изцяло премахнати от интерфейса WASM.

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

най-накрая, ако сте заинтересовани да научат повече за това, можете да проверите подробностите В следващия линк.


Оставете вашия коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *

*

*

  1. Отговорник за данните: AB Internet Networks 2008 SL
  2. Предназначение на данните: Контрол на СПАМ, управление на коментари.
  3. Легитимация: Вашето съгласие
  4. Съобщаване на данните: Данните няма да бъдат съобщени на трети страни, освен по законово задължение.
  5. Съхранение на данни: База данни, хоствана от Occentus Networks (ЕС)
  6. Права: По всяко време можете да ограничите, възстановите и изтриете информацията си.