---
title: "Parquet ja Avro: tapahtuma moduulien välillä ja rekisteri, jota superäly lukee"
url: "https://hurukan.com/fi/blog/parquet-ja-avro-tapahtuma-ja-rekisteri"
description: "Tapahtuma kulkee moduulien välillä rivinä, jolla on sopimus, ja lepää rekisterissä sarakkeina. Miksi Avro kantaa ensimmäisen ja Parquet toisen."
---

# Parquet ja Avro: tapahtuma moduulien välillä ja rekisteri, jota superäly lukee

11\. syyskuuta 2026·4 min lukuaika·Toimitus

Logistiikkatoimisto kuvattuna seisomapöydän ääressä olevan operaattorin takaa: vasemmassa näytössä yksi abstrakti sinertävänharmaa lomake, oikeassa leveä abstrakti taulu ohuita sarakkeita, ohut sininen LED-nauha pöydän reunassa, aamuvalo korkeasta ikkunasta

Tavaran vastaanotto vahvistetaan laiturilla. Samalla sekunnilla kauppamoduulin on tiedettävä, että jälkitoimitus voidaan lähettää, talouden on aloitettava laskun täsmäytys, ja varastomoduulin on siirrettävä saldoa. Jokainen niistä haluaa koko vastaanoton: toimittaja, nimike, määrä, erä, kuka vahvisti. Kolme kuukautta myöhemmin talousagentti kysyy toisenlaisen kysymyksen: kuinka usein tämän toimittajan toimitukset ovat tulleet vajaina kahden viime vuoden aikana. Se haluaa kaksi saraketta miljoonasta rivistä, ja se haluaa ne sekunneissa.

Ne ovat saman tosiasian kaksi eri muotoa. Ensimmäinen on rivi, joka kulkee. Toinen on sarake, joka lepää. Yrityksen käyttöjärjestelmän on tallennettava molemmat, ja on virhe tallentaa ne samalla tavalla. Hurukanin rakenteilla olevassa [datakerroksessa](https://hurukan.com/fi/system/data) suunnitelma on, että moduulien välisen tapahtuman kantaa Apache Avro ja superälyn lukema rekisteri on järjestetty Apache Parquet -muotoon. Tämä teksti selittää, miksi jako on olemassa ja mistä kumpikin puoli maksaa.

## Kaksi kysymystä, kaksi asettelua

Tiedostomuoto päättää, miten yksi tiedosto järjestää tavut: ovatko tietueet peräkkäin vai ovatko yhden kentän kaikki arvot yhdessä, miten ne pakataan ja missä niiden tyyppien kuvaus sijaitsee.

**Riviasettelu.** Jokainen tietue kirjoitetaan kokonaisena: tämän vastaanoton jokainen kenttä, sitten seuraavan jokainen kenttä. Yhden tietueen kirjoittaminen on halpaa, yhden tietueen lukeminen on halpaa, ja pelkän määrän lukeminen miljoonan vastaanoton yli tarkoittaa kaikkien muidenkin kenttien lukemista, koska ne ovat tiellä.

**Sarakeasettelu.** Kaikki määrät ovat yhdessä, kaikki toimittajatunnisteet ovat yhdessä. Kahta kenttää koskeva kysymys koskettaa kahta kapeaa kaistaletta tiedostosta ja ohittaa loput. Yhden tietueen kirjoittaminen on hankalaa, koska tiedosto on suljettava ennen kuin kukaan voi lukea sitä, joten sarakkeet kirjoitetaan erissä.

Avro on riviasettelu, jossa skeema kulkee datan mukana. Parquet on sarakeasettelu tilastoineen, joiden avulla lukija ohittaa sen, mitä se ei tarvitse. Kumpikaan ei tiedä toisesta, eikä kumpikaan tiedä kuuluvansa tauluun; se on niiden yläpuolella olevan taulumuodon työtä, joka on kuvattu tekstissä [nykytila ja rekisteri](https://hurukan.com/fi/blog/nykytila-ja-rekisteri-kaksi-muistia).

## Tapahtuma: rivi, jolla on sopimus

Kun vastaanotto lähtee varastomoduulista, se on viesti. Jokaisen sitä lukevan moduulin on oltava yhtä mieltä siitä, mitä kentät tarkoittavat, ja sen yksimielisyyden on kestettävä päivä, jolloin joku lisää kentän. [Avro](https://avro.apache.org/docs/1.12.0/specification/) kantaa tuon sopimuksen viestin mukana: skeema on JSON, tietue on tiivis binäärinen rivi, ja spesifikaatio määrittelee, miten yhden skeemaversion lukija tulkitsee toisella versiolla kirjoitetun tietueen. Kenttä, jota lukija ei tunne, ohitetaan. Kenttä, jota lukija odottaa mutta jota kirjoittaja ei lähettänyt, saa oletusarvon lukijan skeemasta, tai luku epäonnistuu ja kertoo siitä. Nykyinen julkaisu on 1.12.2 ([projektin blogi](https://avro.apache.org/blog/), tarkistettu 21. lokakuuta 2026).

Järjestelmässä, jossa agentit laajentavat moduuleja, tuo tulkintasääntö on ero turvallisen muutoksen ja sellaisen muutoksen välillä, joka pysäyttää moduulin kello kolme yöllä. Se, miten skeemamuutos kulkee ehdotuksen, yhteensopivuustarkistuksen ja hyväksynnän läpi, on aiheena tekstissä [Apache Avro: sopimus moduulien välillä](https://hurukan.com/fi/blog/apache-avro-sopimus-moduulien-valilla).

Tapahtuma ei jää tapahtumaksi. Kun sitä tarvitsevat moduulit ovat hyväksyneet sen, sama vastaanotto kirjoitetaan rekisteriin, ja sieltä sitä luetaan hyvin eri tavalla.

## Rekisteri: sarakkeet, joita superäly lukee

Superäly ei kysy yhtä vastaanottoa. Se kysyy kaavaa kaikista yhden toimittajan vastaanotoista, kaikista yhden vuosineljänneksen tilauksista, jokaisesta yhden nimikerevision poikkeamasta. Nämä ovat kysymyksiä muutamasta kentästä monen rivin yli, ja juuri sitä varten [Parquet](https://parquet.apache.org/docs/file-format/) on rakennettu: tiedosto jaetaan riviryhmiin, jokainen riviryhmä yhteen lohkoon saraketta kohden, jokainen lohko sivuihin, ja alatunniste kuvaa, missä kaikki sijaitsee. Lukija pyytää kaksi saraketta ja saa kaksi saraketta. Jokainen riviryhmä kantaa minimi- ja maksimiarvot, joten kokonaisia tiedoston osuuksia ohitetaan, kun kysymys koskee yhtä toimittajaa. Muotospesifikaatio on versiossa 2.14.0 ([projektin blogi](https://parquet.apache.org/blog/), tarkistettu 21. lokakuuta 2026).

Suvereenin järjestelmän kannalta kyse on kustannuksesta. Rekisteri sijaitsee yrityksen valitsemassa infrastruktuurissa, ja jokainen superälyn esittämä kysymys maksetaan luettuina tavuina ja prosessoriaikana siinä infrastruktuurissa. Sarakkeisiin järjestetty, sanakirjalla pakattu ja useimpien kysymysten suodatuskenttien mukaan lajiteltu rekisteri on rekisteri, jota yrityksellä on varaa antaa agenttiensa lukea niin usein kuin ne tarvitsevat. Se, miten yhden tiedoston sisäinen asettelu muuttuu tuoksi kustannukseksi, käsitellään tekstissä [Apache Parquet: näin rekisteri on järjestetty](https://hurukan.com/fi/blog/apache-parquet-nain-rekisteri-on-jarjestetty).

## Missä jako päätetään

Tosiasia on

Muoto

Muoto datakerroksessa

Matkalla moduulien välillä tai sisään liittimestä

yksi kokonainen tietue, nyt

Avro, rekisteröidyn skeeman alla

Levossa rekisterissä, agenttien ja ihmisten luettavana

monta tietuetta, muutama kenttä

Parquet, taulumuodon sisällä

Saapuu yksi kerrallaan, mutta luetaan myöhemmin massana

molemmat, peräkkäin

Avro sisään, erinä Parquetiin

Kolmas rivi on se, jossa suurin osa insinöörityöstä on. Tapahtumat saapuvat yksitellen; Parquet haluaa eriä. Jonkin on kerättävä minuutin tai tunnin tapahtumat, kirjoitettava ne yhdeksi tiedostoksi ja kerrottava taululle, mikä tiedosto on uusi. Jos se tehdään liian usein, rekisteristä tulee kasa pikkuruisia tiedostoja, jota on hidas lukea. Jos liian harvoin, tämän päivän vastaanottoja tarvitseva agentti lukee eilistä rekisteriä. Väli on päätös siitä, minkä kysymysten on oltava tuoreita, ja se on ihmisen päätös, ei oletus.

## Mitä agentti saa täällä muuttaa, ja mitä ei

Agentit laajentavat Hurukania, eikä datakerros ole poikkeus. Agentti voi ehdottaa uutta kenttää vastaanottotapahtumaan, luonnostella erätyön, joka laskee tapahtumat rekisteriin, tai ehdottaa taulun lajittelua toimittajan mukaan, koska viime kuukauden kysymykset suodattivat sillä. Jokainen niistä on ehdotus perusteluineen, ja jokainen kirjataan.

Kaksi asiaa jää ihmisille. Itse sopimus: muutos tapahtumaskeemaan on muutos moduulien väliseen sopimukseen, ja vastaanottavan moduulin omistaja hyväksyy sen. Ja rekisterin muoto: kuinka kauan tapahtumia säilytetään, mitkä kentät poistuvat rekisteristä poistopyynnön myötä ja kuinka usein erät suljetaan. Ne ratkaisevat kustannuksen ja velvoitteen, eikä agentti allekirjoita kumpaakaan.

## Testi, jonka voit tehdä tänään

Ota yksi tosiasia, joka liikkuu yrityksessäsi tänään kahden järjestelmän välillä, tilausvahvistus tai tavaran vastaanotto. Kirjoita ylös kolme asiaa: missä sen kenttäluettelo on määritelty, kenelle kerrottaisiin, jos kenttä lisättäisiin, ja missä sama tosiasia luetaan myöhemmin massana raporttia varten.

Jos kenttäluettelo on määritelty kahdessa paikassa, sopimusta ei vielä ole. Jos kenellekään ei kerrottaisi, seuraava lisätty kenttä rikkoo jotain hiljaa. Jos massaluku tapahtuu samaa varastoa vasten, joka vastaanottaa tapahtumat, kaksi muotoa jakaa yhden asettelun, ja toinen niistä maksaa siitä. [Datakerroksen](https://hurukan.com/fi/system/data) sivu kuvaa, missä kummankin muodon on tarkoitus asua; [Hurukanin yleiskatsaus](https://hurukan.com/fi) näyttää kerrokset sen ympärillä.

-   Apache Parquet
-   Apache Avro
-   tapahtumasopimukset
-   rekisteri
-   datakerros

## Lue lisää

-   [Yksi identiteetti ihmisille ja agenteille: kuka saa tehdä mitä](https://hurukan.com/fi/blog/yksi-identiteetti-ihmisille-ja-agenteille)
-   [Nykytila ja rekisteri: yrityksen käyttöjärjestelmän kaksi muistia](https://hurukan.com/fi/blog/nykytila-ja-rekisteri-kaksi-muistia)