1 pontos por GN⁺ 2025-02-08 | 1 comentários | Compartilhar no WhatsApp
  • SQLite Page Explorer

  • O SQLite Page Explorer é um pequeno aplicativo com GUI desenvolvido com redbean que permite explorar um banco de dados SQLite da forma como o SQLite o enxerga, ou seja, "página por página"

  • Por que isso é necessário?

    • O SQLite e a maioria dos bancos de dados armazenam dados em páginas do tamanho de blocos de disco (geralmente 4 KB) para maximizar a velocidade de leitura e escrita
    • Em geral, desenvolvedores interagem com o banco de dados no "nível de esquema", mas observar o "nível de página" pode trazer insights interessantes, como:
      • Ver como os índices realmente aparecem no disco (basicamente, são pequenas tabelas separadas)
      • Tornar consultas e aplicações mais rápidas ao armazenar dados de forma mais compacta
      • Encontrar problemas e ineficiências que não aparecem no nível de esquema
      • Ganhar intuição sobre estruturas de dados importantes, como B-trees, que são a base da maioria dos sistemas de arquivos e bancos de dados
  • Pode ser executado em qualquer lugar

    • Graças ao redbean, cosmopolitan e αcτµαlly pδrταblε εxεcµταblε, trata-se de um único executável de 6,5 MB que roda nativamente em Windows, Linux, macOS, vários BSDs, ARM64 e x64
    • Esse arquivo é um arquivo zip que inclui o aplicativo e o código Lua que faz o parsing do formato binário do banco de dados
  • Como instalar

    • Baixe sqlite-page-explorer.com em releases
    • Em sistemas Unix, execute chmod +x
    • Arraste o arquivo do banco de dados ou execute no console: sqlite-page-explorer.com mySqliteDatabase.db
    • O aplicativo será aberto em uma aba do navegador
    • Ao terminar, pressione Ctrl-C duas vezes no console
    • αcτµαlly pδrταblε εxεcµταblεs podem confundir os sistemas de detecção de vírus do navegador e do sistema operacional, gerando falsos positivos. Tenha o cuidado habitual com tudo o que baixar da internet
    • Ao usar bancos de dados grandes, com mais de 500 MB, pode levar algum tempo para carregar a visualização de nível superior que lê todas as páginas
  • Como compilar

    • Basta compactar o conteúdo de files/ com zip dentro de redbean-3.0.0-cosmos.com. É possível baixá-lo em https://cosmo.zip/pub/cosmos/bin/ (clique em "redbean" na lista)
    • Se o sistema não tiver zip, será necessário baixá-lo nesse site
    • Também é possível executar o script Python (3.6+) incluído zipitup.py
    • Para modificar, execute redbean-3.0.0-cosmos.com -D files para servir o aplicativo a partir do subdiretório files. Assim, não é preciso recompilar o zip a cada alteração
  • Não é nenhuma obra-prima

    • Como parte de um experimento para testar o redbean e usar Lua pela primeira vez, o código pode estar um pouco bagunçado
    • Se usasse um sistema de templates como Jinja ou os templates nativos do bottle.py, seria possível reduzir bastante a concatenação de strings e as chamadas a Write()
    • Seria bom fechar automaticamente o console quando a última aba fosse encerrada e, no caso de bancos de dados grandes, parar na página 10.000 a menos que o usuário confirme que deseja continuar
    • PRs são bem-vindos

1 comentários

 
GN⁺ 2025-02-08
Comentários do Hacker News
  • O projeto que publicou capturas de tela em GIF animado é muito interessante
  • Escrever código para analisar um arquivo SQLite com base na documentação do formato de arquivo do SQLite é mais fácil do que parece
  • Como alguém com experiência trabalhando internamente com SQLite, o trabalho deste projeto é impressionante
    • O sqlite-repr, construído com Dioxus, também oferece uma visualização interessante do SQLite
    • Link relacionado: sqlite-repr
  • O projeto é legal, e há a opinião de que seria bom adicionar uma legenda de cores
    • Em bancos de dados grandes (3.6GB, 942719 páginas), há problemas de desempenho, e paginação pode ser considerada
  • Fiz algo parecido há 10 anos para uma ferramenta de segurança, e é bom que este projeto seja oferecido sob licença MIT
  • O código-fonte do SQLite inclui a ferramenta de CLI showdb, útil para explorar arquivos de banco de dados
  • Para quem tem dificuldade de assistir palestras ou aulas, este projeto é uma boa forma de visualizar estruturas de dados de maneira eficiente
  • É uma ferramenta muito útil para quem está estudando bancos de dados
  • Tenho experiência em escrever documentação e diagramas úteis sobre o formato de arquivo do SQLite
  • A ferramenta funciona bem