ClickHouse의 Tiered Storages

note
ClickHouse의 MergeTree 테이블 엔진은 티어별 리포지터리를 지원합니다. 데이터 저장을 위한 여러 블록 장치 사용에 대한 설명은 설정 및 자세한 설명을 확인하세요.

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>

이 보관 정책에서는 hotcold 두 가지 볼륨이 정의되어 있습니다. 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'
note
이 보관 정책에서 이동은 암묵적으로 발생합니다. hot 데이터를 일정 기간 동안 로컬 디스크에 보관한 후 _cold_로 이동하는 것도 가능합니다.

이 접근 방식은 [Table TTLs](https://clickhouse.com/docs/en/engines/table-engines/mergetree-family/mergetree#mergetree-t