SQLite menambahkan dukungan WASM untuk menggunakan DBMS di browser web

Pengembang SQLite sedang mengembangkan proyek untuk mengimplementasikan kemampuan mengkompilasi perpustakaan ke dalam kode perantara WebAssembly, mampu berjalan di browser web dan cocok untuk mengatur pekerjaan dengan database dari aplikasi web dalam JavaScript. Kode untuk mendukung WebAssembly telah ditambahkan ke repositori proyek utama. Berbeda dengan WebSQL API, yang berbasis SQLite, WASM SQLite benar-benar terisolasi dari browser dan tidak memengaruhi keamanannya (Google memutuskan untuk menghentikan dukungan untuk WebSQL di Chrome setelah beberapa kerentanan di SQLite dapat dieksploitasi melalui WebSQL untuk menyerang browser) .

Tujuan dari proyek ini adalah untuk menyediakan kerangka kerja JavaScript yang fungsinya identik dengan API SQLite. Pengembang web dilengkapi dengan antarmuka berorientasi objek tingkat tinggi untuk bekerja dengan data dalam gaya sql.js atau Node.js, pengikatan pada API C tingkat rendah dan API berdasarkan mekanisme Web Worker, yang memungkinkan Anda membuat penangan asinkron yang dieksekusi di thread terpisah. Untuk menyembunyikan seluk-beluk pengorganisasian pekerjaan dengan aliran di atas API berbasis Web Worker, versi antarmuka program berdasarkan mekanisme Promise juga sedang dikembangkan.

Data yang disimpan aplikasi web di SQLite versi WASM dapat dilokalkan dalam sesi saat ini (hilang setelah halaman dimuat ulang) atau disimpan di sisi klien (disimpan di antara sesi). Untuk penyimpanan permanen, backend telah disiapkan untuk menempatkan data di sistem file lokal menggunakan OPFS (Origin-Private FileSystem, ekstensi dari File System Access API, saat ini hanya tersedia di browser berbasis WebKit dan Chromium) dan di penyimpanan browser lokal berbasis pada API window.localStorage dan window.sessionStorage. Saat menggunakan localStorage/sessionStorage, data tercermin dalam penyimpanan terkait dalam format kunci/nilai, dan saat menggunakan OPFS, ada dua opsi: simulasi FS virtual menggunakan WASMFS dan implementasi terpisah dari sqlite3_vfs, menawarkan lapisan VFS SQLite berbasis pada OPFS.

Untuk membangun SQLite menjadi tampilan WASM, kompiler Emscripten digunakan (cukup untuk membangun ekstensi ext/wasm: β€œ./configure β€”enable-all; make sqlite3.c; cd ext/wasm; make”). Outputnya adalah file sqlite3.js dan sqlite3.wasm, yang dapat disertakan dalam proyek JavaScript Anda (contoh HTML dan JavaScript).

Sumber: opennet.ru

Tambah komentar