Apache Parquet vs. CSV: Raskere databehandling og lavere kostnader

Apache Parquet tilbyr flere fordeler for datalagring og -gjenfinning sammenlignet med tradisjonelle metoder, slik som CSV-filer.

Parquet-formatet er spesielt designet for å håndtere komplekse datatyper raskere. I denne artikkelen skal vi undersøke hvordan Parquet-formatet møter de økende kravene til databehandling i dagens samfunn.

Før vi dykker dypere inn i detaljene rundt Parquet-formatet, er det viktig å forstå hva CSV-data er og hvilke utfordringer de medfører for datalagring.

Hva er CSV-lagring?

CSV (Comma Separated Values) er en velkjent metode for å organisere og formatere data. CSV-datalagring er radbasert, der hver linje representerer en rad med data. CSV-filer har filendelsen .csv og kan åpnes i programmer som Excel, Google Sheets, eller en hvilken som helst teksteditor. Dataene er lett tilgjengelige og synlige når filen åpnes.

Dette er imidlertid ikke ideelt, spesielt ikke for et databaseformat.

Etterhvert som datamengden øker, blir det stadig vanskeligere å spørre, administrere og hente ut data.

Her er et eksempel på data som er lagret i en .CSV-fil:

EmpId,Fornavn,Etternavn,Avdeling
2012011,Sam,Butcher,IT
2013031,Mike,Johnson,Human Resource
2010052,Bill,Matthew,Arkitekt
2010079,Jose,Brian,IT
2012120,Adam,James,Løsninger

Dette vil vises i et regneark som Excel med rader og kolonner som vist under:

Utfordringer med CSV-lagring

Radbaserte lagringsformater som CSV er egnet for operasjoner som opprettelse, oppdatering og sletting av data (CRUD).

Men hva med leseoperasjonen i CRUD?

Tenk deg en .csv-fil med en million rader. Det vil ta betydelig tid å åpne filen og søke etter spesifikke data. De fleste skyleverandører, som AWS, tar betalt for datamengden som skannes eller lagres, og CSV-filer krever mye plass.

CSV-lagring har heller ingen mulighet for å lagre metadata, noe som gjør datasøk til en omstendelig prosess.

Så, hva er en kostnadseffektiv og optimal løsning for å utføre alle CRUD-operasjonene? La oss se nærmere på det.

Hva er Parquet-datalagring?

Parquet er et åpen kildekode lagringsformat for data. Det er mye brukt i Hadoop- og Spark-økosystemene. Parquet-filer har filendelsen .parquet.

Parquet er et strukturert format som også kan brukes til å optimalisere store mengder rådata i databaser. Dette kan redusere spørretiden betydelig.

Parquet gjør datalagring effektiv og gjenfinning raskere ved å kombinere rad- og kolonnebaserte (hybrid) lagringsformater. Dataene er delt opp både horisontalt og vertikalt. I tillegg eliminerer Parquet-formatet mye av ressursbruken som kreves for parsing.

Dette formatet reduserer antall I/O-operasjoner og dermed kostnadene.

Parquet lagrer også metadata, som informasjon om datasettet, antall verdier, plassering av kolonner, minimums- og maksimumsverdier, antall radgrupper, type koding osv. Metadataene lagres på forskjellige nivåer i filen, noe som gjør datatilgangen raskere.

I radbaserte formater som CSV tar det tid å hente ut data fordi søket må gå gjennom hver rad for å finne de spesifikke kolonneverdiene. Med Parquet-lagring kan alle de nødvendige kolonnene nås samtidig.

Oppsummert kan vi si at:

  • Parquet er basert på en kolonnestruktur for datalagring.
  • Det er et optimalisert format for lagring av store mengder komplekse data i lagringssystemer.
  • Parquet-formatet inkluderer ulike metoder for datakomprimering og koding.
  • Det reduserer dataskanning og spørretid betydelig og tar mindre diskplass sammenlignet med andre lagringsformater som CSV.
  • Det minimerer antall IO-operasjoner, reduserer lagringskostnader og kostnadene ved å kjøre spørringer.
  • Det inkluderer metadata som gjør det enklere å finne data.
  • Det gir støtte for åpen kildekode.

Dataformat for Parquet

Før vi ser på et eksempel, la oss se nærmere på hvordan data lagres i Parquet-formatet:

En fil kan ha flere horisontale partisjoner, kjent som radgrupper. Inne i hver radgruppe brukes vertikal partisjonering. Kolonnene er delt opp i flere kolonnebiter. Dataene lagres som sider inne i kolonnebitene. Hver side inneholder de kodede dataverdiene og metadataene. Som nevnt tidligere, lagres metadata for hele filen i bunnteksten på radgruppenivå.

Siden dataene er delt inn i kolonnebiter, er det også enkelt å legge til nye data ved å kode de nye verdiene inn i en ny del og fil. Metadataene oppdateres deretter for de berørte filene og radgruppene. Derfor kan vi si at Parquet er et fleksibelt format.

Parquet støtter datakomprimering ved hjelp av sidekomprimering og ordbokskoding. La oss se på et enkelt eksempel på ordbokskomprimering:

I eksemplet ovenfor ser vi at IT-avdelingen vises 4 ganger. Når dataene lagres ved hjelp av ordboken, blir de kodet med en lettere lagringsverdi (0,1,2…) sammen med antall gjentakelser. For eksempel blir «IT, IT» endret til «0,2» for å spare plass. Det tar også kortere tid å søke i komprimerte data.

Direkte sammenligning

Nå som vi har en god forståelse av hvordan CSV- og Parquet-formatene fungerer, la oss se på en direkte sammenligning:

CSV Parquet
Radbasert lagringsformat. En hybrid av radbaserte og kolonnebaserte lagringsformater.
Bruker mye plass siden ingen standard komprimeringsmetode er tilgjengelig. For eksempel vil en 1 TB-fil oppta samme plass ved lagring i Amazon S3 eller lignende. Komprimerer data under lagring og bruker derfor mindre plass. En 1 TB fil lagret i Parquet-format vil kun bruke omtrent 130 GB plass.
Spørretiden er treg på grunn av radbasert søk. For hver kolonne må hver rad med data hentes. Spørretiden er omtrent 34 ganger raskere på grunn av kolonnebasert lagring og tilgjengeligheten av metadata.
Flere data må skannes per spørring. Omtrent 99 % mindre data skannes ved spørringer, og optimaliserer dermed ytelsen.
De fleste lagringsenheter tar betalt basert på lagringsplass, så CSV-formatet gir høyere kostnader. Lavere lagringskostnader da data lagres komprimert og kodet.
Filskjema må enten utledes (noe som kan føre til feil) eller defineres (som er omstendelig). Filskjemaet er lagret i metadataene.
Formatet egner seg for enkle datatyper. Parquet egner seg også for komplekse typer som nestede skjemaer, matriser og ordbøker.

Konklusjon 👩‍💻

Gjennom eksemplene vi har sett, er det klart at Parquet er mer effektivt enn CSV når det gjelder kostnader, fleksibilitet og ytelse. Det er en effektiv metode for lagring og gjenfinning av data, spesielt i en verden som går mot skylagring og plassoptimalisering. Alle de store plattformene som Azure, AWS og BigQuery støtter Parquet-formatet.