SQLite dodaje obsługę WASM do korzystania z DBMS w przeglądarce internetowej

Programiści SQLite opracowują projekt mający na celu zaimplementowanie możliwości kompilacji biblioteki do pośredniego kodu WebAssembly, który można uruchomić w przeglądarce internetowej i nadaje się do organizowania pracy z bazą danych z poziomu aplikacji internetowych w języku JavaScript. Do głównego repozytorium projektu dodano kod obsługujący WebAssembly. W przeciwieństwie do API WebSQL, które opiera się na SQLite, WASM SQLite jest całkowicie odizolowany od przeglądarki i nie wpływa na jej bezpieczeństwo (Google zdecydował się porzucić obsługę WebSQL w przeglądarce Chrome po kilku lukach w SQLite, które można wykorzystać poprzez WebSQL do ataku na przeglądarkę ) .

Celem projektu jest zapewnienie działającego powiązania JavaScript, które ma identyczną funkcjonalność jak API SQLite. Twórcy stron internetowych otrzymują wysokopoziomowy, obiektowy interfejs do pracy z danymi w stylu sql.js lub Node.js, obejmujący niskopoziomowy interfejs API C oraz interfejs API oparty na mechanizmie Web Worker, który umożliwia do tworzenia asynchronicznych procedur obsługi działających na oddzielnych wątkach. Aby ukryć zawiłości organizacji pracy z wątkami na bazie API opartego na Web Worker, opracowywany jest także wariant interfejsu programistycznego oparty na mechanizmie Promise.

Dane przechowywane przez aplikacje internetowe w wersji SQLite WASM mogą być zlokalizowane w ramach bieżącej sesji (utracone po ponownym załadowaniu strony) lub utrwalone po stronie klienta (utrwalone pomiędzy sesjami). Do przechowywania trwałego przygotowano backendy umożliwiające umieszczanie danych w lokalnym systemie plików z wykorzystaniem OPFS (Origin-Private FileSystem, rozszerzenie API File System Access, dostępne dotychczas wyłącznie w przeglądarkach opartych na WebKit i Chromium) oraz w lokalnych magazynach przeglądarek w oparciu o API window.localStorage i window.sessionStorage. Podczas korzystania z localStorage/sessionStorage dane są mapowane do odpowiednich magazynów kluczy/wartości, natomiast w przypadku korzystania z OPFS istnieją dwie opcje: symulacja wirtualnego systemu plików przy użyciu WASMFS i oddzielna implementacja sqlite3_vfs, która oferuje warstwę VFS SQLite opartą na OPFS .

Aby wbudować SQLite w reprezentację WASM, używany jest kompilator Emscripten (wystarczy zbudować rozszerzenie ext/wasm: "./configure --enable-all; make sqlite3.c; cd ext/wasm; make"). Dane wyjściowe to pliki sqlite3.js i sqlite3.wasm, które możesz uwzględnić w swoim projekcie JavaScript (przykład HTML i JavaScript).

Źródło: opennet.ru

Dodaj komentarz