Pare de construir bancos de dados
(sqlsync.dev)A complexidade da gestão de dados
- Engenheiros de frontend acabam percebendo a necessidade de armazenar em cache os dados da API.
- No começo, tudo começa com um armazenamento simples de dados, mas, à medida que os pedidos de funcionalidades aumentam, acabam implementando cache de dados, índices manuais, mutações otimistas (
optimistic mutations), invalidação recursiva de cache e assim por diante. - Esses recursos se parecem com o funcionamento interno de um banco de dados e, em aplicações frontend complexas, no fim das contas você acaba criando um banco de dados especializado no domínio.
O básico do cache
- Tudo começa salvando o resultado de uma requisição de API em uma variável local.
- Em aplicações web que usam frameworks declarativos, os dados são guardados em variáveis para evitar requisições desnecessárias à API.
- O passo seguinte é mover o cache para uma camada mais alta ou para fora da árvore de UI.
Ganho de velocidade com índices
- Ao organizar os dados de uma forma específica, é possível reduzir o trabalho da aplicação e melhorar a experiência do usuário.
- Percebe-se que a otimização de dados no frontend é parecida com o funcionamento interno do armazenamento de um banco de dados.
- A estrutura de dados é aprimorada ao armazenar dados por ID e criar índices que permitem consultar itens rapidamente por data.
Mutações otimistas
- Consiste em simular localmente o efeito de uma determinada ação sem esperar a resposta do servidor.
- Isso faz parecer que a interface do usuário responde imediatamente, mas, se o resultado no servidor for diferente, a UI precisa reverter a alteração.
- Há desafios como duplicar a lógica entre cliente e servidor, lidar com erros assíncronos e reconciliar alterações mesmo após reinicializações da aplicação.
Invalidação recursiva de cache
- Os dados aparecem em vários pontos do cache, e é necessário invalidá-lo corretamente após atualizações para manter a consistência com o servidor.
- A UI precisa saber quais partes do cache estão relacionadas a cada mutação, e isso pode se tornar frágil à medida que o sistema cresce.
- Quando combinado com mutações otimistas, fica ainda mais difícil duplicar a lógica do servidor no cliente para prever mudanças no servidor.
Está construindo um banco de dados?
- Em aplicações frontend com complexidade suficiente, você inevitavelmente acaba construindo muitos recursos de gestão de dados, o que tira tempo de agradar os usuários e resolver problemas de negócio.
- O texto propõe uma alternativa na forma de uma stack de banco de dados otimizada para frontend.
Apresentando o SQLSync
- Foi desenvolvido o SQLSync, uma stack de banco de dados otimizada para frontend baseada em SQLite.
- O SQLSync foi projetado para resolver problemas de gestão de dados e permitir que desenvolvedores foquem nas funcionalidades únicas da aplicação.
- O SQLSync oferece cache durável, todos os recursos do SQLite, mutações otimistas, invalidação inteligente de cache e consultas reativas.
Opinião do GN⁺
O ponto mais importante deste texto é o fenômeno de que, à medida que a complexidade das aplicações frontend aumenta, desenvolvedores acabam implementando por conta própria recursos parecidos com os de um banco de dados. Esse trabalho consome tempo dos desenvolvedores e os afasta da criação de funcionalidades que realmente entregam valor aos usuários. Stacks de banco de dados otimizadas para frontend, como o SQLSync, apresentam uma abordagem inovadora para resolver esse problema. O motivo pelo qual este texto é interessante é que ele aponta um problema fundamental nos métodos tradicionais de gestão de dados e busca uma nova solução para que desenvolvedores possam trabalhar de forma mais eficiente.
1 comentários
Opinião do Hacker News
Entendimento sobre o amigo criador do projeto
Experiência com software de gerenciamento de projetos em uma empresa anterior
Problemas que desaparecem ao abandonar SPAs
Opinião do criador do SQLSync
Não dar aos usuários um modelo mental diferente da realidade
O princípio de que o que é mensurável é gerenciado e a falácia do custo afundado
O problema da sincronização de estado entre cliente e servidor
Comparação com bibliotecas ORM
Diferença entre bancos de dados de front-end e back-end
Tentativa semelhante com o SignalDB