요즘 엑셀 비슷한 CSV Viewer + 엑셀함수 가능한 스프레드 시트 를 개발 중이다.
우선 1차 목표가 엄청나게 큰 (1GB 이상) CSV 파일을 편집할 수 있는 기능을 우선적으로 개발중이다. 이를 위해 levelDB를 이용하려고 한다. 메모리의 한계로 엄청나게 큰 CSV 파일을 열게 되면 파일 크기몇 배의 메모리를 사용하게 된다. 이 때문에 일시적으로 데이터를 저장하려고 하는데 이 때 levelDB를 사용하려고 하는데 snappy 압축을 적용할 수 있다. 그러다 snappy 자체에 대해 관심을 가지고 되면서 여러 압축을 찾게 되었다.
https://quixdb.github.io/squash-benchmark/ 에 가보면 압축속도, 압축해제 속도, 압축률을 비교해 볼 수 있다.
snappy : 압축속도과 압축해제속도를 중심으로 만들어진 압축알고리즘으로 Google 에서 압축률은 보통 원본의 50% 정도로 줄어든다.
brotli : 이것도 구글에서 만들었는데, 웹사이트 content를 다운받을 때 사용하는 gzip 이나 deflate 의 대용으로 만든 것으로 보인다. 압축레벨을 지정할 수 있다.
zstd : 저 위 링크에 들어가서 오늘 처음으로 알게된 압축 알고리즘으로 facebook에서 만들었다. snappy 에 비해 속도가 늦은 감이 있지만 압축률이 높다.