데이터 압축

데이터 압축은 데이터를 더 적은 저장 공간에 효율적으로 기록하기 위한 기술, 또는 그 기술의 실제 적용을 가리킨다. 크게 데이터를 더 작은 크기로 변환시키는 인코딩 과정과 저장된 데이터를 다시 불러와 원래 데이터 형태로 복원시키는 디코딩 과정으로 이루어진다. 이때 인코딩하기 전의 데이터 크기와 인코딩하고 나서의 데이터 크기의 비율을 압축률이라고 한다. 압축 기술의 종류에 따라 데이터의 내용을 바꾸지 않고 원래 내용 그대로 디코딩할 수 있는 무손실 압축과 더 높은 압축률을 얻을 수 있지만 디코딩한 데이터의 세부적인 디테일을 일부 희생시키는 손실 압축이 존재한다. 대표적인 무손실 압축 알고리즘에는 반복 길이 부호화와 허프만 부호화, 산술 부호화 등이 있다. 손실 압축 알고리즘은 인간의 감각 기관의 특성을 역이용하여 압축률을 높이므로, 음성, 정지화상, 동영상 등 데이터의 종류에 따라 각각 다른 알고리즘이 사용된다. MPEG 표준 압축기술이 많이 쓰인다. 압축률 비교 다른 방식의 데이터 압축에 대한 테스트 결과이다. 괄호 안의 숫자는 압축 방식의 순위이다. .htm, .txt와 같은 텍스트 파일은 압축하기 쉬우며 압축률이 높은 경우가 많다. 이미 압축되어 있는 파일들(.rar, .zip과 같은 알려진 압축파일, .mpg, .mp3, .jpg와 같은 멀티미디어 파일)은 더 이상 압축할 여지가 적기 때문에, 한 번 더 압축할 때에는 용량이 크게 줄어들지 않는다. 그러므로 압축률이 낮다고 할 수 있다. 헤더 데이터가 추가되기 때문에, 파일이 오히려 더 커질 가능성도 있다. {| class="wikitable" ! colspan="16" | 다른 방식의 데이터 압축 비교 |----- | bgcolor="#ffffaa" align="center" | 파일 | bgcolor="#ffffaa" | *.avi || bgcolor="#ffffaa" | *.dll | bgcolor="#ffffaa" | *.doc | bgcolor="#ffffaa" | *.exe || bgcolor="#ffffaa" | *.gif | bgcolor="#ffffaa" | *.htm | bgcolor="#ffffaa" | *.jpg || bgcolor="#ffffaa" | *.mp3 | bgcolor="#ffffaa" | *.mpg | bgcolor="#ffffaa" | *.pdf || bgcolor="#ffffaa" | *.txt | bgcolor="#ffffaa" | *.wav | bgcolor="#ffffaa" | *.zip || bgcolor="#ffffaa" | 표기 | bgcolor="#ffffaa" | 총합 |----- | bgcolor="#ffffaa" align="center" | 파일 수 | bgcolor="#ffffaa" | 16 || bgcolor="#ffffaa" | 26 | bgcolor="#ffffaa" | 138 | bgcolor="#ffffaa" | 24 || bgcolor="#ffffaa" | 246 | bgcolor="#ffffaa" | 79 | bgcolor="#ffffaa" | 44 || bgcolor="#ffffaa" | 29 | bgcolor="#ffffaa" | 8 | bgcolor="#ffffaa" | 36 || bgcolor="#ffffaa" | 8 | bgcolor="#ffffaa" | 1 | bgcolor="#ffffaa" | 19 || bgcolor="#ffffaa" | | bgcolor="#ffffaa" | 674 |----- | bgcolor="#ffffaa" align="center" | 처음 크기 | bgcolor="#ffffaa" | 5,261,152 || bgcolor="#ffffaa" | 5,254,220 | bgcolor="#ffffaa" | 5,254,656 | bgcolor="#ffffaa" | 5,254,056 || bgcolor="#ffffaa" | 5,246,209 | bgcolor="#ffffaa" | 5,261,187 | bgcolor="#ffffaa" | 5,246,116 || bgcolor="#ffffaa" | 5,250,432 | bgcolor="#ffffaa" | 5,257,720 | bgcolor="#ffffaa" | 5,257,876 || bgcolor="#ffffaa" | 5,253,436 | bgcolor="#ffffaa" | 5,256,024 | bgcolor="#ffffaa" | 5,262,680 || bgcolor="#ffffaa" | | bgcolor="#ffffaa" | 68,315,764 |----- | align="center" | 7z || 4,524,067 (2) | 1,543,179 (3) || 147,690 (3) || 3,910,541 (3) | bgcolor="#ddffdd" | 4 620 354 (1) | 341,996 (4) || 4,770,061 (4) || 5,053,813 (2) | 4,879,067 (5) || 4,258,863 (3) | 1,270,884 (3) || 3,670,225 (5) || 5,226,742 (14) | 16/20 44,217,482 |----- | align="center" | arj || 4,696,659 (9) | 2,160,530 (15) || 1,018,050 (17) || 4,130,505 (11) | 4,702,449 (12) | 898,370 (17) || 4,803,740 (11) || 5,108,093 (17) | 4,910,699 (16) || 4,606,736 (15) | 1,875,329 (16) || 4,450,535 (12) || 5,223,905 (13) | 6.1/20 48,585,600 |----- | align="center" | bh || 4,703,291 (12) | 2,156,986 (12) || 1,010,284 (15) || 4,128,594 (9) | 4,693,021 (9) | 889,650 (15) || 4,806,914 (13) || 5,105,811 (13) | 4,904,209 (11) || 4,601,545 (13) | 1,848,972 (13) || 4,451,648 (15) || 5,201,639 (4) | 7.5/20 48,502,564 |----- | align="center" | bz2 || 4,720,926 (18) | 2,095,832 (7) || 573,721 (5) || 4,273,885 (18) | 4,896,084 (18) | 645,243 (5) || 4,743,918 (2) || 5,069,593 (4) | 4,888,293 (7) || 4,444,829 (5) | 1,531,448 (6) || 3,771,508 (7) || 5,238,677 (16) | 11.7/20 46,893,957 |----- | align="center" | bza || 4,639,340 (6) | 2,166,940 (17) || 987,806 (11) || 4,231,254 (17) | 4,878,327 (17) | 783,188 (8) || 4,787,973 (7) || 5,076,189 (5) | 4,873,810 (2) || 4,618,970 (17) | 1,516,326 (5) || 3,770,938 (6) || 5,227,572 (15) | 9.8/20 47,558,633 |----- | align="center" | cab || 4,701,113 (11) | 2,148,386 (10) || 893,796 (7) || 4,127,044 (8) | 4,678,810 (5) | 842,129 (10) || 4,798,500 (8) || 5,099,787 (8) | 4,900,314 (10) || 4,584,969 (8) | 1,846,233 (12) || 4,451,857 (18) || 5,201,717 (5) | 10.8/20 48,274,655 |----- | align="center" | gza | 4,703,371 (13) || 2,157,116 (13) || 1,001,990 (13) | 4,126,436 (7) || 4,693,136 (10) | 874,444 (12) || 4,803,739 (10) || 5,105,765 (12) | 4,904,249 (12) | 4,597,720 (11) || 1,840,188 (11) || 4,451,638 (14) | 5,201,436 (3) || 9.2/20 48,461,228 |----- | align="center" | j || 4,678,506 (8) | 1,914,777 (5) || 703,722 (6) || 4,057,445 (5) | 4,681,437 (6) | 691,916 (6) || 4,805,059 (12) || 5,092,070 (7) | 4,898,847 (8) || 4,326,394 (4) | 1,629,228 (8) || 3,594,954 (4) || 5,215,150 (12) | 13/20 46,289,505 |----- | align="center" | jar | 4,704,088 (14) || 2,158,273 (14) || 1,017,205 (16) | 4,129,816 (10) || 4,705,456 (13) | 893,622 (16) || 4,809,136 (16) || 5,107,254 (15) | 4,904,615 (13) | 4,603,367 (14) || 1,849,394 (14) || 4,451,718 (16) | 5,202,611 (8) || 6.2/20 48,536,555 |----- | align="center" | lha || 4,711,090 (16) | 2,215,476 (18) || 1,020,194 (18) || 4,204,071 (15) | 4,830,501 (15) | 913,845 (18) || 4,918,792 (19) || 5,206,933 (19) | 5,066,716 (19) || 4,802,049 (19) | 1,895,771 (17) || 4,447,253 (10) || 5,263,136 (18) | 6.7/20 49,495,827 |----- | align="center" | lzh || 4,711,090 (16) | 2,215,476 (18) || 1,066,340 (19) || 4,143,461 (14) | 4,819,157 (14) | 971,166 (19) || 4,816,349 (18) || 5,107,584 (16) | 4,924,974 (18) || 4,635,416 (18) | 1,945,961 (19) || 4,449,756 (11) || 5,212,837 (11) | 5.3/20 49,019,567 |----- | align="center" | pkz || bgcolor="#ffdddd" | 4,899,083 (20) | bgcolor="#ffddec" | 2,354,373 (20) | bgcolor="#ffdddd" | 1,173,097 (20) || bgcolor="#ffdddd" | 4,401,289 (20) | 5,120,590 (19) | bgcolor="#ffdddd" | 1,018,250 (20) || bgcolor="#ffdddd" | 5,162,114 (20) | bgcolor="#ffdddd" | 5,253,006 (20) | bgcolor="#ffdddd" | 5,203,747 (20) || bgcolor="#ffdddd" | 5,076,577 (20) | bgcolor="#ffdddd" | 2,084,290 (20) | bgcolor="#ffdddd" | 5,027,854 (20) || 5,264,213 (19) | bgcolor="#ffdddd" | 0.2/20 52,038,483 |----- | align="center" | rar | 4,634,009 (5) || 1,693,150 (4) || 173,313 (4) | 3,948,241 (4) || 4,639,881 (4) | 318,269 (3) || 4,780,095 (6) || 5,081 085 (6) | 4,887,973 (6) | 4,258,775 (2) || 1,318,381 (4) || 2,657,731 (3) | 5,202,579 (7) || 15.5/20 43,593,482 |----- | align="center" | rk || 4,589,894 (3) | 1,474,339 (2) | bgcolor="#ddffdd" | 132,629 (1) || bgcolor="#ddffdd" | 3,866,814 (1) | 4,628,017 (3) | bgcolor="#ddffdd" | 257,588 (1) || bgcolor="#ddffdd" | 4,434,701 (1) | bgcolor="#ddffdd" | 5,017,545 (1) | bgcolor="#ddffdd" | 4,787,286 (1) || 4,498,992 (6) | bgcolor="#ddffdd" | 1,168,720 (1) | bgcolor="#ddffdd" | 1,659,771 (1) || bgcolor="#ddffdd" | 5,183,337 (1) | bgcolor="#ddffdd" | 18.2/20 41,699,633 |----- | align="center" | rs || 4,625,725 (4) | 2,137,145 (9) || 937,954 (10) || 4,221,864 (16) | 4,850,493 (16) | 768,711 (7) || 4,776,635 (5) || 5,066,886 (3) | 4,878,852 (3) || 4,612,537 (16) | 1,560,879 (7) || 3,804,335 (8) || 5,240,116 (17) | 10.7/20 47,482,132 |----- | align="center" | sqx || 4,662,560 (7) | 2,078,866 (6) || 991,992 (12) || 4,105,933 (6) | 4,699,518 (11) | 878,469 (14) || 4,808,697 (15) || 5,102,452 (10) | 4,908,341 (14) || 4,590,245 (10) | 1,836,245 (9) || 4,415,575 (9) || 5,208,275 (10) | 9.8/20 48,287,168 |----- | align="center" | gz || 4,707,481 (15) | 2,165,409 (16) || 907,006 (8) || 4,133,949 (12) | 4,684,949 (7) | 861,638 (11) || 4,807,701 (14) || 5,105,913 (14) | 4,909,789 (15) || 4,588,822 (9) | 1,853,650 (15) || 4,451,792 (17) || 5,202,392 (6) | 7.8/20 48,380,491 |----- | align="center" | uha || bgcolor="#ddffdd" | 4,498,275 (1) | bgcolor="#ddffdd" | 1,474,005 (1) || 136,880 (2) || 3,879,360 (2) | 4,625,014 (2) | 284,363 (2) || 4,760,572 (3) || 5,104,837 (11) | 4,879,047 (4) || bgcolor="#ddffdd" | 4,237,400 (1) | 1,233,812 (2) || 2,435,124 (2) || 5,187,408 (2) | 17.3/20 44,736,097 |----- | align="center" | yz1 || 4,814,935 (19) | 2,128,899 (8) || 924,706 (9) || 4,279,162 (19) | 4,686,669 (8) | 804,198 (9) || 4,810,966 (17) || 5,124,596 (18) | 4,922,886 (17) || 4,568,274 (7) | 1,901,300 (18) || 4,561,179 (19) || 5,207,874 (9) | 6.4/20 48,735,644 |----- | align="center" | zip | 4,701,064 (10) || 2,155,923 (11) || 1,009,814 (14) | 4,135,619 (13) || bgcolor="#ffdddd" | 5,270,565 (20) | 877,679 (13) || 4,799,508 (9) || 5,101,205 (9) | 4,898,961 (9) | 4,599,883 (12) || 1,839,080 (10) || 4,450,719 (13) | bgcolor="#ffdddd" | 5,264,564 (20) || 7.5/20 49,104,584 |----- | bgcolor="#ffffaa" align="center" | 압축 크기중간값 | bgcolor="#ffffaa" | 4,701,089 || bgcolor="#ffffaa" | 2,152,155 | bgcolor="#ffffaa" | 962,880 | bgcolor="#ffffaa" | 4,130,160 || bgcolor="#ffffaa" | 4,696,327 | bgcolor="#ffffaa" | 851,884 | bgcolor="#ffffaa" | 4,803,740 || bgcolor="#ffffaa" | 5,103,645 | bgcolor="#ffffaa" | 4,902,262 | bgcolor="#ffffaa" | 4,593,983 || bgcolor="#ffffaa" | 1,839,634 | bgcolor="#ffffaa" | 4,448,505 | bgcolor="#ffffaa" | 5,210,556 || bgcolor="#ffffaa" | | bgcolor="#ffffaa" | 48,519,559 |----- | bgcolor="#ffffaa" align="center" | 압축률중간값 | bgcolor="#ffffaa" | 10.6 % || bgcolor="#ffffaa" | 59.0 % | bgcolor="#ffffaa" | 81.7 % | bgcolor="#ffffaa" | 21.4 % || bgcolor="#ffffaa" | 10.5 % | bgcolor="#ffffaa" | 83.8 % | bgcolor="#ffffaa" | 8.4 % || bgcolor="#ffffaa" | 2.8 % | bgcolor="#ffffaa" | 6.8 % | bgcolor="#ffffaa" | 12.6 % || bgcolor="#ffffaa" | 65.0 % | bgcolor="#ffffaa" | 15.4 % | bgcolor="#ffffaa" | 1.0 % || bgcolor="#ffffaa" | | bgcolor="#ffffaa" | 29.0 % |} 위에 나온 것들 가운데 가장 좋은 방식을 세 가지 들면, rk, rar 그리고 7z과 같다. WinRK과 WinRar은 상용 소프트웨어이지만, 7-Zip는 자유 오픈 소스이며 (LGPL 라이선스), 리눅스에서도 동작한다. 같이 보기 정보 엔트로피 그림 압축 실행 파일 압축 각주 컴퓨팅 유틸리티 소프트웨어 종류 영상 압축 화상 통화