Simon Willison testa histórico SQLite que comprime 20.4 MB em 80.3 KB
Protótipos guardam versões anteriores de textos em JSON comprimido e dividem históricos longos em blocos.
Protótipos guardam versões anteriores de textos em JSON comprimido e dividem históricos longos em blocos.
Simon Willison publicou em 9th August 2026 protótipos que guardam o histórico de edições de textos em SQLite usando JSON comprimido. Em uma simulação com 1,000 revisões, o sistema reduziu 20.4 MB de texto bruto para 80.3 KB com Zstandard. A técnica interessa a quem precisa manter versões anteriores em bancos relacionais sem gravar uma cópia completa do documento a cada edição.
A ideia coloca todas as versões anteriores em um único array JSON de strings e comprime o conjunto com zlib ou Zstandard. Uma segunda coluna guarda os carimbos de tempo como outro array JSON de inteiros Unix. O texto atual fica separado do histórico.
O método compara duas implementações. WholeBlobHistoryStore reescreve um blob comprimido a cada edição, enquanto ChunkedHistoryStore fecha blocos comprimidos para lidar melhor com históricos longos. O primeiro simplifica o armazenamento, mas precisa descomprimir e recomprimir o array inteiro sempre que alguém altera o texto.
A simulação sustenta a economia de espaço, mas não prova desempenho em produção. Willison escreveu que a abordagem “works really well”, porém o comunicado não apresenta comparação independente, tempo de consulta ou teste com concorrência real.
Para reduzir o custo de cada atualização, o protótipo criado por GPT-5.6 Sol Pro divide o histórico em linhas. Cada bloco aceita no máximo 128 revisões ou 3MB de JSON sem compressão. O sistema escolhe o limite que atingir primeiro.
As duas implementações preservam o texto anterior e os carimbos de tempo. Elas também ignoram, por padrão, substituições que não mudam o conteúdo. A atualização usa BEGIN IMMEDIATE, comando que serializa escritores e mantém a alteração atômica.
Willison discutiu a proposta com o modo de voz GPT‑Live no aplicativo ChatGPT para iPhone antes de pedir o código. Depois, ele encerrou a conversa por voz e enviou um prompt de texto ao GPT-5.6 Sol Pro: “Use Python and Build experimental prototypes around this idea”. O modelo levou 38 minutos para entregar a resposta e os arquivos que acompanham o projeto.
O resultado não aparece como recurso pronto de SQLite nem como produto do ChatGPT. Willison publicou protótipos experimentais no repositório simonw/research, no caminho sqlite-text-history-prototype, com o código e a documentação do projeto. O acesso depende de consultar esse material e reproduzir os testes em Python.
A própria conversa por voz também tem uma limitação declarada: o ChatGPT ainda não permite compartilhar URLs de conversas de voz. Por isso, Willison copiou a transcrição para a publicação. A limitação afeta o registro público do processo, não o mecanismo de histórico criado para SQLite.
O experimento mostra um uso direto de modelos para explorar uma estrutura de banco: GPT‑Live ajudou a formular a ideia, e GPT-5.6 Sol Pro produziu os protótipos. O dado comprovado é a redução obtida na simulação de 1,000 revisões; a afirmação de que o desenho escala melhor ainda depende de testes fora desse cenário.