Menambah sokongan SQLite WASM untuk menggunakan DBMS dalam pelayar web

SQLite

ialah sistem pengurusan pangkalan data hubungan yang mematuhi ACID, yang terkandung dalam perpustakaan yang agak kecil yang ditulis dalam C

The Pembangun SQLite sedang membangunkan projek untuk dilaksanakan keupayaan untuk menyusun perpustakaan menjadi a kod WebAssembly perantaraan yang boleh dijalankan dalam pelayar web dan sesuai untuk mengatur kerja dengan pangkalan data daripada aplikasi web dalam bahasa JavaScript.

Objektifnya projek adalah untuk menyediakan pautan JavaScript berfungsi yang sama dalam fungsi dengan API SQLite. Pembangun web dibekalkan dengan antara muka berorientasikan objek peringkat tinggi untuk bekerja dengan data dalam gaya sql.js atau Node.js, membungkus API C peringkat rendah dan API berdasarkan mekanisme Pekerja Web yang membolehkan untuk mencipta tak segerak pengawal. yang dijalankan pada benang berasingan.

Untuk menyembunyikan kerumitan threading melalui API berasaskan Pekerja Web, Satu varian daripada antara muka pengaturcaraan berdasarkan mekanisme Janji.

Data yang disimpan oleh aplikasi web dalam versi WASM SQLite boleh didapati dalam sesi semasa (hilang selepas muat semula halaman) atau berterusan pada sisi klien (berterusan merentas sesi).

Untuk storan kekal, hujung belakang telah disediakan untuk meletakkan data pada sistem fail tempatan menggunakan OPFS (Origin-Private FileSystem, sambungan kepada API Akses Sistem Fail, pada masa ini hanya tersedia dalam penyemak imbas berasaskan WebKit dan Chromium) dan storan setempat penyemak imbas berdasarkan API window.localStorage dan window.sessionStorage.

Apabila menggunakan localStorage/sessionStorage, data dipetakan ke stor kunci/nilai yang sesuai, manakala apabila menggunakan OPFS, terdapat dua pilihan: mensimulasikan FS maya menggunakan WASMFS dan pelaksanaan sqlite3_vfs berasingan yang menawarkan lapisan VFS berasaskan SQLite. dalam OPFS .

Pengkompil Emscripten digunakan untuk membina SQLite dalam perwakilan WASM. Hasilnya ialah fail sqlite3.js dan sqlite3.wasm yang boleh anda sertakan dalam projek JavaScript anda (contoh HTML dan JavaScript).

daripada objektif khusus projek ini disebut:

Kecuali jika dinyatakan dalam bukan sasaran, sediakan pembalut ciri yang lebih kurang lengkap untuk API sqlite3 C, setakat yang pariti ciri WASM dengan C membenarkan. Malah, sediakan sekurang-kurangnya API berikut .

  • Ikat API sqlite3 tahap rendah yang sedekat mungkin dengan asli dari segi penggunaan.
  • API OO tahap yang lebih tinggi, lebih seperti pelaksanaan gaya sql.js dan node.js.
  • API berasaskan pekerja yang berkomunikasi dengan API di atas melalui mesej pekerja. Ini direka bentuk untuk digunakan pada utas utama, dengan API peringkat rendah dipasang pada utas pekerja dan berkomunikasi dengan mereka melalui mesej pekerja.
  • Varian API Pekerja berasaskan Promise yang menyembunyikan sepenuhnya aspek komunikasi antara benang pengguna.
  • Setakat yang mungkin, sokong storan berterusan pihak pelanggan menggunakan API JS yang tersedia. Pada masa penulisan ini, itu termasuk Sistem Fail Peribadi Sumber (OPFS) dan storan (sangat terhad) melalui hujung belakang window.localStorage dan .window.sessionStorage

Bagi yang objektif bukan khusus:

  • Memandangkan WASM ialah teknologi tertumpu kepada web dan UTF-8 ialah raja pengekodan dalam alam itu, tiada rancangan semasa untuk menyokong API sqlite3 berkaitan UTF16.
  • Walaupun sokongan untuk masa jalan WASM di luar penyemak imbas meluas, projek ini pada masa ini (akhir 2022) tertumpu pada sasaran penyemak imbas sahaja. Walaupun butiran pelaksanaan berkaitan web diutamakan, dan komponen JavaScript API memfokuskan secara khusus pada klien penyemak imbas, modul WASM peringkat rendah "harus" berfungsi dalam persekitaran WASM bukan web.
  • Keserasian dengan platform lama atau khusus. WASM direka untuk web moden dan memerlukan platform moden. Begitu juga, pilihan perpustakaan sqlite3 yang tidak digunakan akan dialih keluar daripada antara muka WASM sepenuhnya.

Kod untuk sokongan WebAssembly telah ditambahkan pada repositori utama projek. Tidak seperti API WebSQL, yang berasaskan SQLite, WASM SQLite diasingkan sepenuhnya daripada penyemak imbas dan tidak menjejaskan keselamatannya (Google memutuskan untuk menggugurkan sokongan untuk WebSQL dalam Chrome selepas beberapa kelemahan dalam SQLite yang boleh dieksploitasi melalui WebSQL untuk menyerang Navigator ).

akhirnya jika anda berminat untuk mengetahui lebih lanjut mengenainya, anda boleh menyemak perinciannya Dalam pautan berikut.


Tinggalkan komen anda

Alamat email anda tidak akan disiarkan. Ruangan yang diperlukan ditanda dengan *

*

*

  1. Bertanggungjawab untuk data: AB Internet Networks 2008 SL
  2. Tujuan data: Mengendalikan SPAM, pengurusan komen.
  3. Perundangan: Persetujuan anda
  4. Komunikasi data: Data tidak akan disampaikan kepada pihak ketiga kecuali dengan kewajiban hukum.
  5. Penyimpanan data: Pangkalan data yang dihoskan oleh Occentus Networks (EU)
  6. Hak: Pada bila-bila masa anda boleh menghadkan, memulihkan dan menghapus maklumat anda.