1 points par GN⁺ 2025-02-08 | 1 commentaires | Partager sur WhatsApp
  • SQLite Page Explorer

  • SQLite Page Explorer est une petite application GUI développée avec redbean, qui permet d’explorer une base de données SQLite "page par page", telle que SQLite la voit

  • Pourquoi est-ce nécessaire ?

    • SQLite, comme la plupart des bases de données, stocke les données dans des pages de la taille d’un bloc disque (généralement 4 KB) afin de maximiser la vitesse de lecture et d’écriture
    • En général, les développeurs interagissent avec la base de données au niveau du "schéma", mais examiner le niveau des "pages" permet d’obtenir des observations intéressantes
      • Voir à quoi ressemblent réellement les index sur le disque (ce sont essentiellement de petites tables séparées)
      • Accélérer les requêtes et les applications en stockant les données de manière plus compacte
      • Découvrir des problèmes et des inefficacités invisibles au niveau du schéma
      • Acquérir une intuition sur des structures de données importantes comme les B-arbres, qui sont à la base de la plupart des systèmes de fichiers et des bases de données
  • Exécutable partout

    • Grâce à redbean, cosmopolitan et αcτµαlly pδrταblε εxεcµταblε, il s’agit d’un unique exécutable de 6.5 MB qui s’exécute nativement sur Windows, Linux, MacOS, divers BSD, ARM64 et x64
    • Ce fichier est une archive zip contenant l’application et le code Lua qui analyse le format binaire de la base de données
  • Installation

    • Télécharger sqlite-page-explorer.com depuis les releases
    • Sur les systèmes de type Unix, exécuter chmod +x
    • Glisser le fichier de base de données ou lancer depuis la console : sqlite-page-explorer.com mySqliteDatabase.db
    • L’application s’ouvre dans un onglet du navigateur
    • Une fois terminé, appuyer deux fois sur Ctrl-C dans la console
    • Les αcτµαlly pδrταblε εxεcµταblεs peuvent perturber les systèmes de détection antivirus des navigateurs et des systèmes d’exploitation, provoquant des faux positifs. Appliquer les précautions habituelles avec tout ce qui est téléchargé sur Internet
    • Avec de grandes bases de données de plus de 500 MB, le chargement de la vue de niveau supérieur qui lit toutes les pages peut prendre du temps
  • Construction

    • Il suffit de compresser le contenu de files/ dans redbean-3.0.0-cosmos.com avec zip. Téléchargeable depuis https://cosmo.zip/pub/cosmos/bin/ (cliquer sur "redbean" dans la liste)
    • Si zip n’est pas installé sur le système, il faut le télécharger depuis ce site
    • Il est aussi possible d’exécuter le script Python (3.6+) inclus zipitup.py
    • Pour modifier l’application, exécuter redbean-3.0.0-cosmos.com -D files afin de la servir depuis le sous-répertoire files. Inutile de reconstruire l’archive zip à chaque modification
  • Ce n’est pas un chef-d’œuvre

    • Le code peut être un peu désordonné, car cela faisait partie d’une expérimentation pour tester redbean et utiliser Lua pour la première fois
    • Utiliser un système de templates, comme les templates natifs de Jinja ou de bottle.py, permettrait de réduire considérablement les concaténations de chaînes et les appels à Write()
    • Il serait bien que la console se ferme automatiquement lorsque le dernier onglet est fermé, et qu’avec de grosses bases de données l’application s’arrête à la page 10,000 tant que l’utilisateur ne confirme pas
    • PR bienvenues

1 commentaires

 
GN⁺ 2025-02-08
Avis Hacker News
  • Projet très intéressant, notamment grâce à la publication de captures d’écran en GIF animés
  • Écrire du code pour parser des fichiers SQLite en s’appuyant sur la documentation du format de fichier SQLite est plus facile qu’on ne pourrait le penser
  • Pour quelqu’un ayant déjà travaillé sur les internals de SQLite, le travail réalisé dans ce projet est impressionnant
    • sqlite-repr, construit avec Dioxus, propose également une visualisation intéressante de SQLite
    • Lien associé : sqlite-repr
  • Le projet est excellent, et il serait bien d’ajouter une légende des couleurs
    • Des problèmes de performances apparaissent sur de très grosses bases de données (3,6 Go, 942719 pages), et une pagination pourrait être envisagée
  • Quelqu’un a fait quelque chose de similaire il y a 10 ans pour un outil de sécurité, et apprécie que ce projet soit proposé sous licence MIT
  • Le code source de SQLite inclut showdb, un outil CLI utile pour explorer les fichiers de base de données
  • Pour les personnes qui ont du mal à suivre des cours ou des formations, ce projet est une bonne manière de visualiser efficacement les structures de données
  • Outil très utile pour les personnes en train d’apprendre les bases de données
  • Quelqu’un a déjà rédigé une documentation et des diagrammes utiles sur le format de fichier SQLite
  • L’outil fonctionne bien