2 điểm bởi GN⁺ 2024-10-16 | 1 bình luận | Chia sẻ qua WhatsApp
  • Cho phép sử dụng sqlite3 trong các trình duyệt hiện đại hỗ trợ WASM
  • Bản beta công khai ban đầu bắt đầu từ phiên bản 3.40, và API dự kiến sẽ được ổn định trong bản phát hành 3.41 dựa trên phản hồi từ cộng đồng

Các trường hợp sử dụng thực tế

  • Đang được sử dụng trong nhiều dự án như SQLime, Evolu, SQLiteNext
  • Các dự án liên quan gồm có sql.js của Alon Zakai, wa-sqlite của Roy Hashimoto, absurd-js của James Long

Tóm tắt của GN⁺

  • sqlite3 WASM và API JavaScript là một dự án quan trọng giúp có thể sử dụng cơ sở dữ liệu sqlite3 trong trình duyệt web
  • Cung cấp nhiều công thức mã phía client và các thay đổi API, mang lại thông tin hữu ích cho nhà phát triển
  • Việc so sánh với các dự án liên quan giúp hiểu được tính độc đáo và hữu ích của dự án này
  • Các dự án được khuyến nghị có chức năng tương tự gồm sql.js, wa-sqlite

1 bình luận

 
GN⁺ 2024-10-16
Ý kiến trên Hacker News
  • Ý tưởng chạy SQLite trong bộ nhớ của trình duyệt và dùng các mẹo của Litestream cùng Cloudflare Durable Objects để stream log WAL lên máy chủ khá thú vị

    • Có thể tái dựng cơ sở dữ liệu phía client bằng dữ liệu phía server
    • Chế độ WAL bị loại khỏi bản dựng SQLite WASM mặc định, nên cần tùy biến riêng
  • Bản phát hành gần đây của SQLite là 3.46.1, nhưng trang này chưa được cập nhật nên gây nhầm lẫn về độ ổn định của API

    • Sẽ rất tốt nếu nhóm SQLite cung cấp gói npm chính thức bao gồm cả phiên bản WASM
  • Cá nhân tôi thích phiên bản SQLite-in-WASM của Pyodide hơn

    • Pyodide cung cấp WASM SQLite miễn phí như một phần của thư viện chuẩn Python
    • Hiện phiên bản SQLite trong Pyodide là 3.39.0 và cần được cập nhật
  • Việc dùng SQLite trong môi trường local-first có cảm giác khá nặng

    • Dùng API lưu trữ gốc của trình duyệt, đặc biệt là IndexedDB, sẽ hiệu quả hơn
    • Cần một giải pháp mã nguồn mở cung cấp API tương tự SQLite
  • Trong Golang, gói wasm SQLite của ncruces khá tốt

    • Nó hoạt động ổn trong các môi trường như OpenBSD
  • Đã từng thử dùng SQLite trong hệ sinh thái Rust, nhưng hiện còn thiếu các wrapper hỗ trợ phù hợp

    • Việc làm cho mã wasm của emscripten tương thích với wasm32-unknown-unknown là rất khó
  • Có người thắc mắc liệu SQLite có thể thay thế IndexedDB hay không

    • Có câu hỏi về việc dữ liệu có được duy trì hay phải lưu vào File System API hoặc IndexedDB/local storage
  • Kích thước phụ thuộc tối thiểu của SQLite WASM là khoảng 1.3MB

    • Với ứng dụng chạy trong trình duyệt thì hơi lớn, nhưng trong các môi trường khác có thể chấp nhận được
  • Có ý kiến cho rằng nếu WebSQL là SQLite thì hệ sinh thái lưu trữ cho ứng dụng thông thường và offline-first đã tốt hơn

    • Sẽ tốt hơn nếu trình duyệt được quy định phải hỗ trợ API SQLite
  • Đã tạo một thư viện SQLite chạy thuần JVM bằng cách dùng SQLite bản dựng WASM và runtime Chicory

    • Đây là một dự án thử nghiệm, có thể mang lại công cụ SQLite không phụ thuộc gì cho hệ sinh thái JVM
  • Có kế hoạch tích hợp SQLite vào exaequOS.com