---
title: "Parquet und Avro: das Ereignis zwischen Modulen und die Aufzeichnung, die Superintelligenz liest"
url: "https://hurukan.com/de/blog/parquet-und-avro-ereignis-und-aufzeichnung"
description: "Ein Ereignis reist zwischen Modulen als Zeile mit Vertrag und ruht in der Aufzeichnung als Spalten. Warum Avro das eine trägt und Parquet das andere."
---

# Parquet und Avro: das Ereignis zwischen Modulen und die Aufzeichnung, die Superintelligenz liest

11\. September 2026·5 Min. Lesezeit·Redaktion

Ein Logistikbüro von hinter einem Mitarbeiter am Stehpult gesehen: auf dem linken Monitor ein einzelnes abstraktes blau-graues Formular, auf dem rechten eine breite abstrakte Tabelle aus dünnen Spalten, ein dünner blauer LED-Streifen entlang der Tischkante, Morgenlicht aus einem hohen Fenster

Ein Wareneingang wird an der Rampe bestätigt. In derselben Sekunde muss das Vertriebsmodul wissen, dass der Rückstand ausgeliefert werden kann, die Finanzen müssen den Rechnungsabgleich starten, und das Lagermodul muss den Bestand bewegen. Jedes von ihnen will den ganzen Wareneingang: Lieferant, Artikel, Menge, Charge, wer bestätigt hat. Drei Monate später stellt der Finanzagent eine andere Frage: Wie oft kamen Lieferungen dieses Lieferanten in den letzten zwei Jahren zu kurz an. Er will zwei Spalten aus einer Million Zeilen, und er will sie in Sekunden.

Das sind zwei verschiedene Formen derselben Tatsache. Die erste ist eine Zeile, die reist. Die zweite ist eine Spalte, die ruht. Ein Unternehmensbetriebssystem muss beide speichern, und es ist ein Fehler, sie auf dieselbe Weise zu speichern. In Hurukans [Datenschicht](https://hurukan.com/de/system/daten), die im Aufbau ist, sieht der Entwurf vor, dass ein Ereignis zwischen Modulen von Apache Avro getragen wird und die Aufzeichnung, die Superintelligenz liest, in Apache Parquet angelegt ist. Dieser Text erklärt, warum die Trennung besteht und wofür jede Seite bezahlt.

## Zwei Fragen, zwei Anordnungen

Ein Dateiformat entscheidet, wie eine Datei Bytes anordnet: ob die Datensätze hintereinander liegen oder alle Werte eines Feldes beieinander, wie sie komprimiert werden und wo die Beschreibung ihrer Typen steht.

**Zeilenanordnung.** Jeder Datensatz wird ganz geschrieben: jedes Feld dieses Wareneingangs, dann jedes Feld des nächsten. Einen Datensatz zu schreiben ist billig, einen zu lesen ist billig, und nur die Menge über eine Million Wareneingänge zu lesen bedeutet, auch alle anderen Felder zu lesen, weil sie im Weg liegen.

**Spaltenanordnung.** Alle Mengen liegen beieinander, alle Lieferantenkennungen liegen beieinander. Eine Frage nach zwei Feldern berührt zwei schmale Streifen der Datei und überspringt den Rest. Einen einzelnen Datensatz zu schreiben ist umständlich, weil eine Datei geschlossen sein muss, bevor jemand sie lesen kann; deshalb werden Spalten in Stapeln geschrieben.

Avro ist die Zeilenanordnung mit einem Schema, das mit den Daten reist. Parquet ist die Spaltenanordnung mit Statistiken, die einen Leser überspringen lassen, was er nicht braucht. Keines weiß vom anderen, und keines weiß, ob es zu einer Tabelle gehört; das ist die Arbeit eines Tabellenformats darüber, beschrieben in [Laufender Zustand und Aufzeichnung](https://hurukan.com/de/blog/laufender-zustand-und-aufzeichnung-zwei-gedaechtnisse).

## Das Ereignis: eine Zeile mit Vertrag

Wenn der Wareneingang das Lagermodul verlässt, ist er eine Nachricht. Jedes Modul, das sie liest, muss sich einig sein, was die Felder bedeuten, und diese Einigkeit muss den Tag überstehen, an dem jemand ein Feld hinzufügt. [Avro](https://avro.apache.org/docs/1.12.0/specification/) trägt diese Einigung mit der Nachricht: Das Schema ist JSON, der Datensatz eine kompakte binäre Zeile, und die Spezifikation legt fest, wie ein Leser mit einer Schemaversion einen Datensatz auflöst, der mit einer anderen geschrieben wurde. Ein Feld, das der Leser nicht kennt, wird übersprungen. Ein Feld, das der Leser erwartet und der Schreiber nicht gesendet hat, nimmt den Standardwert aus dem Leserschema, oder das Lesen schlägt fehl und sagt es. Die aktuelle Version ist 1.12.2 ([Projektblog](https://avro.apache.org/blog/), geprüft am 21. Oktober 2026).

In einem System, in dem Agenten Module erweitern, ist diese Auflösungsregel der Unterschied zwischen einer sicheren Änderung und einer, die ein Modul um drei Uhr morgens anhält. Wie eine Schemaänderung durch Vorschlag, Kompatibilitätsprüfung und Freigabe wandert, behandelt [Apache Avro: der Vertrag zwischen Modulen](https://hurukan.com/de/blog/apache-avro-der-vertrag-zwischen-modulen).

Das Ereignis bleibt kein Ereignis. Sobald die Module, die es brauchen, es angenommen haben, wird derselbe Wareneingang in die Aufzeichnung geschrieben, und von dort wird er ganz anders gelesen.

## Die Aufzeichnung: Spalten, die Superintelligenz liest

Superintelligenz fragt nicht nach einem Wareneingang. Sie fragt nach einem Muster über alle Wareneingänge eines Lieferanten, alle Aufträge eines Quartals, jede Abweichung an einer Artikelrevision. Das sind Fragen nach wenigen Feldern über viele Zeilen, und dafür ist [Parquet](https://parquet.apache.org/docs/file-format/) gebaut: Eine Datei ist in Zeilengruppen geteilt, jede Zeilengruppe in einen Block je Spalte, jeder Block in Seiten, und der Fußbereich beschreibt, wo alles liegt. Ein Leser fragt nach zwei Spalten und erhält zwei Spalten. Jede Zeilengruppe trägt Minimal- und Maximalwerte, sodass ganze Abschnitte der Datei übersprungen werden, wenn die Frage einen Lieferanten betrifft. Die Formatspezifikation steht bei Version 2.14.0 ([Projektblog](https://parquet.apache.org/blog/), geprüft am 21. Oktober 2026).

Der Punkt für ein souveränes System sind die Kosten. Die Aufzeichnung liegt auf der Infrastruktur, die das Unternehmen wählt, und jede Frage der Superintelligenz wird in gelesenen Bytes und Prozessorzeit auf dieser Infrastruktur bezahlt. Eine spaltenweise angelegte, per Wörterbuch komprimierte und nach den meistgefilterten Feldern sortierte Aufzeichnung ist eine, die das Unternehmen seine Agenten so oft lesen lassen kann, wie nötig. Wie die Anordnung in einer Datei zu diesen Kosten wird, behandelt [Apache Parquet: wie die Aufzeichnung aufgebaut ist](https://hurukan.com/de/blog/apache-parquet-wie-die-aufzeichnung-aufgebaut-ist).

## Wo die Trennung entschieden wird

Die Tatsache ist

Form

Format in der Datenschicht

Unterwegs zwischen Modulen oder von einem Konnektor herein

ein ganzer Datensatz, jetzt

Avro, unter einem registrierten Schema

Ruhend in der Aufzeichnung, gelesen von Agenten und Menschen

viele Datensätze, wenige Felder

Parquet, in einem Tabellenformat

Einzeln eintreffend, aber später in Masse gelesen

beides, nacheinander

Avro herein, gestapelt nach Parquet

In der dritten Zeile steckt die meiste Ingenieursarbeit. Ereignisse treffen einzeln ein; Parquet will Stapel. Etwas muss eine Minute oder eine Stunde Ereignisse sammeln, sie als eine Datei schreiben und der Tabelle sagen, welche Datei neu ist. Tut man das zu oft, wird die Aufzeichnung zu einem Haufen winziger Dateien, der langsam zu lesen ist. Tut man es zu selten, liest der Agent, der die heutigen Wareneingänge braucht, die Aufzeichnung von gestern. Das Intervall ist eine Entscheidung darüber, welche Fragen frisch sein müssen, und sie liegt bei einem Menschen, nicht bei einem Standardwert.

## Was ein Agent hier ändern darf, und was nicht

Agenten erweitern Hurukan, und die Datenschicht ist keine Ausnahme. Ein Agent kann ein neues Feld am Wareneingangsereignis vorschlagen, den Stapeljob entwerfen, der Ereignisse in die Aufzeichnung legt, oder anregen, eine Tabelle nach Lieferant zu sortieren, weil der letzte Monat an Fragen danach gefiltert hat. Jedes davon ist ein Vorschlag mit beigefügter Begründung, und jedes wird aufgezeichnet.

Zwei Dinge bleiben bei den Menschen. Der Vertrag selbst: Eine Änderung an einem Ereignisschema ist eine Änderung der Vereinbarung zwischen Modulen, und der Verantwortliche des empfangenden Moduls gibt sie frei. Und die Form der Aufzeichnung: wie lange Ereignisse aufbewahrt werden, welche Felder die Aufzeichnung bei einem Löschersuchen verlassen und wie oft die Stapel schließen. Das entscheidet über Kosten und Pflichten, und dafür unterschreibt kein Agent.

## Ein Test, den Sie heute machen können

Nehmen Sie eine Tatsache, die heute zwischen zwei Systemen in Ihrem Unternehmen wandert, eine Auftragsbestätigung oder einen Wareneingang. Schreiben Sie drei Dinge auf: wo ihre Feldliste definiert ist, wer informiert würde, wenn ein Feld hinzukäme, und wo dieselbe Tatsache später in Masse für einen Bericht gelesen wird.

Wenn die Feldliste an zwei Stellen definiert ist, gibt es den Vertrag noch nicht. Wenn niemand informiert würde, wird das nächste hinzugefügte Feld etwas leise kaputtmachen. Wenn das Massenlesen gegen denselben Speicher läuft, der die Ereignisse empfängt, teilen sich die zwei Formen eine Anordnung, und eine von beiden bezahlt dafür. Die Seite zur [Datenschicht](https://hurukan.com/de/system/daten) beschreibt, wo jede Form liegen soll; die [Hurukan-Übersicht](https://hurukan.com/de) zeigt die Schichten darum herum.

-   Apache Parquet
-   Apache Avro
-   Ereignisverträge
-   Aufzeichnung
-   Datenschicht

## Weiterlesen

-   [Eine Identität für Menschen und Agenten: wer was tun darf](https://hurukan.com/de/blog/eine-identitaet-fuer-menschen-und-agenten)
-   [Laufender Zustand und Aufzeichnung: die zwei Gedächtnisse eines Unternehmensbetriebssystems](https://hurukan.com/de/blog/laufender-zustand-und-aufzeichnung-zwei-gedaechtnisse)