Database/Cassandra

[Cassandra] Compaction, Compression

bisi 2020. 6. 24. 18:29

개요

 

카산드라 테이블 생성시, 상세 옵션을 보면 compression과 compaction이 있다. 

 

create table test
(
    logtime text,
    log              text,
    primary key (log, logtime)
)
    with clustering order by (logtime asc)
     and caching = {'keys': 'ALL', 'rows_per_partition': 'NONE'}
     and compaction = {'max_threshold': '32', 'min_threshold': '4', 'class': 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy'}
     and compression = {'class': 'org.apache.cassandra.io.compress.LZ4Compressor', 'chunk_length_in_kb': '64'}
     and dclocal_read_repair_chance = 0.1;

 

한국말로 번역하면 둘다 압축인데 정확한  용어 정리가 필요할것 같다. 

 

컴퓨터과학에서의 용어 정의

A Dictionary of Computer Science에 정의된 내용은 아래와 같다.

Compression 

파일 또는 데이터 스트림에서 중복 정보 제거 데이터 압축이라는 용어는 비록 압축이 간결함을 추구하는 과정에서 정보의 손실을 허용하지만, 일반적으로 같은 것을 의미하기 위해 사용된다. 따라서 압축의 효과는 정확히 되돌릴 수 있다.

일반적으로 이산형 및 연속형 시스템의 맥락에서 이산형 시스템의 출력은 축약될 경우 손실 없이 압축된다. 데이터 압축은 예를 들어 텍스트(소스 프로그램 포함)와 컴퓨터 코드를 포함하는 파일에 적합하다. 팩스 전송에서, 블랙 픽셀의 위치는 별개로 인코딩되며, 그래서 다시 데이터 압축이 사용된다.

데이터 압축은 확률론적 또는 통계적 방법으로 수행될 수 있으며, 특정 알고리즘은 이들 중 하나 또는 다른 하나에 적합할 수 있다. 데이터 압축 알고리즘은 더 효과적일 수도 있고 덜 효과적일 수도 있고, 더 효율적일 수도 있다(인코딩과 디코딩에 걸리는 시간의 경제). 대체로 이러한 요구는 모순된다. 예를 들어, Huffman 인코딩은 제한되지 않을 때 최적으로 효과적이지만 소스의 높은 확장이 필요할 수 있으며, 작은 알파벳(대규모의 비트 조작을 필요로 하는 최종적으로 2진수)을 가지는 아웃풋 스트림이 필요하다. Huffman cas는 따라서 매우 비효율적이다. 반면에, 렘펠-지브 압축은 매우 효율적이며, 주어진 시간 내에 유사한 제약이 있는 허프만 코드보다 더 효과적일 수 있다.

 

Compaction 

(1) 데이터 압축에 대한 또 다른 방법은 데이터 압축은 손실 없는 반면 데이터 압축은 필요하지 않다(def 참조 (2))

(2) 정보이론이나, 품질에 대한 정밀도, 정의 또는 유사한 측정의 보존이 품질에 대한 필요성보다 덜 중요하다는 의미에서 중복될 수 있는 정보의 파일이나 데이터 스트림(data stream)을 제거하는 것은, 데이터를 줄여야 할 필요성보다 덜 중요하다. 공식적 의미에서는 약어는 무손실이고 후자의 의미에서는 무손실이다. 압축은 두 종류 중 하나 또는 모두를 허용하며, 따라서 그 효과가 항상 정확하게 되돌릴 수 있는 것은 아니다.
일반적으로 이산형 및 연속형 시스템의 맥락에서 연속형 시스템의 출력, 연속형 시스템의 출력, 축약형이라면 종종 손실 압축될 수 있다. 이것은 특히 사운드와 반쪽과 컬러의 이미지에서 두드러지게 나타난다. 이미지 압축을 참조하십시오.

 

 

카산드라에서의 용어 정의

 

  Compression  Compaction

개념

카산드라는 운영자에게 테이블별로 압축(Compression)을 구성할 수 있는 기능을 제공한다. 압축(Compression)은 사용자가 지정한 압축크기(chunk_length_in_kb)만큼 SSTable을 압축시킴으로써 디스크에 데이터 크기를 감소 시킨다. 

카산드라에서 압축(Compaction)은 카산드라의 수행 종류에 따라 다르게 사용되지만, 
아래 수행에 대한 공통 점은 하나 또는 여러개의 SSTable에서 새로운 결과 SSTable을 가진다는 것이다. 

* 수행 종류 : Minor compaction, Major compaction, User defined compaction, Scrub, Upgradesstables, Cleanup, Secondary index rebuild, Anticompaction, Sub range compaction
설정 5가지 옵션

LZ4Compressor

LZ4Compressor

ZstdCompressor

SnappyCompressor

DeflateCompressor
3가지 전략 

Size Tiered Compaction Strategy 
기본 압축 전략. 

Leveled Compaction Strategy
많은 작업량, 많은양의 업데이트, 삭제 작업시 적합함.

Time Window Compaction Strategy
TTL에 적합. 불변한

 

 

 

 

 

참고사이트

https://www.ibm.com/support/knowledgecenter/SSLTBW_2.3.0/com.ibm.zos.v2r3.iata600/iat2n2_Compression_and_Compaction.htm