Datakomprimering: Vad det är och hur det fungerar

Upptäck datakomprimering: vad det är, hur det fungerar, vanliga tekniker och hur du sparar lagring samt minskar bandbredd.

Författare: Leandro Alegsa

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.

Förlustfri komprimering

Förlustfri komprimering packar data på ett sådant sätt att det komprimerade paketet kan dekomprimeras och data kan tas ut exakt på samma sätt som när det kom in. Detta är mycket viktigt för datorprogram och arkiv, eftersom även en mycket liten förändring i ett datorprogram gör det oanvändbart.

Den här typen av komprimering fungerar genom att minska mängden spillutrymme i en datamängd. Om du till exempel får ett datapaket som innehåller "AAAAABBBB" kan du komprimera det till "5A4B", som har samma betydelse men tar mindre plats. Denna typ av komprimering kallas "run-length-kodning", eftersom du definierar hur lång "löptiden" för ett tecken är. I exemplet ovan finns det två löpningar: en löpning med 5 A och en annan med 4 B.

Problemet med run-length-kodning är att den endast fungerar på långa delar av samma datavärde. Om du får ett paket med "ABBAABABAABAB" inuti kan det komprimeras till "1A2B2A1B2A1B2A1B", men det är längre än originalet! I det här fallet finns det en annan metod som kan användas: att kontrollera hur ofta ett visst värde förekommer i hela datapaketet. Detta kallas ofta för frekvenskomprimering.

Den vanligaste typen av frekvenskomprimering kallas Huffman-kodning, efter forskaren som kom på idén. Den grundläggande planen är att ge varje distinkt värde i ett datamaterial en kod: värden som dyker upp hela tiden får kortare koder, och värden som bara dyker upp en eller två gånger får längre koder.

Exempel på förlustfri komprimering

  • Arkiveringsformat: Zip, GZip, bZip2, 7-Zip osv.
  • Bilder/diagram: GIF, PNG, PCX
  • Ljud: FLAC, WavPack
  • Video: FFV1, H.264/MPEG-4 AVC High Predictive Profile
  • Programkompressorer: UPX
 

Komprimering med förlust

För vissa typer av data kan förlustkomprimering gå mycket längre, vilket oftast är fallet med mediefiler som musik och bilder. Vid förlustkomprimering förloras en del av datan så att det blir mindre att lagra. Beroende på vilken information som går förlorad märker människor inte att den saknas. Som ett resultat av detta kan den helt enkelt tas bort från data.

Detta fungerar naturligtvis inte för datorprogram och andra data där varje del är viktig; att kasta delar av ett datorprogram är i allmänhet inte bra för programmet.

Exempel på komprimering med förlust

  • Bilder: JPEG
  • Ljud: MP3, Windows Media
  • Video: MPEG, DivX, Windows Video
 

Frågor och svar

F: Vad är datakomprimering?


S: Datakomprimering avser processen att packa data i ett mindre utrymme, samtidigt som det fortfarande är möjligt att komma åt originaldata igen.

F: Vad är syftet med datakomprimering inom databehandling?


S: Datakomprimering är användbart inom databehandling för att spara diskutrymme och för att minska den bandbredd som krävs för att skicka data över internet.

F: Är datakomprimering en enkelriktad process?


S: Nej, datakomprimering är en tvåvägsprocess. Den kan användas för att göra datapaket mindre, men den kan också köras i omvänd ordning för att dekomprimera paketet tillbaka till sin ursprungliga form.

F: Vilka fördelar ger datakomprimering när man skickar data över internet?


S: Genom att komprimera data kan den bandbredd som krävs för att skicka data minskas, vilket i sin tur minskar den tid det tar att skicka data.

F: Varför är det viktigt att originaldata kan visas efter komprimering?


S: Om det inte går att komma åt originaldata efter komprimeringen har den komprimerade datan begränsad användbarhet.

F: Kan datakomprimering hjälpa till att snabba upp överföringen av stora filer?


S: Ja, datakomprimering kan påskynda överföringen av stora filer eftersom mindre filer tar kortare tid att överföra.

F: Vad är en komprimeringsalgoritm?


S: En komprimeringsalgoritm är en uppsättning steg som används för att komprimera data till ett mindre utrymme samtidigt som originaldata kan visas igen.


Sök
AlegsaOnline.com - 2020 / 2025 - License CC3