Додано підтримку SQLite WASM для використання СУБД у веб-браузері

SQLite

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

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

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

Щоб приховати складність потоків через API на основі Web Worker, Варіант інтерфейс програмування на основі механізму Пообіцяй.

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

Для постійного зберігання підготовлено серверні модулі для розміщення даних у локальній файловій системі за допомогою 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 нижчого рівня, встановленими на робочому потоці, і для спілкування з ними через робочі повідомлення.
  • Варіант Worker API на основі Promise, який повністю приховує аспекти міжпотокового спілкування користувача.
  • Наскільки це можливо, підтримуйте постійне зберігання на стороні клієнта за допомогою доступних API JS. На момент написання цієї статті це включає вихідну приватну файлову систему (OPFS) і (дуже обмежене) сховище через серверні модулі window.localStorage і .window.sessionStorage

Що стосується неспецифічні цілі:

  • Оскільки WASM є веб-орієнтованою технологією, а UTF-8 є кращим кодуванням у цій сфері, наразі немає планів щодо підтримки пов’язаних з UTF3 API sqlite16.
  • Хоча підтримка позабраузерних середовищ виконання 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. Права: Ви можете будь-коли обмежити, відновити та видалити свою інформацію.