---
title: "Parquet och Avro: händelsen mellan modulerna och registret som superintelligensen läser"
url: "https://hurukan.com/sv/blog/parquet-och-avro-handelsen-och-registret"
description: "En händelse färdas mellan moduler som en rad med ett kontrakt och vilar i registret som kolumner. Varför Avro bär den första och Parquet den andra."
---

# Parquet och Avro: händelsen mellan modulerna och registret som superintelligensen läser

11 september 2026·5 min läsning·Redaktionen

Ett logistikkontor sett bakifrån en operatör vid ett ståbord: på den vänstra skärmen ett enda abstrakt blågrått formulär, på den högra en bred abstrakt tabell med smala kolumner, en tunn blå LED-list längs bordskanten, morgonljus från ett högt fönster

En godsmottagning bekräftas vid lastkajen. Inom samma sekund behöver handelsmodulen veta att restordern kan skickas, ekonomin behöver att fakturamatchningen startar, och lagermodulen behöver att saldot flyttas. Var och en av dem vill ha hela mottagningen: leverantör, artikel, kvantitet, parti, vem som bekräftade. Tre månader senare ställer ekonomiagenten en annan fråga: hur ofta kom leveranser från den här leverantören in med för lite under de senaste två åren. Den vill ha två kolumner ur en miljon rader, och den vill ha dem på sekunder.

Det är två olika former av samma faktum. Den första är en rad som färdas. Den andra är en kolumn som vilar. Ett operativsystem för företaget måste lagra båda, och det är ett misstag att lagra dem på samma sätt. I Hurukans [datalager](https://hurukan.com/sv/system/data), som är under uppbyggnad, är designen att en händelse mellan moduler bärs av Apache Avro, och att registret som superintelligensen läser är upplagt i Apache Parquet. Den här texten förklarar varför uppdelningen finns och vad varje sida betalar för.

## Två frågor, två layouter

Ett filformat avgör hur en fil ordnar sina byte: om posterna ligger efter varandra eller om alla värden i ett fält ligger tillsammans, hur de komprimeras, och var beskrivningen av deras typer finns.

**Radlayout.** Varje post skrivs hel: varje fält i den här mottagningen, sedan varje fält i nästa. Att skriva en post är billigt, att läsa en post är billigt, och att läsa bara kvantiteten över en miljon mottagningar innebär att läsa alla andra fält också, eftersom de ligger i vägen.

**Kolumnlayout.** Alla kvantiteter ligger tillsammans, alla leverantörsidentifierare ligger tillsammans. En fråga om två fält rör två smala remsor av filen och hoppar över resten. Att skriva en enda post är besvärligt, eftersom en fil måste stängas innan någon kan läsa den, så kolumner skrivs i omgångar.

Avro är radlayouten med ett schema som följer med datan. Parquet är kolumnlayouten med statistik som låter en läsare hoppa över det den inte behöver. Inget av dem känner till det andra, och inget av dem vet om det tillhör en tabell; det är jobbet för ett tabellformat ovanför dem, beskrivet i [det levande tillståndet och registret](https://hurukan.com/sv/blog/det-levande-tillstandet-och-registret-tva-minnen).

## Händelsen: en rad med ett kontrakt

När mottagningen lämnar lagermodulen är den ett meddelande. Varje modul som läser det måste vara överens om vad fälten betyder, och den överenskommelsen måste överleva dagen då någon lägger till ett fält. [Avro](https://avro.apache.org/docs/1.12.0/specification/) bär den överenskommelsen med meddelandet: schemat är JSON, posten är en kompakt binär rad, och specifikationen anger hur en läsare med en version av schemat löser upp en post skriven med en annan. Ett fält som läsaren inte känner till hoppas över. Ett fält som läsaren förväntar sig och skrivaren inte skickade får standardvärdet från läsarens schema, eller så misslyckas läsningen och säger det. Aktuell version är 1.12.2 ([projektets blogg](https://avro.apache.org/blog/), kontrollerat den 21 oktober 2026).

I ett system där agenter utökar moduler är den regeln skillnaden mellan en ändring som är säker och en som stoppar en modul klockan tre på natten. Hur en schemaändring rör sig genom förslag, kompatibilitetskontroll och godkännande är ämnet för [Apache Avro: kontraktet mellan moduler](https://hurukan.com/sv/blog/apache-avro-kontraktet-mellan-moduler).

Händelsen förblir inte en händelse. När den har tagits emot av de moduler som behöver den skrivs samma mottagning in i registret, och därifrån kommer den att läsas på ett helt annat sätt.

## Registret: kolumner som superintelligensen läser

Superintelligensen frågar inte efter en mottagning. Den frågar efter ett mönster över alla mottagningar från en leverantör, alla order under ett kvartal, varje avvikelse på en artikelrevision. Det är frågor om några få fält över många rader, och det är vad [Parquet](https://parquet.apache.org/docs/file-format/) är byggt för: en fil delas i radgrupper, varje radgrupp i en bit per kolumn, varje bit i sidor, med en sidfot som beskriver var allt finns. En läsare ber om två kolumner och får två kolumner. Varje radgrupp bär minimi- och maximivärden, så hela sträckor av filen hoppas över när frågan gäller en leverantör. Formatspecifikationen är i version 2.14.0 ([projektets blogg](https://parquet.apache.org/blog/), kontrollerat den 21 oktober 2026).

Poängen för ett suveränt system är kostnad. Registret ligger på den infrastruktur företaget väljer, och varje fråga superintelligensen ställer betalas i lästa byte och processortid på den infrastrukturen. Ett register upplagt i kolumner, komprimerat med ordbok och sorterat efter de fält de flesta frågor filtrerar på, är ett register företaget har råd att låta sina agenter läsa så ofta de behöver. Hur layouten inuti en fil blir till den kostnaden tas upp i [Apache Parquet: hur registret är upplagt](https://hurukan.com/sv/blog/apache-parquet-hur-registret-ar-upplagt).

## Var uppdelningen avgörs

Faktumet är

Form

Format i datalagret

På väg mellan moduler eller in från en koppling

en hel post, nu

Avro, under ett registrerat schema

Vilande i registret, läst av agenter och människor

många poster, några få fält

Parquet, inuti ett tabellformat

Anländer en i taget men läses i bulk senare

båda, i följd

Avro in, samlat i omgångar till Parquet

Den tredje raden är där det mesta av ingenjörsarbetet finns. Händelser anländer en och en; Parquet vill ha omgångar. Något måste samla en minut eller en timme av händelser, skriva dem som en fil och tala om för tabellen vilken fil som är ny. Gör det för ofta och registret blir en hög av pyttesmå filer som är långsam att läsa. Gör det för sällan och agenten som behöver dagens mottagningar läser gårdagens register. Intervallet är ett beslut om vilka frågor som behöver vara färska, och det är ett beslut för en människa, inte ett standardvärde.

## Vad en agent får ändra här, och vad den inte får

Agenter utökar Hurukan, och datalagret är inget undantag. En agent kan föreslå ett nytt fält på mottagningshändelsen, utarbeta det omgångsjobb som landar händelser i registret, eller föreslå att en tabell sorteras efter leverantör eftersom den senaste månadens frågor filtrerade på det. Vart och ett av dessa är ett förslag med sitt resonemang bifogat, och vart och ett registreras.

Två saker stannar hos människor. Själva kontraktet: en ändring av ett händelseschema är en ändring av överenskommelsen mellan moduler, och ägaren av den mottagande modulen godkänner den. Och registrets form: hur länge händelser sparas, vilka fält som lämnar registret vid en begäran om radering, och hur ofta omgångarna stängs. De avgör kostnad och skyldighet, och en agent skriver inte under på någotdera.

## Ett test du kan göra i dag

Ta ett faktum som i dag rör sig mellan två system i ditt företag, en orderbekräftelse eller en godsmottagning. Skriv ner tre saker: var dess fältlista är definierad, vem som skulle få veta om ett fält lades till, och var samma faktum senare läses i bulk för en rapport.

Om fältlistan är definierad på två ställen finns kontraktet inte ännu. Om ingen skulle få veta kommer nästa tillagda fält att tyst ha sönder något. Om bulkläsningen sker mot samma lager som tar emot händelserna delar de två formerna en layout, och en av dem betalar för det. Sidan om [datalagret](https://hurukan.com/sv/system/data) beskriver var varje form är tänkt att bo; [översikten av Hurukan](https://hurukan.com/sv) visar lagren runt omkring.

-   Apache Parquet
-   Apache Avro
-   händelsekontrakt
-   registret
-   datalagret

## Läs vidare

-   [En identitet för människor och agenter: vem som får göra vad](https://hurukan.com/sv/blog/en-identitet-for-manniskor-och-agenter)
-   [Det levande tillståndet och registret: två minnen i ett operativsystem för företaget](https://hurukan.com/sv/blog/det-levande-tillstandet-och-registret-tva-minnen)