Datakomprimering är en uppsättning steg för att packa in data i ett mindre utrymme, samtidigt som de ursprungliga uppgifterna kan ses igen. Komprimering är en dubbelriktad process: en komprimeringsalgoritm kan användas för att göra ett datapaket mindre, men den kan också köras åt andra hållet, för att dekomprimera paketet till dess ursprungliga form. Datakomprimering är användbar inom datateknik för att spara diskutrymme eller för att minska den bandbredd som används när data skickas (t.ex. över Internet).
Grundläggande principer
Syftet med datakomprimering är att representera samma information med färre bitar. Det görs genom att utnyttja mönster och redundans i datan — till exempel upprepade ord i en textfil eller jämna färgområden i en bild. Komprimering kan vara:
- Förlustfri (lossless) – komprimeringen kan återställas exakt till originalet. Används för text, programfiler, databaser och andra situationer där ingen informationsförlust tolereras.
- Förlustartad (lossy) – viss information kastas bort för att uppnå mycket högre kompressionsgrad. Används för bilder, ljud och video där mänskliga sinnen kan tolerera små kvalitetsförluster.
Vanliga tekniker och idéer
Några grundläggande tekniker som ofta kombineras i moderna algoritmer:
- Run-Length Encoding (RLE) – komprimerar upprepade sekvenser, t.ex. "AAAAA" → "5A". Enkel men effektiv för monotona områden.
- Ordboksbaserade metoder (LZ77, LZ78, LZW) – bygger en uppslagsbok över tidigare sekvenser och ersätter upprepade mönster med kortare referenser.
- Transformering – data omformas (t.ex. diskret kosinustransform i JPEG) så att energi koncentreras i färre koefficienter, vilket gör det lättare att kvantifiera och ta bort mindre viktiga delar (lossy).
- Entropikodning (Huffman, aritmetisk kodning) – kodar symboler med kortare bitsekvenser för vanliga symboler och längre för sällsynta; används ofta som sista steg för att nå optimal representation.
Exempel på algoritmer och format
- Förlustfri: ZIP, gzip (DEFLATE), Brotli, LZMA, PNG (bild).
- Förlustartad: JPEG (bild), MP3, AAC (ljud), H.264/H.265 (video).
- Särskilda tekniker för streaming och realtid: adaptiva codecs, progressiv avkodning och felkorrigering för att klara paketförluster.
Hur det fungerar i praktiken
En typisk komprimeringspipeline kan se ut så här:
- Förbehandling/transform – data omformas för att göra statistiken mer gynnsam (t.ex. prediktion eller DCT).
- Kvantisering (vid lossy) – mindre viktiga komponenter reduceras eller tas bort.
- Entropikodning – slutlig kodning för att maximera utrymmesbesparingen.
Exempel: JPEG använder en 8×8 DCT-transform, kvantiserar koefficienterna och avslutar med Huffman- eller aritmetisk kodning. MP3 och AAC använder psykoakustiska modeller för att ta bort ljud som människan inte uppfattar väl.
Prestanda och mätvärden
När man utvärderar komprimering tittar man ofta på:
- Kompressionsgrad/ratio – förhållandet mellan originalstorlek och komprimerad storlek (t.ex. 10:1).
- Hastighet – tid eller throughput (MB/s) för kompression och dekompression.
- Resursanvändning – CPU och minne som behövs.
- Kvalitet (vid lossy) – subjektiv eller objektiv mätning (t.ex. PSNR, SSIM för bilder).
När bör man inte komprimera?
- Redan komprimerade eller slumpmässiga data (krypterade filer, ZIP, JPEG) ger i regel liten eller ingen ytterligare vinst och kan ibland bli större pga overhead.
- I system där låg latens och liten CPU-användning är viktigare än lagringsbesparing kan enkel eller ingen komprimering vara bättre.
Säkerhet och praktiska råd
- Komprimera innan du krypterar om du vill få utrymmesbesparing — krypterad data ser slumpmässig ut och komprimerar då inte effektivt.
- Var försiktig med attacker som kan utnyttja komprimering (t.ex. CRIME/BREACH i webbläsare) när data kombineras med konfidentiell information i samma kanal.
- Välj codec/algoritm efter användningsfall: lagring av dokument → lossless (ZIP/gzip), webbilder → balans mellan PNG och JPEG/WebP beroende på bildtyp, video/streaming → modern videocodec för bättre kvalitet per bit.
Sammanfattning
Datakomprimering är ett grundläggande verktyg för att spara utrymme och bandbredd. Genom att förstå skillnaden mellan förlustfri och förlustartad komprimering, de vanliga teknikerna och deras trade-offs (kompressionsgrad vs hastighet vs kvalitet), kan du välja rätt metod för dina behov. I praktiken kombineras flera tekniker för att uppnå bästa möjliga resultat i många tillämpningar.