본문으로 건너뛰기
최종 수정: 에

로컬 디스크 계층형 스토리지

Doris는 SSD와 HDD 간 계층형 스토리지를 지원합니다. 동적 파티션과 함께 사용하면 시스템이 데이터의 핫/콜드 특성에 따라 핫 데이터는 SSD에 유지하고 콜드 데이터는 HDD로 자동 마이그레이션하여, 핫 데이터의 고성능 읽기 및 쓰기를 보장하면서 전체 스토리지 비용을 줄일 수 있습니다.

적용 시나리오​

이 문서는 다음 시나리오에 적용됩니다.

  • 테이블 데이터가 시간별로 파티셔닝되어 있고 핫 데이터와 콜드 데이터의 접근 특성이 뚜렷합니다.
  • 클러스터에 SSD와 HDD 스토리지 매체가 모두 있습니다.
  • SSD로 최근 핫 데이터의 쿼리 속도를 높이고 HDD로 과거 콜드 데이터의 저장 비용을 줄이려 합니다.
  • 수동 마이그레이션 없이 동적 파티션으로 데이터 수명 주기를 자동 관리하려 합니다.

빠른 탐색​

핵심 개념​

계층형 스토리지는 동적 파티션을 기반으로 구현됩니다. Doris는 파티션의 활성도에 따라 스토리지 매체를 자동으로 선택하고, 쿨다운 시간에 도달하면 데이터를 대상 매체로 마이그레이션합니다.

핫 파티션과 콜드 파티션​

유형설명스토리지 매체성능 특성
핫 파티션최근에 활성화되어 자주 접근하는 파티션SSD높은 IOPS, 낮은 지연 시간
콜드 파티션접근 빈도가 낮은 과거 데이터HDD대용량, 저비용

작동 방식​

계층형 스토리지의 실행 흐름은 다음과 같습니다.

  1. 테이블 생성 시 동적 파티션을 활성화하고 dynamic_partition.storage_medium = HDD를 설정합니다.
  2. dynamic_partition.hot_partition_num을 사용하여 최근 N개 파티션을 SSD에 저장할 핫 파티션으로 지정합니다.
  3. 시스템이 각 핫 파티션에 storage_cooldown_time을 설정합니다.
  4. 쿨다운 시간에 도달하면 파티션 데이터가 SSD에서 HDD로 자동 마이그레이션됩니다.

동적 파티션에 대한 자세한 내용은 데이터 파티셔닝 - 동적 파티션을 참조하세요.

매개변수 참조​

계층형 스토리지는 다음 두 가지 동적 파티션 매개변수를 사용합니다.

매개변수용도기본값참고
dynamic_partition.hot_partition_num최근 파티션 중 SSD에 저장할 핫 파티션의 개수를 지정합니다없음storage_medium = HDD와 함께 사용해야 합니다
dynamic_partition.storage_medium동적 파티션의 최종 스토리지 매체를 지정합니다HDDSSD로 설정하면 hot_partition_num이 더 이상 적용되지 않습니다

dynamic_partition.hot_partition_num​

  • 기능: 최근 N개 파티션을 핫 파티션으로 지정합니다. 이 파티션들은 SSD에 저장되고 나머지 파티션은 HDD에 저장됩니다.
  • 사용 조건:
    • dynamic_partition.storage_medium = HDD도 설정해야 합니다. 그렇지 않으면 이 매개변수가 적용되지 않습니다.
    • 스토리지 경로에 SSD 장치가 있어야 합니다. 그렇지 않으면 파티션 생성이 실패합니다.

예제:

현재 날짜가 2021-05-20이고 일 단위로 파티셔닝하며 동적 파티션 구성이 다음과 같다고 가정합니다.

dynamic_partition.hot_partition_num = 2
dynamic_partition.start = -3
dynamic_partition.end = 3

시스템은 다음 파티션을 자동으로 생성하고 각 파티션의 스토리지 매체와 쿨다운 시간을 아래와 같이 설정합니다.

p20210517: ["2021-05-17", "2021-05-18") storage_medium=HDD storage_cooldown_time=9999-12-31 23:59:59
p20210518: ["2021-05-18", "2021-05-19") storage_medium=HDD storage_cooldown_time=9999-12-31 23:59:59
p20210519: ["2021-05-19", "2021-05-20") storage_medium=SSD storage_cooldown_time=2021-05-21 00:00:00
p20210520: ["2021-05-20", "2021-05-21") storage_medium=SSD storage_cooldown_time=2021-05-22 00:00:00
p20210521: ["2021-05-21", "2021-05-22") storage_medium=SSD storage_cooldown_time=2021-05-23 00:00:00
p20210522: ["2021-05-22", "2021-05-23") storage_medium=SSD storage_cooldown_time=2021-05-24 00:00:00
p20210523: ["2021-05-23", "2021-05-24") storage_medium=SSD storage_cooldown_time=2021-05-25 00:00:00

dynamic_partition.storage_medium​

  • 기능: 동적 파티션의 최종 스토리지 매체를 지정합니다. 유효한 값은 HDD(기본값) 또는 SSD입니다.
  • 참고:
    • SSD로 설정하면 hot_partition_num 매개변수는 무시됩니다.
    • 이 경우 모든 파티션이 SSD 스토리지를 사용하고 쿨다운 시간이 모두 9999-12-31 23:59:59로 설정되어 마이그레이션이 발생하지 않습니다.

사용 예제​

다음 단계에서는 계층형 스토리지를 지원하는 테이블을 생성하고 파티션의 스토리지 매체 분포를 확인하는 방법을 설명합니다.

1단계: 계층형 스토리지 테이블 생성​

목표: 최근 2개 파티션은 SSD를 사용하고 나머지는 HDD를 사용하도록 SSD/HDD 계층형 스토리지를 활성화한 테이블을 생성합니다.

CREATE TABLE tiered_table (k DATE)
PARTITION BY RANGE(k)()
DISTRIBUTED BY HASH (k) BUCKETS 5
PROPERTIES
(
"dynamic_partition.storage_medium" = "hdd",
"dynamic_partition.enable" = "true",
"dynamic_partition.time_unit" = "DAY",
"dynamic_partition.hot_partition_num" = "2",
"dynamic_partition.end" = "3",
"dynamic_partition.prefix" = "p",
"dynamic_partition.buckets" = "5",
"dynamic_partition.create_history_partition" = "true",
"dynamic_partition.start" = "-3"
);

2단계: 파티션 스토리지 매체 확인​

목표: 파티션이 예상대로 SSD와 HDD에 할당되었는지 확인합니다.

SHOW PARTITIONS FROM tiered_table;

예상 출력: 총 7개의 파티션 중 5개는 SSD를 사용하고 2개는 HDD를 사용합니다.

p20210517: ["2021-05-17", "2021-05-18") storage_medium=HDD storage_cooldown_time=9999-12-31 23:59:59
p20210518: ["2021-05-18", "2021-05-19") storage_medium=HDD storage_cooldown_time=9999-12-31 23:59:59
p20210519: ["2021-05-19", "2021-05-20") storage_medium=SSD storage_cooldown_time=2021-05-21 00:00:00
p20210520: ["2021-05-20", "2021-05-21") storage_medium=SSD storage_cooldown_time=2021-05-22 00:00:00
p20210521: ["2021-05-21", "2021-05-22") storage_medium=SSD storage_cooldown_time=2021-05-23 00:00:00
p20210522: ["2021-05-22", "2021-05-23") storage_medium=SSD storage_cooldown_time=2021-05-24 00:00:00
p20210523: ["2021-05-23", "2021-05-24") storage_medium=SSD storage_cooldown_time=2021-05-25 00:00:00

자주 묻는 질문​

Q1: hot_partition_num이 적용되지 않으면 어떻게 해야 하나요?​

dynamic_partition.storage_medium = HDD도 설정되어 있는지 확인하세요. 핫 파티션 구성은 최종 매체가 HDD일 때만 적용됩니다.

Q2: SSD 스토리지만 사용할 수 있나요?​

네. dynamic_partition.storage_medium을 SSD로 설정하면 모든 파티션이 SSD를 사용하며 쿨다운에 따른 마이그레이션이 발생하지 않습니다. 이 경우 hot_partition_num을 구성할 필요가 없습니다.

Q3: 쿨다운 시간에 도달하면 데이터는 어떻게 마이그레이션되나요?​

파티션의 storage_cooldown_time에 도달하면 시스템이 수동 개입 없이 파티션 데이터를 SSD에서 HDD로 자동 마이그레이션합니다.

Q4: 계층형 스토리지와 핫/콜드 데이터 아카이빙(예: 오브젝트 스토리지)의 차이점은 무엇인가요?​

SSD/HDD 계층형 스토리지는 서로 다른 로컬 디스크 매체 간에 데이터를 이동하는 데 사용되며, 단기에서 중기에 걸친 핫 데이터와 콜드 데이터 분리에 적합합니다. 과거 데이터를 오브젝트 스토리지(S3, HDFS 등)에 아카이빙하려면 핫/콜드 계층형 스토리지 문서를 참조하세요.

문제 해결​

오류 증상가능한 원인해결 방법
파티션 생성 실패스토리지 경로에 SSD 장치가 없음BE 노드에 SSD 스토리지 경로를 구성하거나 HDD 전용 스토리지로 전환합니다
hot_partition_num이 적용되지 않음storage_medium = HDD가 설정되지 않음dynamic_partition.storage_medium = HDD도 구성합니다
모든 파티션이 SSD에 있고 쿨다운 후 HDD로 이동하지 않음storage_medium이 SSD로 설정됨storage_medium을 HDD로 변경하고 hot_partition_num을 구성합니다
데이터가 예상대로 HDD로 마이그레이션되지 않음storage_cooldown_time에 도달하지 않음쿨다운 시간에 도달할 때까지 기다리거나 시간 설정이 올바른지 확인합니다