Datenfluss und Speicherung
Jede Zahl in Boost lässt sich bis zu der Datei zurückverfolgen, die eine Behörde geliefert hat; hier steht, welche fünf Stationen sie dazwischen durchläuft und was an jeder als Beleg liegt.
Quelle und Abruf
Eine Quelle ist ein Herausgeber oder Portal, etwa das Finanzministerium mit bundeshaushalt.de, das Statistische Bundesamt oder eine Kommune mit ihrem Haushaltsplan. Boost holt Dateien nur über boost fetch, für die GENESIS-Datenbanken mit Konto über boost genesis.
Vor jedem Abruf liest Boost die robots.txt des Hosts und hält sich an sie; die eine Ausnahme ist die Schnittstelle der Regionaldatenbank. Jeder Abruf schreibt ein Manifest mit Adresse, Zeit, Weg, robots-Befund und der (sha256) jeder Datei.
Rohdatenlager
Was eine Quelle liefert, bleibt unverändert im liegen, sortiert nach Bereich, Thema, Quelle, Datensatz und Tag des Abrufs: roh/<bereich>/<thema>/<quelle>/<datensatz>/<datum>/, daneben das manifest.json des Abrufs. Liefert eine Quelle je Gebiet oder Jahr eigene Dateien, stehen ARS oder Jahr als weitere Ordner vor dem Datum.
Ein neuer Abruf überschreibt nie einen alten; dieselbe Prüfsumme wie zuvor heißt, es gibt nichts Neues. Git hält Katalog, Manifeste und Hinweise, nicht die Dateien selbst, weil einzelne Lieferungen mehrere Gigabyte groß sind. Die Prüfsumme im Manifest beweist, dass eine Kopie stimmt.
Import in die Datenbank
Daten kommen nur über boost import in die Datenbank, Postgres mit allen Tabellen im Schema de. Ein liest genau eine Rohdatei und merkt sich Pfad, Prüfsumme, den Stand des Codes, Beginn, Ende, geschriebene Zeilen und Lücken.
Hat die Datei dieselbe Prüfsumme wie beim letzten Lauf, entsteht kein neuer. Ein anderer Inhalt ersetzt in einer Transaktion alle Zeilen der früheren Läufe dieser Datei und markiert sie als abgelöst. Ein gescheiterter Lauf bleibt als Protokoll stehen, ohne Zeilen, und der bisherige Stand gilt weiter.
Gesammelt wird nur 2025: je Gebiet, Datensatz und Konto ein Stand, das , wo es veröffentlicht ist, sonst das . Eine Quelle ohne 2025 wird eine Lücke mit dem Grund „anderes Jahr“.
Die Kette: woher jede Zahl kommt
Eine Quelle hat Datensätze, ein Datensatz hat Importläufe, und jeder Wert hängt an genau einem Lauf. Werte sind Beobachtungen (eine Kennzahl für ein Gebiet mit Einheit und Art) oder Haushaltsknoten (eine Zeile eines Haushaltsbaums in der Reihenfolge der Datei). Den Ort nennt jeder Wert über seinen zwölfstelligen Regionalschlüssel.
Fehlt eine Zahl, steht sie leer mit Status, nie als 0. Eine Lücke ist ein eigener Eintrag mit Grund, etwa „nur als PDF“, „nicht veröffentlicht“ oder „Lizenz offen“; so wird sichtbar, wo Deutschland nicht transparent ist. Ohne Lauf stehen nur Recherchenotizen, Informationsfreiheitsanfragen, örtliche Zuordnungen und frühere Kennzahl-Ids, weil sie keine Zahl tragen.
Laufbuch
Das Laufbuch hält jede Ausführung eines Importers, der Pipeline, einer Lückenmeldung, einer Prüfung und einer Bereinigung als Zeile mit fester Nummer. Ein Lauf, der Werte schreibt, trägt die Nummer seines Importlaufs. Dazu stehen dort der Läufer, der Code-Stand, das Ergebnis und die Prüfsummen von Rohdatei, Beleg, Profil, Zuordnung und Lesung.
Es steht neben der Kette: kein Wert zeigt darauf. Aus ihm leitet Boost das Urteil je Datensatz ab, das die Datenlage zeigt, etwa „Profil geändert“ oder „nur Soll“.
Export und App
Die App verbindet sich nie mit der Datenbank. boost export alle schreibt die Zuschnitte als statische JSON unter public/data: Register, Gebiete, Staatsausgaben, Kennzahlen, Dokumente, Themen der Karte, Systematik, Kennzahlen der Module, Laufbuch und zuletzt das Manifest mit der Prüfsumme jeder Datei. Mit --check vergleicht er nur.
Die App lädt diese Dateien, wenn eine Seite sie braucht. Jeder Wert nennt Quelle, Stand und Lauf; die Nummer des Laufs führt zurück ins Laufbuch und von dort zur Rohdatei.