HN vorgestellt: SQLite Disk Page Explorer
(github.com/QuadrupleA)-
SQLite Page Explorer
-
SQLite Page Explorer ist eine kleine GUI-Anwendung, die mit redbean entwickelt wurde und ein SQLite-Datenbankfile so „seite für seite“ erkundbar macht, wie SQLite es selbst sieht
-
Warum ist das nötig?
- SQLite und die meisten Datenbanken speichern Daten in Seiten von der Größe eines Disk-Blocks (meist 4 KB), um Lese- und Schreibvorgänge so schnell wie möglich zu machen
- Normalerweise interagieren Entwickler mit einer Datenbank auf „Schema-Ebene“, aber ein Blick auf die „Seiten-Ebene“ kann interessante Einblicke liefern
- Man kann sehen, wie Indizes auf der Festplatte tatsächlich aussehen (im Grunde sind sie separate kleine Tabellen)
- Durch kompaktere Datenspeicherung lassen sich Queries und Anwendungen schneller machen
- Probleme und Ineffizienzen lassen sich entdecken, die auf Schema-Ebene nicht sichtbar sind
- Man bekommt ein intuitives Verständnis für wichtige Datenstrukturen wie B-Bäume, die die Grundlage der meisten Dateisysteme und Datenbanken bilden
-
Überall lauffähig
- Dank redbean, cosmopolitan und αcτµαlly pδrταblε εxεcµταblε ist es eine einzelne 6,5-MB-Executable, die nativ unter Windows, Linux, MacOS, verschiedenen BSDs sowie auf ARM64 und x64 läuft
- Die Datei ist ein Zip-Archiv, das die Anwendung enthält, einschließlich Lua-Code zum Parsen des binären Datenbankformats
-
Installation
sqlite-page-explorer.comaus den Releases herunterladen- Auf Unix-Systemen
chmod +xausführen - Eine Datenbankdatei per Drag-and-drop hineinziehen oder in der Konsole starten:
sqlite-page-explorer.com mySqliteDatabase.db - Die Anwendung öffnet sich in einem Browser-Tab
- Nach Abschluss in der Konsole zweimal Ctrl-C drücken
- αcτµαlly pδrταblε εxεcµταblεs können die Virenerkennung von Browsern und Betriebssystemen verwirren und Fehlalarme auslösen. Wie immer gilt: bei allem, was aus dem Internet heruntergeladen wird, die übliche Vorsicht walten lassen
- Bei großen Datenbanken über 500 MB kann das Laden der obersten Ansicht, die alle Seiten einliest, einige Zeit dauern
-
So wird es gebaut
- Den Inhalt von
files/einfach alszipinredbean-3.0.0-cosmos.compacken. Download unter https://cosmo.zip/pub/cosmos/bin/ möglich (in der Liste auf „redbean“ klicken) - Falls
zipnicht auf dem System vorhanden ist, muss es von dieser Website heruntergeladen werden - Alternativ kann auch das enthaltene Python-(3.6+)-Skript
zipitup.pyausgeführt werden - Zum Ändern kann
redbean-3.0.0-cosmos.com -D filesausgeführt werden, damit die Anwendung aus dem Unterverzeichnisfilesbereitgestellt wird. Dann muss das Zip nicht nach jeder Änderung neu gebaut werden
- Den Inhalt von
-
Kein Meisterwerk
- Das Ganze entstand als Experiment, um redbean auszuprobieren und Lua zum ersten Mal zu verwenden; der Code könnte daher etwas unordentlich sein
- Mit einem Template-System wie Jinja oder den nativen Templates von bottle.py ließen sich viele String-Verkettungen und
Write()-Anweisungen vermeiden - Schön wäre es, wenn sich die Konsole automatisch schließen würde, wenn der letzte Tab geschlossen wird, und wenn bei großen Datenbanken standardmäßig bei Seite 10.000 gestoppt würde, sofern der Benutzer nicht etwas anderes bestätigt
- PRs willkommen
1 Kommentare
Hacker-News-Kommentare
showdbenthalten, das für die Untersuchung von Datenbankdateien nützlich ist