데이터 엔지니어 기술 블로그

[압축 방식 비교] gzip vs snappy vs lz4 vs brotli vs zstd vs lzo 본문

데이터 엔지니어링

[압축 방식 비교] gzip vs snappy vs lz4 vs brotli vs zstd vs lzo

jun_yeong_park 2021. 7. 10. 12:05
반응형

개요

데이터를 수집하고 가공하고 제공을 하기 위해서 보통 아주 많은 양의 데이터들을 다루게 된다. 파일을 저장할 때 압축을 하지 않는다면 파일의 크기가 커지는 동시에 비용도 증가하게 된다. 이것을 줄이기 위해서 보통은 압축을 해서 저장을 하게 된다. 저장하는 방식에는 여러가지가 있는데 이번에는 각 압축 방식마다 어떤 특징이 있는지 알아보려고 한다.

 

 

압축 방식들

gzip

GNU zip의 줄임말이며 초기 유닉스 시스템에 쓰이던 압축 프로그램을 대체하기 위해 만들어졌다. 1992년 10월 31일에 처음 공개되었다. 무손실 압축 데이터 알고리즘(DEFLATE)을 사용한다.

파일 형식 중에 하나인 타르(tar)와 함께 .tar.gz 형식으로 자주 사용된다. 이 경우 다른 파일끼리 중복되는 부분을 압축시킬 수 있다.

tar & gzip

Snappy 보다 더 많은 CPU리소스를 사용하지만 더 높은 압축을 할 수 있다. 그러나 압축률이 높기 때문에 자주 사용하지 않는 콜드 데이터에 적합하다.

 

snappy

구글에서 2011년에 자체 개발한 압축 라이브러리이다. 압축률을 적당한 수준으로 제공하면서 빠르게 압축하고 해제하는 것을 목표로 한다. 다른 압축 방식에 비해 CPU를 덜 사용하고, 초당 250MB 정도를 압축한다. lzo보다 성능이 더 좋을 때가 있으므로 lzo와 비교한다면 직접 테스트해보는 것이 좋다.

 

lz4

무손실 압축 알고리즘으로 매우 빠르게 초당 500MB 이상을 압축한다. 사용자 정의로 CPU를 더 사용해서 압축을 더 할 수 있게 해준다. LZ4_HC라는 높은 압축을 해주는 것을 사용할 수 있다.

 

brotli 

구글에서 2013년에 발표된 압축 알고리즘이다. 텍스트 압축에 가장 적합하기 때문에 웹 서버 등에서 인터넷 웹 사이트를 더 빠르게 로드하는데에 사용된다. 2020년부터 AWS CloudFront에서도 지원한다.

 

zstd

페이스북에서 개발한 무손실 데이터 압축 알고리즘이다. gzip과 비슷한 압축률을 제공하지만 압축 해제를 할 때는 더 빠르다. 오픈 소스로 제공되고 있으며 이 링크에서 소스를 확인해볼 수 있다.

 

 

lzo

Lempel–Ziv–Oberhumer(LZO)도 압축 해제가 매우 빠르며 DEFLATE 압축에 비해 더 높은 압축 속도를 제공한다. 압축 해제를 위해 소스와 대상 버퍼 외에 추가 메모리가 필요하지 않으며, 압축 비율과 압축 속도 간의 균형을 조절할 수 있다. gzip보다 더 적은 CPU 리소스를 사용한다. 자주 액세스해야하는 데이터에 사용하면 좋다.



반응형
Comments