2 ポイント 投稿者 GN⁺ 2024-10-16 | 1件のコメント | WhatsAppで共有
  • sqlite3をモダンなWASM対応ブラウザで利用できるようにする
  • 初期の公開ベータはバージョン3.40で始まり、コミュニティのフィードバックに基づいて3.41リリースでAPIを安定化する予定

実際のユースケース

  • SQLime、Evolu、SQLiteNext などさまざまなプロジェクトで使用中
  • 関連プロジェクトには、Alon Zakaiの sql.js、Roy Hashimotoの wa-sqlite、James Longの absurd-js などがある

GN⁺のまとめ

  • sqlite3 WASM と JavaScript API は、Webブラウザで sqlite3 データベースを利用できるようにする重要なプロジェクト
  • さまざまなクライアントコードのレシピとAPI変更点を提供し、開発者に有用な情報を提供する
  • 関連プロジェクトとの比較を通じて、このプロジェクトの独自性と有用性を理解できる
  • 類似機能を持つプロジェクトとして、sql.js、wa-sqlite などが推奨される

1件のコメント

 
GN⁺ 2024-10-16
Hacker Newsの意見
  • SQLiteをブラウザ内メモリで実行し、LitestreamとCloudflare Durable Objectsの手法を使ってWALログをサーバーへストリーミングするというアイデアが興味深い

    • サーバー側のデータを使ってクライアント側データベースを再構築できる
    • WALモードはデフォルトのSQLite WASMビルドから除外されているため、カスタマイズが必要
  • SQLiteの最近のリリースは3.46.1だが、ページが更新されておらず、APIの安定性について混乱がある

    • SQLiteチームがWASM版を含む公式npmパッケージを提供してくれるとよい
  • 個人的にはPyodideのSQLite-in-WASM版を好む

    • PyodideはPython標準ライブラリの一部としてWASM版SQLiteを無料で提供している
    • 現在のPyodideのSQLiteバージョンは3.39.0で、バージョン更新が必要
  • ローカルファースト環境でSQLiteを使うのは重く感じられる

    • ブラウザの標準ストレージAPI、特にIndexedDBを使うほうが効率的
    • SQLiteに似たAPIを提供するオープンソースソリューションが必要
  • Golangではncrucesのwasm SQLiteパッケージが良い

    • OpenBSDのような環境でもうまく動作する
  • RustエコシステムでSQLiteを使おうとしたが、現状では対応するラッパーが不足している

    • emscripten wasmコードをwasm32-unknown-unknownと互換にするのは難しい
  • SQLiteがIndexedDBの代替になり得るのか気になる

    • データが永続化されるのか、ファイルシステムAPIやIndexedDB/ローカルストレージに保存する必要があるのかという疑問がある
  • 最小構成でのSQLite WASMの依存サイズは約1.3MB

    • ブラウザ内アプリではやや大きいが、他の環境では妥当かもしれない
  • WebSQLがSQLiteであったなら、オフラインファーストや一般的なアプリストレージのエコシステムはもっと良くなっていたはずだという意見がある

    • SQLite APIをブラウザがサポートするよう明示するのがよい
  • WASMビルドのSQLiteとChicoryランタイムを使って、純粋なJVM実行のSQLiteライブラリを作成した

    • 実験的なプロジェクトであり、JVMエコシステムに依存関係のないSQLiteツールを提供できる可能性がある
  • SQLiteをexaequOS.comに組み込む予定がある