2 pontos por GN⁺ 2024-10-16 | 1 comentários | Compartilhar no WhatsApp
  • Permite usar o sqlite3 em navegadores modernos com suporte a WASM
  • A beta pública inicial começou na versão 3.40, e a API deve ser estabilizada na versão 3.41 com base no feedback da comunidade

Casos reais de uso

  • Já está em uso em vários projetos, como SQLime, Evolu e SQLiteNext
  • Projetos relacionados incluem sql.js de Alon Zakai, wa-sqlite de Roy Hashimoto e absurd-js de James Long

Resumo do GN⁺

  • O sqlite3 WASM e a API JavaScript são um projeto importante que permite usar bancos de dados sqlite3 em navegadores web
  • Fornecem várias receitas de código cliente e mudanças na API, oferecendo informações úteis para desenvolvedores
  • A comparação com projetos relacionados ajuda a entender a originalidade e a utilidade deste projeto
  • Projetos recomendados com funcionalidades semelhantes incluem sql.js e wa-sqlite

1 comentários

 
GN⁺ 2024-10-16
Comentários do Hacker News
  • A ideia de executar o SQLite na memória do navegador e usar truques do Litestream e do Cloudflare Durable Objects para transmitir os logs WAL ao servidor é interessante

    • É possível reconstruir o banco de dados no lado do cliente usando os dados do servidor
    • O modo WAL está excluído da build padrão do SQLite WASM, então é necessária uma customização
  • A versão mais recente do SQLite é a 3.46.1, mas a página não foi atualizada, o que gera confusão sobre a estabilidade da API

    • Seria bom se a equipe do SQLite oferecesse um pacote oficial no npm incluindo a versão WASM
  • Pessoalmente, a versão SQLite-in-WASM do Pyodide é a preferida

    • O Pyodide fornece SQLite em WASM gratuitamente como parte da biblioteca padrão do Python
    • Atualmente, a versão do SQLite no Pyodide é a 3.39.0, e precisa ser atualizada
  • Usar SQLite em um ambiente local-first parece pesado

    • Usar as APIs nativas de armazenamento do navegador, especialmente o IndexedDB, é mais eficiente
    • É necessária uma solução open source que ofereça uma API semelhante à do SQLite
  • No Golang, o pacote wasm SQLite do ncruces é bom

    • Funciona bem em ambientes como o OpenBSD
  • Tentei usar SQLite no ecossistema Rust, mas faltam wrappers com suporte atualmente

    • É difícil tornar o código wasm do emscripten compatível com wasm32-unknown-unknown
  • Há curiosidade sobre se o SQLite pode se tornar uma alternativa ao IndexedDB

    • Há dúvidas sobre se os dados persistem e se precisam ser armazenados na API de sistema de arquivos ou em IndexedDB/local storage
  • O tamanho mínimo das dependências do SQLite WASM é de cerca de 1,3 MB

    • Em apps no navegador isso é um pouco grande, mas em outros ambientes pode ser adequado
  • Há a opinião de que, se o WebSQL tivesse sido SQLite, o ecossistema de armazenamento para apps em geral e offline-first teria sido melhor

    • Seria bom explicitar que o navegador deve oferecer suporte à API do SQLite
  • Foi criada uma biblioteca SQLite para execução pura em JVM usando o SQLite da build WASM e o runtime Chicory

    • Como projeto experimental, isso pode fornecer uma ferramenta SQLite sem dependências para o ecossistema JVM
  • Há planos de incluir o SQLite no exaequOS.com