2 points par GN⁺ 2024-10-16 | 1 commentaires | Partager sur WhatsApp
  • Permet d’utiliser sqlite3 dans les navigateurs modernes prenant en charge WASM
  • La bêta publique initiale a commencé avec la version 3.40, et l’API devrait être stabilisée dans la version 3.41 en fonction des retours de la communauté

Cas d’utilisation concrets

  • Déjà utilisé par divers projets tels que SQLime, Evolu et SQLiteNext
  • Parmi les projets connexes figurent sql.js d’Alon Zakai, wa-sqlite de Roy Hashimoto et absurd-js de James Long

Résumé de GN⁺

  • Les API sqlite3 WASM et JavaScript constituent un projet important qui permet d’utiliser des bases de données sqlite3 dans les navigateurs web
  • Elles fournissent diverses recettes de code client et des modifications d’API, offrant ainsi des informations utiles aux développeurs
  • La comparaison avec des projets connexes permet de mieux comprendre l’originalité et l’utilité de ce projet
  • Des projets aux fonctionnalités similaires, comme sql.js et wa-sqlite, sont également recommandés

1 commentaires

 
GN⁺ 2024-10-16
Avis Hacker News
  • L’idée d’exécuter SQLite dans la mémoire du navigateur et d’utiliser des astuces avec Litestream et Cloudflare Durable Objects pour streamer les logs WAL vers le serveur est intéressante

    • Il est possible de reconstruire la base de données côté client à partir des données côté serveur
    • Le mode WAL est exclu par défaut du build SQLite WASM, ce qui nécessite une personnalisation
  • La version récente de SQLite est la 3.46.1, mais la page n’a pas été mise à jour, ce qui crée de la confusion sur la stabilité de l’API

    • Ce serait bien que l’équipe SQLite fournisse un paquet npm officiel incluant la version WASM
  • La version SQLite-in-WASM de Pyodide est personnellement préférée

    • Pyodide fournit gratuitement SQLite en WASM comme partie de la bibliothèque standard Python
    • La version actuelle de SQLite dans Pyodide est la 3.39.0, et une mise à jour est nécessaire
  • Utiliser SQLite dans un environnement local-first semble lourd

    • Utiliser les API de stockage natives du navigateur, en particulier IndexedDB, est plus efficace
    • Il faut une solution open source offrant une API similaire à SQLite
  • En Golang, le paquet wasm SQLite de ncruces est bon

    • Il fonctionne bien dans des environnements comme OpenBSD
  • Quelqu’un a essayé d’utiliser SQLite dans l’écosystème Rust, mais les wrappers actuellement compatibles sont insuffisants

    • Il est difficile de rendre le code wasm emscripten compatible avec wasm32-unknown-unknown
  • Certains se demandent si SQLite peut remplacer IndexedDB

    • Il y a des questions sur la persistance des données et sur la nécessité de les stocker via l’API de système de fichiers ou dans IndexedDB/le stockage local
  • La taille minimale des dépendances pour SQLite WASM est d’environ 1,3 Mo

    • C’est un peu volumineux pour une app dans le navigateur, mais cela peut convenir dans d’autres environnements
  • Il y a l’avis que si WebSQL avait été SQLite, l’écosystème du stockage offline-first et du stockage d’apps en général aurait été meilleur

    • Il serait bon que le navigateur spécifie la prise en charge de l’API SQLite
  • Une bibliothèque SQLite s’exécutant en pur JVM a été créée avec SQLite en build WASM et le runtime Chicory

    • C’est un projet expérimental qui pourrait fournir à l’écosystème JVM des outils SQLite sans dépendances
  • Il est prévu d’intégrer SQLite à exaequOS.com