데이터 압축 모드

데이터 압축 모드 (Compression Modes)

ClickHouse 프로토콜은 체크섬이 있는 데이터 블록 압축을 지원해요. 어떤 모드를 고를지 잘 모르겠다면 LZ4를 사용하세요. 사용 가능한 컬럼 압축 코덱에 대해 더 알아보고, 테이블을 만들 때 또는 이후에 지정하세요.

출처: 문서

본문

모드 (Modes)

value name description
0x02 None 압축 없음, 체크섬만
0x82 LZ4 매우 빠르고, 압축률 좋음
0x90 ZSTD Zstandard, 꽤 빠르고, 압축률 최고

LZ4와 ZSTD는 같은 작성자에 의해 만들어졌지만 서로 다른 트레이드오프를 가져요. Facebook 벤치마크에서:

name ratio encoding decoding
zstd 1.4.5 -1 2.8 500 MB/s 1660 MB/s
lz4 1.9.2 2.1 740 MB/s 4530 MB/s

블록 (Block)

field type description
checksum uint128 (헤더 + 압축 데이터)의 Hash
raw_size uint32 헤더 없는 원시 크기
data_size uint32 압축되지 않은 데이터 크기
mode byte 압축 모드
compressed_data binary 압축된 데이터 블록

헤더는 (raw_size + data_size + mode)이며, raw size는 len(header + compressed_data)로 구성돼요. 체크섬은 ClickHouse CityHash를 사용한 hash(header + compressed_data)예요.

None 모드

None 모드를 사용하면 compressed_data는 원본 데이터와 같아요. No compression 모드는 해싱 오버헤드가 무시할 만하므로, 체크섬으로 추가 데이터 무결성을 보장하는 데 유용해요.

더 알아보기 (Learn more)