(출처:Centralgalaxy)
컴퓨터를 사용하다 보면 다양한 압축 파일을 접하게 됩니다. 아마 가장 많이 보이는 확장자는 ‘.zip’일 거예요. zip 파일은 원본보다 용량이 적고, 여러 파일을 한곳에 보관할 수 있어서 편리해요. 내부 파일이 필요할 때는 전용 소프트웨어로 압축을 해제하면 되고요. 즉 원할 때마다 데이터 압축, 해제를 반복해서 사용할 수 있다는 건데요. 어떻게 가능한 걸까요.
잠깐, 배경지식부터
원리를 알기 전 데이터 압축에 대한 배경지식을 알 필요가 있어요. 데이터 압축에는 다양한 방식이 쓰이거든요. 우리가 컴퓨터 사용 중에 다루는 파일은 대부분 압축된 형태입니다. 예를 들어 jpg 파일은 이미지 압축 형식 중 하나입니다. mp3 음악 파일, wmv·avi·mp4 등 영상 파일도 마찬가지에요. 즉 zip는 수많은 압축 파일 중 하나라는 겁니다.
(출처:Pixabay)
왜 이처럼 많은 압축 기법이 존재하는 걸까요. 데이터 용량을 줄여서 얻는 이점이 많기 때문이에요. 먼저 데이터 저장 공간을 절약할 수 있어요. 데이터를 압축하면 원본보다 크기가 줄어드니 여유가 늘어나겠죠. 용량이 줄면 인터넷에서 파일을 더 빠르게 주고받을 수 있고요. 압축 서비스 중에는 암호화 기능을 제공하기도 해요. 보안 강화에 도움이 된다는 거죠.
데이터 압축 기술이 없었으면 지금과 같은 일상을 누리기 어려웠을 거예요. 위에서 언급한 압축 파일이 존재하지 않을 테니까요. 또 TV 방송 시청, 모바일 네트워크 이용도 지금처럼 원활하지 않았을 겁니다. 방송국이 방송 신호를 송출하거나, 이동통신을 주고받을 때도 압축기술이 쓰이거든요. 통화, 오디오·영상 스트리밍 시청 등 모두 쉽지 않게 되겠죠.
(출처:Pixabay)
압축 기술, 뭐가 있지
압축 파일이 한 종류가 아닌 것처럼, 압축 기술도 다양합니다. 대표적인 압축 알고리즘으로는 RLE(Run Length Encoding), 허프만 코딩(Huffman coding), LZ(Lempel Ziv) 등이 있어요. 그중 가장 고전적인 방식은 RLE인데요. 오래된 만큼 압축 원리도 단순해요. 쉽게 말해 중복되는 데이터를 반복되는 횟수만큼 표기하거든요.
RLE 압축 알고리즘 작동 원리(출처:api.video)
RLE는 각 문자가 몇 번 반복되는지를 확인하는데요. ‘AAAAABBBBCCCDDE’라는 문자열이 있다고 가정해봅시다. A가 5번 반복됐네요. 그러면 ‘A5’라고 표기하는 겁니다. B는 4번, C는 3번 나왔으니 각각 ‘B4C3’가 되겠죠. 같은 방법으로 나머지 문자까지 나타내면 ‘A5B4C3D2E1’가 되는 겁니다. 한눈에 봐도 글자 수가 많이 줄어들었죠.
허프만 코딩과 LZ는 굉장히 복잡해요. 간단하게 설명하면 이렇습니다. 허프만 코딩은 데이터 빈도를 중요하게 여겨요. 가장 많이 나온 데이터에 적은 용량을 차지하는 비트(bit)를 부여하는 거죠. 컴퓨터는 0과 1만 이용한 이진법으로 데이터를 연산합니다. 비트는 0과 1을 표현하는 컴퓨터의 가장 작은 저장 용량 단위에요.
예를 들어 ‘AAAABBBCCD’라는 문자열이 있다고 봅시다. A가 4번, B가 3번, C가 2번, D가 1번 나왔어요. A가 가장 많이 반복됐으니 이진수 1을 줍니다. 그다음 B에는 10(십진수 2), C에는 11(십진수 3), D에는 100(십진수 4)을 부여하는 거죠. 그러면 압축된 형태는 ‘11111010101111100’ 되는데요. 이진수라 실제 차지하는 용량은 더 적어요. 참고로 실제 이진수를 부여하는 과정은 이처럼 간단하지 않아요.
LZ 알고리즘은 데이터를 차례로 살펴보면서 중복 패턴을 간결하게 압축합니다. 이를 위해 사전이라는 공간을 마련해, 데이터를 분류해요.(출처:Study of LZ 77 and LZ 78 Data Compression Techniques)
LZ는 중복 패턴을 간결하게 줄이는 압축 방식이라고 보면 돼요. LZ는 데이터를 차례로 살펴보고, 발견한 패턴을 미리 저장해요. 예컨대 ‘ABABBA’란 문자열이 있다고 해봐요. 첫 글자는 A죠. LZ는 A를 사전 내 1번으로 저장해요. B는 2번으로 등록하죠. 그다음은 A인데 이미 A는 사전에 있죠? 그러면 다음 글자까지 합친 AB를 3번에 넣는 거죠.
다음 글자는 B인데 사전에 있으니까 또 다음 글자를 봅니다. 그럼 ‘BA’가 보일 텐데요. 사전에 없는 문자니까 등록해요. LZ는 이런 과정을 반복하는데요. 이를 통해 더 긴 문자열도 사전에 저장한 내용을 따라 축약해 표기할 수 있다는 장점이 있어요. 물론 실제 작동 과정은 훨씬 복잡하거나 파생 기술이 많죠. 허프만 코딩, LZ 둘 다요.
압축하면 원본은 괜찮나
압축은 크게 원본 데이터를 그대로 복원할 수 있는 무손실 압축과 데이터 손상이 동반되는 손실 압축으로 나뉩니다.(출처:삼성SDS)
압축은 크게 무손실 압축과 손실 압축으로 나뉩니다. 무손실 압축은 원본 데이터 보존이 중요한 곳에 주로 쓰이는데요. 앞서 설명한 세 가지 방식 모두 무손실 압축에 해당해요. zip 파일도 원본 데이터를 유지하는 무손실 압축이죠. LZ 계열과 허프만 방식을 사용하거든요. PNG, GIF 등 이미지 파일, FLAC과 같은 오디오 파일 역시 무손실 압축 방식이죠.
반면 손실 압축은 압축 시 일부 데이터가 삭제되는 방식이에요. 손실 압축은 주로 오디오나 비디오 파일에서 사용되죠. JPEG, MP3, MPEG와 같은 파일이 대표적인 손실 압축 파일이에요. 이를 위해 손실 압축에는 비손실 압축과 다른 여러 기법이 쓰이는데요. 기회가 되면 다음에 다뤄볼게요.
✔ 데이터 압축 원리
1. 우리가 접하는 대부분 컴퓨터 파일은 압축된 형태입니다.
2. 압축 파일의 대명사 zip 파일은 그중 한 종류에 불과해요.
3. 대표적인 압축 알고리즘은 RLE, 허프만 코딩, LZ 등이 있어요.
4. RLE는 중복되는 데이터를 줄이는 단순한 압축 기술이에요.
5. 허프만 코딩은 사용 빈도가 많은 데이터를 우선 선별해요.
6. 이후 많이 반복된 데이터에 저용량 비트를 부여해 용량을 줄여요.
7. LZ는 중복 패턴을 찾아 저장한 뒤, 간결하게 줄이는 방식이에요.
테크플러스 에디터 윤정환
tech-plus@naver.com
댓글0