ClickHouse의 Tiered Storages
MergeTree 문서에서 인용한 내용은 다음과 같습니다:
MergeTree 패밀리 테이블 엔진은 여러 블록 장치에 데이터를 저장할 수 있습니다. 예를 들어, 특정 테이블의 데이터가 암시적으로 “hot” 및 “cold”로 분할될 때 유용할 수 있습니다. 가장 최근 데이터는 정기적으로 요청되지만 소수의 공간만 필요합니다. 반면에, 꼬리가 불어난 역사적 데이터는 드물게 요청됩니다.
Amazon S3와 같은 원격 리포지터리 백엔드와 함께 사용하면 매우 효율적인 저장 체계가 됩니다. 이를 통해 저장 정책을 사용하여 일정 기간 동안 데이터를 로컬 디스크에 보관한 후 객체 리포지터리로 이동할 수 있습니다.
구성 예시는 다음과 같습니다:
<storage_configuration>
<disks>
<fast_ssd>
<path>/mnt/fast_ssd/clickhouse/</path>
</fast_ssd>
<gcs>
<support_batch_delete>false</support_batch_delete>
<type>s3</type>
<endpoint>https://storage.googleapis.com/${BUCKET_NAME}/${ROOT_FOLDER}/</endpoint>
<access_key_id>${SERVICE_ACCOUNT_HMAC_KEY}</access_key_id>
<secret_access_key>${SERVICE_ACCOUNT_HMAC_SECRET}</secret_access_key>
<metadata_path>/var/lib/clickhouse/disks/gcs/</metadata_path>
</gcs>
...
</disks>
...
<policies>
<move_from_local_disks_to_gcs> <!-- 보관 정책 이름 -->
<volumes>
<hot> <!-- 볼륨 이름 -->
<disk>fast_ssd</disk> <!-- 디스크 이름 -->
</hot>
<cold>
<disk>gcs</disk>
</cold>
</volumes>
<move_factor>0.2</move_factor>
<!-- 이동 계수는 데이터를 hot 볼륨에서 cold로 이동할 시점을 결정합니다.
자세한 내용은 ClickHouse 문서를 참조하세요. -->
</moving_from_ssd_to_hdd>
....
</storage_configuration>
이 보관 정책에서는 hot
과 cold
두 가지 볼륨이 정의되어 있습니다. hot
볼륨이 disk_size * move_factor
의 점유율로 채워지면 데이터가 Google Cloud Storage (GCS)로 이동됩니다.
이 보관 정책이 기본값이 아닌 경우에는 해당 보관 정책을 사용하여 테이블을 생성합니다. 예를 들어:
CREATE TABLE key_value_table (
event_date Date,
key String,
value String,
) ENGINE = MergeTree
ORDER BY (key)
PARTITION BY toYYYYMM(event_date)
SETTINGS storage_policy = 'move_from_local_disks_to_gcs'
이 접근 방식은 [Table TTLs](https://clickhouse.com/docs/en/engines/table-engines/mergetree-family/mergetree#mergetree-t