Adicionado suporte SQLite WASM para usar o DBMS em um navegador da web

SQLite

é um sistema de gerenciamento de banco de dados relacional compatível com ACID, contido em uma biblioteca relativamente pequena escrita em C

Os Desenvolvedores SQLite estão desenvolvendo um projeto para implementar a capacidade de compilar a biblioteca em um código WebAssembly intermediário que pode ser executado em um navegador da Web e é adequado para organizar o trabalho com o banco de dados de aplicativos da Web na linguagem JavaScript.

O objetivo projeto é fornecer um link JavaScript funcional que é idêntica em funcionalidade à API SQLite. Os desenvolvedores da Web são fornecidos com uma interface orientada a objetos de alto nível para trabalhar com dados no estilo sql.js ou Node.js, envolvendo uma API C de baixo nível e uma API baseada no mecanismo Web Worker que permite a criação assíncrona controladores que são executados em threads separados.

Para ocultar as complexidades do encadeamento na API baseada em Web Worker, Uma variante de a interface de programação baseada no mecanismo Promessa.

Os dados que os aplicativos da Web armazenam na versão WASM do SQLite podem ser localizados na sessão atual (perdidos após o recarregamento da página) ou persistidos no lado do cliente (persistentes nas sessões).

Para armazenamento permanente, os backends foram preparados para colocar dados em um sistema de arquivos local usando OPFS (Origin-Private FileSystem, extensão para a API de acesso ao sistema de arquivos, atualmente disponível apenas em navegadores baseados em WebKit e Chromium) e armazenamento local do navegador com base nas APIs window.localStorage e window.sessionStorage.

Ao usar localStorage/sessionStorage, os dados são mapeados para os armazenamentos de chave/valor apropriados, enquanto ao usar OPFS, há duas opções: simular um FS virtual usando WASMFS e uma implementação sqlite3_vfs separada que oferece uma camada VFS baseada em SQLite. .

O compilador Emscripten é usado para construir SQLite em uma representação WASM. O resultado são arquivos sqlite3.js e sqlite3.wasm que você pode incluir em seu projeto JavaScript (amostra HTML e JavaScript).

dos objetivos específicos deste projeto são mencionados:

Exceto onde indicado nos não-destinos, forneça um wrapper mais ou menos completo de recursos para a API C do sqlite3, na medida em que a paridade de recursos do WASM com C. Na verdade, forneça pelo menos as seguintes APIs .

  • Vincule uma API sqlite3 de baixo nível que seja o mais próxima possível da nativa em termos de uso.
  • Uma API OO de nível superior, mais parecida com as implementações de estilo sql.js e node.js.
  • Uma API baseada no trabalhador que se comunica com as APIs acima por meio de mensagens do trabalhador. Isso foi projetado para ser usado no encadeamento principal, com APIs de nível inferior instaladas em um encadeamento de trabalho e se comunicar com eles por meio de mensagens de trabalho.
  • Uma variante baseada em Promise da API do Trabalhador que oculta completamente os aspectos de comunicação entre threads do usuário.
  • Na medida do possível, dê suporte ao armazenamento persistente do lado do cliente usando APIs JS disponíveis. No momento da redação deste artigo, isso inclui Source Private File System (OPFS) e armazenamento (muito limitado) por meio dos back-ends window.localStorage e .window.sessionStorage

Quanto a objetivos não específicos:

  • Como o WASM é uma tecnologia centrada na Web e o UTF-8 é o rei das codificações nesse domínio, não há planos atuais para oferecer suporte a APIs sqlite3 relacionadas a UTF16.
  • Embora o suporte para tempos de execução WASM fora do navegador seja generalizado, este projeto está atualmente (final de 2022) focado apenas em destinos de navegador. Embora os detalhes de implementação relacionados à web tenham precedência e os componentes JavaScript da API se concentrem especificamente em clientes de navegador, o módulo WASM de nível inferior "deve" funcionar em ambientes WASM não web.
  • Compatibilidade com plataformas antigas ou de nicho. O WASM foi projetado para uma web moderna e requer plataformas modernas. Da mesma forma, as opções de biblioteca sqlite3 obsoletas serão removidas totalmente da interface WASM.

O código para suporte ao WebAssembly foi adicionado ao repositório principal do projeto. Ao contrário da API WebSQL, que é baseada em SQLite, o WASM SQLite é completamente isolado do navegador e não afeta sua segurança (o Google decidiu abandonar o suporte para WebSQL no Chrome após várias vulnerabilidades no SQLite que poderiam ser exploradas através do WebSQL para atacar o Navigator ).

finalmente se você está interessado em aprender mais sobre isso, você pode verificar os detalhes no link a seguir.


Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: AB Internet Networks 2008 SL
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.