---
title: "Parquet og Avro: hendelsen mellom modulene og registeret superintelligensen leser"
url: "https://hurukan.com/no/blog/parquet-og-avro-hendelsen-og-registeret"
description: "En hendelse reiser mellom moduler som en rad med en kontrakt og hviler i registeret som kolonner. Hvorfor Avro bærer det første og Parquet det andre."
---

# Parquet og Avro: hendelsen mellom modulene og registeret superintelligensen leser

11\. september 2026·5 min lesing·Redaksjonen

Et logistikkontor sett bakfra en operatør ved et ståbord: på venstre skjerm ett abstrakt blågrått skjema, på høyre en bred abstrakt tabell med tynne kolonner, en tynn blå LED-stripe langs bordkanten, morgenlys fra et høyt vindu

Et varemottak bekreftes på rampen. I samme sekund må salgsmodulen vite at restordren kan sendes, økonomi må starte fakturamatchingen, og lagermodulen må flytte beholdningen. Hver av dem vil ha hele mottaket: leverandør, vare, antall, parti, hvem som bekreftet. Tre måneder senere stiller økonomiagenten et annet spørsmål: hvor ofte kom mottak fra denne leverandøren for kort de siste to årene. Den vil ha to kolonner ut av en million rader, og den vil ha dem på sekunder.

Det er to ulike former av samme faktum. Den første er en rad som reiser. Den andre er en kolonne som hviler. Et operativsystem for virksomheten må lagre begge, og det er en feil å lagre dem på samme måte. I Hurukans [datalag](https://hurukan.com/no/system/data), som er under bygging, er designet at en hendelse mellom moduler bæres av Apache Avro, og at registeret superintelligensen leser, er lagt opp i Apache Parquet. Denne teksten forklarer hvorfor skillet finnes og hva hver side betaler for.

## To spørsmål, to oppsett

Et filformat avgjør hvordan én fil ordner byte: om postene ligger etter hverandre eller om alle verdiene i ett felt ligger sammen, hvordan de komprimeres, og hvor beskrivelsen av typene deres bor.

**Radoppsett.** Hver post skrives hel: hvert felt i dette mottaket, deretter hvert felt i det neste. Å skrive én post er billig, å lese én post er billig, og å lese bare antallet på tvers av en million mottak betyr å lese alle de andre feltene også, fordi de ligger i veien.

**Kolonneoppsett.** Alle antallene ligger sammen, alle leverandør-identifikatorene ligger sammen. Et spørsmål om to felt berører to smale striper av filen og hopper over resten. Å skrive én enkelt post er upraktisk, fordi en fil må lukkes før noen kan lese den, så kolonner skrives i partier.

Avro er radoppsettet med et skjema som reiser med dataene. Parquet er kolonneoppsettet med statistikk som lar en leser hoppe over det den ikke trenger. Ingen av dem vet om den andre, og ingen av dem vet om de hører til en tabell; det er jobben til et tabellformat over dem, beskrevet i [nåtilstand og register](https://hurukan.com/no/blog/naatilstand-og-registeret-to-minner).

## Hendelsen: en rad med en kontrakt

Når mottaket forlater lagermodulen, er det en melding. Hver modul som leser den, må være enig om hva feltene betyr, og den enigheten må overleve dagen noen legger til et felt. [Avro](https://avro.apache.org/docs/1.12.0/specification/) bærer den enigheten sammen med meldingen: skjemaet er JSON, posten er en kompakt binær rad, og spesifikasjonen fastsetter hvordan en leser med én versjon av skjemaet løser opp en post skrevet med en annen. Et felt leseren ikke kjenner, hoppes over. Et felt leseren forventer og skriveren ikke sendte, får standardverdien fra leserens skjema, eller lesingen feiler og sier fra. Gjeldende utgivelse er 1.12.2 ([prosjektbloggen](https://avro.apache.org/blog/), kontrollert 21. oktober 2026).

I et system der agenter utvider moduler, er den oppløsningsregelen forskjellen mellom en endring som er trygg og en som stanser en modul klokken tre om natten. Hvordan en skjemaendring beveger seg gjennom forslag, kompatibilitetssjekk og godkjenning, er temaet i [Apache Avro: kontrakten mellom moduler](https://hurukan.com/no/blog/apache-avro-kontrakten-mellom-moduler).

Hendelsen forblir ikke en hendelse. Når den er akseptert av modulene som trenger den, skrives det samme mottaket inn i registeret, og derfra leses det på en helt annen måte.

## Registeret: kolonner superintelligensen leser

Superintelligens spør ikke etter ett mottak. Den spør etter et mønster på tvers av alle mottak fra én leverandør, alle ordrer i ett kvartal, hvert avvik på én varerevisjon. Dette er spørsmål om noen få felt på tvers av mange rader, og det er det [Parquet](https://parquet.apache.org/docs/file-format/) er bygd for: en fil deles i radgrupper, hver radgruppe i én del per kolonne, hver del i sider, med en bunntekst som beskriver hvor alt ligger. En leser ber om to kolonner og får to kolonner. Hver radgruppe bærer minimums- og maksimumsverdier, så hele strekninger av filen hoppes over når spørsmålet gjelder én leverandør. Formatspesifikasjonen er på versjon 2.14.0 ([prosjektbloggen](https://parquet.apache.org/blog/), kontrollert 21. oktober 2026).

Poenget for et suverent system er kostnad. Registeret ligger på infrastrukturen virksomheten velger, og hvert spørsmål superintelligensen stiller, betales i leste byte og prosessortid på den infrastrukturen. Et register lagt opp i kolonner, komprimert med ordbok og sortert etter feltene de fleste spørsmål filtrerer på, er et register virksomheten har råd til å la agentene lese så ofte de trenger. Hvordan oppsettet inne i én fil blir til den kostnaden, dekkes i [Apache Parquet: slik er registeret lagt opp](https://hurukan.com/no/blog/apache-parquet-slik-er-registeret-lagt-opp).

## Hvor skillet avgjøres

Faktumet er

Form

Format i datalaget

På reise mellom moduler eller inn fra en kobling

én hel post, nå

Avro, under et registrert skjema

I ro i registeret, lest av agenter og mennesker

mange poster, noen få felt

Parquet, inne i et tabellformat

Kommer én om gangen, men leses samlet senere

begge, i rekkefølge

Avro inn, samlet i partier til Parquet

Den tredje raden er der mesteparten av ingeniørarbeidet ligger. Hendelser kommer én og én; Parquet vil ha partier. Noe må samle et minutt eller en time med hendelser, skrive dem som én fil og fortelle tabellen hvilken fil som er ny. Gjør det for ofte, og registeret blir en haug med bittesmå filer som er trege å lese. Gjør det for sjelden, og agenten som trenger dagens mottak, leser gårsdagens register. Intervallet er en beslutning om hvilke spørsmål som må være ferske, og det er en beslutning for en person, ikke en standard.

## Hva en agent kan endre her, og hva den ikke kan

Agenter utvider Hurukan, og datalaget er intet unntak. En agent kan foreslå et nytt felt på mottakshendelsen, utarbeide partijobben som lander hendelser i registeret, eller foreslå at en tabell sorteres etter leverandør fordi den siste månedens spørsmål filtrerte på det. Hvert av dem er et forslag med begrunnelsen vedlagt, og hvert registreres.

To ting blir hos mennesker. Selve kontrakten: en endring i et hendelsesskjema er en endring i avtalen mellom moduler, og eieren av den mottakende modulen godkjenner den. Og registerets form: hvor lenge hendelser oppbevares, hvilke felt som forlater registeret ved en sletteforespørsel, og hvor ofte partiene lukkes. De avgjør kostnad og forpliktelse, og en agent signerer ikke for noen av delene.

## En test du kan gjøre i dag

Ta ett faktum som flyttes mellom to systemer i virksomheten din i dag, en ordrebekreftelse eller et varemottak. Skriv ned tre ting: hvor feltlisten er definert, hvem som ville fått beskjed hvis et felt ble lagt til, og hvor det samme faktumet senere leses samlet til en rapport.

Hvis feltlisten er definert to steder, finnes ikke kontrakten ennå. Hvis ingen ville fått beskjed, vil det neste feltet som legges til, ødelegge noe i stillhet. Hvis den samlede lesingen skjer mot samme lager som mottar hendelsene, deler de to formene ett oppsett, og en av dem betaler for det. Siden om [datalaget](https://hurukan.com/no/system/data) beskriver hvor hver form er ment å bo; [Hurukan-oversikten](https://hurukan.com/no) viser lagene rundt.

-   Apache Parquet
-   Apache Avro
-   hendelseskontrakter
-   registeret
-   datalag

## Les videre

-   [Én identitet for mennesker og agenter: hvem får gjøre hva](https://hurukan.com/no/blog/en-identitet-for-mennesker-og-agenter)
-   [Nåtilstand og register: to minner i et operativsystem for virksomheten](https://hurukan.com/no/blog/naatilstand-og-registeret-to-minner)