Добавлена ​​поддержка SQLite WASM для использования СУБД в веб-браузере.

SQLite

ACID-совместимая система управления реляционными базами данных, содержащаяся в относительно небольшой библиотеке, написанной на C.

Разработчики SQLite разрабатывают проект для реализации возможность компилировать библиотеку в промежуточный код WebAssembly который может запускаться в веб-браузере и подходит для организации работы с базой данных из веб-приложений на языке JavaScript.

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

Чтобы скрыть сложности многопоточности через API на основе Web Worker, Вариант программный интерфейс, основанный на механизме Promise.

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

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

При использовании localStorage/sessionStorage данные сопоставляются с соответствующими хранилищами ключей/значений, тогда как при использовании OPFS есть два варианта: имитация виртуальной ФС с использованием WASMFS и отдельная реализация sqlite3_vfs, предлагающая слой VFS на основе SQLite. .

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

конкретных целей этого проекта упоминаются:

За исключением случаев, отмеченных в нецелевых целях, предоставьте более или менее полную оболочку функций для sqlite3 C API в той мере, в какой это позволяет паритет функций WASM с C. Фактически, предоставьте по крайней мере следующие API.

  • Привяжите низкоуровневый sqlite3 API, максимально приближенный к нативному с точки зрения использования.
  • Объектно-ориентированный API более высокого уровня, больше похожий на реализации в стиле sql.js и node.js.
  • Рабочий API, который взаимодействует с вышеуказанными API через рабочие сообщения. Это предназначено для использования в основном потоке с API-интерфейсами более низкого уровня, установленными в рабочем потоке, и для связи с ними через рабочие сообщения.
  • Основанный на Promise вариант Worker API, который полностью скрывает аспекты взаимодействия между потоками пользователя.
  • Насколько это возможно, поддерживайте постоянное хранилище на стороне клиента с помощью доступных API JS. На момент написания этой статьи это включает исходную частную файловую систему (OPFS) и (очень ограниченное) хранилище через бэкенды window.localStorage и .window.sessionStorage.

Что касается неконкретные цели:

  • Поскольку WASM — это веб-ориентированная технология, а UTF-8 — король кодировок в этой области, в настоящее время нет планов по поддержке API-интерфейсов sqlite3, связанных с UTF16.
  • Хотя поддержка среды выполнения WASM вне браузера широко распространена, этот проект в настоящее время (конец 2022 г.) ориентирован только на цели браузера. Хотя детали реализации, связанные с Интернетом, имеют приоритет, а компоненты JavaScript API сосредоточены конкретно на клиентах браузера, модуль WASM более низкого уровня «должен» работать в не-веб-средах WASM.
  • Совместимость со старыми или нишевыми платформами. WASM разработан для современной сети и требует современных платформ. Точно так же устаревшие параметры библиотеки sqlite3 будут полностью удалены из интерфейса WASM.

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

наконец, если вы интересно узнать об этом больше, вы можете проверить подробности По следующей ссылке.


Оставьте свой комментарий

Ваш электронный адрес не будет опубликован. Обязательные для заполнения поля помечены *

*

*

  1. Ответственный за данные: AB Internet Networks 2008 SL
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.