2 poin oleh GN⁺ 2024-10-16 | 1 komentar | Bagikan ke WhatsApp
  • Memungkinkan penggunaan sqlite3 di browser modern yang mendukung WASM
  • Beta publik awal dimulai pada versi 3.40, dan API dijadwalkan distabilkan pada rilis 3.41 berdasarkan masukan komunitas

Kasus penggunaan nyata

  • Sudah digunakan di berbagai proyek seperti SQLime, Evolu, dan SQLiteNext
  • Proyek terkait mencakup sql.js karya Alon Zakai, wa-sqlite karya Roy Hashimoto, dan absurd-js karya James Long

Ringkasan GN⁺

  • API sqlite3 WASM dan JavaScript adalah proyek penting yang memungkinkan penggunaan database sqlite3 di browser web
  • Menyediakan berbagai resep kode klien dan perubahan API, sehingga memberi informasi yang berguna bagi pengembang
  • Perbandingan dengan proyek terkait membantu memahami keunikan dan kegunaan proyek ini
  • Proyek dengan fungsi serupa yang direkomendasikan antara lain sql.js dan wa-sqlite

1 komentar

 
GN⁺ 2024-10-16
Opini Hacker News
  • Ide menjalankan SQLite di memori dalam browser dan menggunakan trik dari Litestream serta Cloudflare Durable Objects untuk melakukan streaming log WAL ke server cukup menarik

    • Basis data sisi klien dapat direkonstruksi menggunakan data sisi server
    • Mode WAL dikecualikan dari build SQLite WASM bawaan, sehingga perlu kustomisasi
  • Rilis terbaru SQLite adalah 3.46.1, tetapi halamannya belum diperbarui sehingga menimbulkan kebingungan soal stabilitas API

    • Akan bagus jika tim SQLite menyediakan paket npm resmi yang mencakup versi WASM
  • Secara pribadi lebih menyukai versi SQLite-in-WASM dari Pyodide

    • Pyodide menyediakan WASM SQLite secara gratis sebagai bagian dari pustaka standar Python
    • Saat ini versi SQLite di Pyodide adalah 3.39.0, sehingga pembaruan versi diperlukan
  • Menggunakan SQLite dalam lingkungan local-first terasa cukup berat

    • Menggunakan API penyimpanan bawaan browser, terutama IndexedDB, lebih efisien
    • Diperlukan solusi open source yang menyediakan API mirip SQLite
  • Di Golang, paket wasm SQLite dari ncruces bagus

    • Berjalan baik di lingkungan seperti OpenBSD
  • Pernah mencoba menggunakan SQLite di ekosistem Rust, tetapi saat ini wrapper yang mendukung masih kurang

    • Sulit membuat kode wasm emscripten kompatibel dengan wasm32-unknown-unknown
  • Bertanya-tanya apakah SQLite bisa menjadi pengganti IndexedDB

    • Ada pertanyaan apakah data akan tetap persisten, dan apakah perlu disimpan ke File System API atau IndexedDB/local storage
  • Ukuran dependensi minimum SQLite WASM sekitar 1.3MB

    • Untuk aplikasi dalam browser ini agak besar, tetapi di lingkungan lain bisa jadi sesuai
  • Ada pendapat bahwa jika WebSQL adalah SQLite, ekosistem penyimpanan aplikasi umum dan offline-first akan menjadi lebih baik

    • Akan bagus jika browser secara eksplisit mendukung API SQLite
  • Membuat pustaka SQLite yang berjalan murni di JVM dengan menggunakan SQLite dari build WASM dan runtime Chicory

    • Ini adalah proyek eksperimental yang dapat menyediakan alat SQLite tanpa dependensi untuk ekosistem JVM
  • Berencana menyertakan SQLite di exaequOS.com