Menambahkan dukungan WASM SQLite untuk menggunakan DBMS di browser web

SQLite

adalah sistem manajemen basis data relasional yang sesuai dengan ACID, terdapat dalam pustaka yang relatif kecil yang ditulis dalam bahasa C

Los Pengembang SQLite sedang mengembangkan proyek untuk diimplementasikan kemampuan untuk mengkompilasi perpustakaan menjadi kode WebAssembly perantara yang dapat dijalankan di browser web dan cocok untuk mengatur pekerjaan dengan database dari aplikasi web dalam bahasa JavaScript.

Objektif dari proyek tersebut adalah menyediakan tautan JavaScript fungsional yang identik dalam fungsionalitas dengan SQLite API. Pengembang web dilengkapi dengan antarmuka berorientasi objek tingkat tinggi untuk bekerja dengan data dalam gaya sql.js atau Node.js, membungkus C API tingkat rendah dan API berdasarkan mekanisme Web Worker yang memungkinkan untuk membuat asinkron controller yang berjalan pada thread yang terpisah.

Untuk menyembunyikan kerumitan threading melalui API berbasis Web Worker, Sebuah varian dari antarmuka pemrograman berdasarkan mekanisme Janji.

Data yang disimpan aplikasi web di SQLite versi WASM dapat ditemukan dalam sesi saat ini (hilang setelah halaman dimuat ulang) atau disimpan di sisi klien (bertahan di seluruh sesi).

Untuk penyimpanan permanen, backend telah disiapkan untuk menempatkan data pada sistem file lokal menggunakan OPFS (Origin-Private FileSystem, ekstensi ke File System Access API, saat ini hanya tersedia di browser berbasis WebKit dan Chromium) dan penyimpanan lokal browser berdasarkan window.localStorage dan window.sessionStorage API.

Saat menggunakan localStorage/sessionStorage, data dipetakan ke penyimpanan kunci/nilai yang sesuai, sedangkan saat menggunakan OPFS, ada dua opsi: mensimulasikan FS virtual menggunakan WASMFS, dan implementasi sqlite3_vfs terpisah yang menawarkan lapisan VFS berbasis SQLite di OPFS .

Kompiler Emscripten digunakan untuk membangun SQLite dalam representasi WASM. Hasilnya adalah file sqlite3.js dan sqlite3.wasm yang dapat Anda sertakan dalam proyek JavaScript Anda (contoh HTML dan JavaScript).

dari tujuan khusus dari proyek ini disebutkan:

Kecuali jika disebutkan dalam non-target, berikan fitur pembungkus yang kurang lebih lengkap untuk sqlite3 C API, sejauh yang memungkinkan paritas fitur WASM dengan C. Bahkan, sediakan setidaknya API berikut .

  • Ikat API sqlite3 tingkat rendah yang sedekat mungkin dengan yang asli dalam hal penggunaan.
  • API OO tingkat yang lebih tinggi, lebih seperti implementasi gaya sql.js dan node.js.
  • API berbasis pekerja yang berkomunikasi dengan API di atas melalui pesan pekerja. Ini dirancang untuk digunakan pada utas utama, dengan API tingkat rendah yang diinstal pada utas pekerja, dan berkomunikasi dengan mereka melalui pesan pekerja.
  • Varian Worker API berbasis Janji yang sepenuhnya menyembunyikan aspek komunikasi antar-utas pengguna.
  • Sedapat mungkin, dukung penyimpanan persisten sisi klien menggunakan JS API yang tersedia. Pada saat penulisan ini, itu termasuk Source Private File System (OPFS) dan penyimpanan (sangat terbatas) melalui backend window.localStorage dan .window.sessionStorage

Adapun tujuan non-spesifik:

  • Karena WASM adalah teknologi web-centric dan UTF-8 adalah raja pengkodean di ranah itu, tidak ada rencana saat ini untuk mendukung API sqlite3 terkait UTF16.
  • Meskipun dukungan untuk runtime WASM di luar browser tersebar luas, proyek ini saat ini (akhir 2022) hanya berfokus pada target browser. Meskipun detail implementasi terkait web diutamakan, dan komponen JavaScript API berfokus secara khusus pada klien browser, modul WASM tingkat rendah "harus" berfungsi di lingkungan WASM non-web.
  • Kompatibilitas dengan platform lama atau niche. WASM dirancang untuk web modern dan membutuhkan platform modern. Demikian pula, opsi pustaka sqlite3 yang tidak digunakan lagi akan dihapus sepenuhnya dari antarmuka WASM.

Kode untuk dukungan WebAssembly telah ditambahkan ke repositori utama proyek. Tidak seperti WebSQL API, yang didasarkan pada SQLite, WASM SQLite sepenuhnya terisolasi dari browser dan tidak mempengaruhi keamanannya (Google memutuskan untuk menghentikan dukungan untuk WebSQL di Chrome setelah beberapa kerentanan dalam SQLite yang dapat dieksploitasi melalui WebSQL untuk menyerang Navigator ).

akhirnya jika kamu tertarik untuk mempelajarinya lebih lanjut, Anda dapat memeriksa detailnya Di tautan berikut.


tinggalkan Komentar Anda

Alamat email Anda tidak akan dipublikasikan. Bidang yang harus diisi ditandai dengan *

*

*

  1. Bertanggung jawab atas data: AB Internet Networks 2008 SL
  2. Tujuan data: Mengontrol SPAM, manajemen komentar.
  3. Legitimasi: Persetujuan Anda
  4. Komunikasi data: Data tidak akan dikomunikasikan kepada pihak ketiga kecuali dengan kewajiban hukum.
  5. Penyimpanan data: Basis data dihosting oleh Occentus Networks (UE)
  6. Hak: Anda dapat membatasi, memulihkan, dan menghapus informasi Anda kapan saja.