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

테이블 모델 개요

Doris에서 테이블을 생성할 때는 테이블 모델을 지정해야 합니다. 테이블 모델은 데이터의 저장, 중복 제거, 집계 및 업데이트 방식을 결정합니다. Doris는 Duplicate 모델(Duplicate Key), Unique 모델(Unique Key), Aggregate 모델(Aggregate Key)의 세 가지 테이블 모델을 제공합니다. 각 모델은 원시 데이터 유지, 기본 키를 기준으로 한 업데이트, 사전 집계 분석이라는 세 가지 대표적인 시나리오에 대응합니다. 테이블을 생성한 후에는 테이블 모델을 변경할 수 없으므로 신중하게 선택해야 합니다.

시나리오에 따른 테이블 모델 선택​

다음 표를 참고하면 테이블을 생성하기 전에 사용할 테이블 모델을 빠르게 결정할 수 있습니다.

비즈니스 시나리오권장 모델주요 특징
로그, 이벤트, 행동 분석 등 모든 원시 레코드를 유지해야 하는 경우Duplicate 모델(Duplicate Key)Key 열의 값이 중복될 수 있음. 모든 차원에 대한 애드혹 쿼리에 적합
실시간 차원 테이블, 주문, 사용자 프로필 등 기본 키를 기준으로 업데이트하는 경우Unique 모델(Unique Key)Key 열의 값이 고유함. 동일한 Key에 대해 최신 데이터만 유지
보고서 요약 집계, 트래픽 통계 등 사전 집계가 필요한 정형화된 분석Aggregate 모델(Aggregate Key)Key 열을 기준으로 사전 집계하여 스캔할 데이터양과 연산량을 줄임

세 가지 테이블 모델 상세 설명​

Duplicate Key 모델​

  • 핵심 동작 방식: 지정한 Key 열의 값이 중복될 수 있습니다. 스토리지 계층은 중복 제거나 집계 없이 기록된 모든 데이터를 유지합니다.
  • 적용 시나리오: 로그, 상세 이벤트, 행동 스트림 등 모든 원시 데이터 레코드를 유지해야 하는 경우에 적합합니다.
  • 장점: 집계 제약이 없어 열 기반 스토리지의 이점을 충분히 활용할 수 있습니다. 쿼리는 관련 열만 읽으며 모든 Key 열을 읽을 필요가 없으므로, 모든 차원에 대한 애드혹 쿼리에 적합합니다.
  • 제약 사항: 사전 집계가 제공하는 쿼리 가속 효과를 활용할 수 없습니다.
  • 자세히 보기: Duplicate 모델

Unique Key 모델​

  • 핵심 동작 방식: 각 행의 Key 값은 고유합니다. 스토리지 계층은 각 Key에 대해 가장 최근에 기록된 데이터만 유지합니다.
  • 적용 시나리오: 실시간 차원 테이블, 주문 상태, 사용자 프로필 등 기본 키의 고유성 제약이 필요하고 데이터가 지속적으로 업데이트되는 경우에 적합합니다.
  • 장점: 기본 키의 고유성을 보장하고, UPDATE 및 DELETE 문을 지원하며, 데이터 적재 중 전체 행 업데이트와 일부 열 업데이트를 모두 지원합니다.
  • 제약 사항: ROLLUP과 같은 사전 집계 기능이 제공하는 쿼리 가속 효과를 활용할 수 없습니다.
  • 자세히 보기: Unique 모델

Aggregate Key 모델​

  • 핵심 동작 방식: Key 열을 기준으로 Value 열을 사전 집계합니다. 스토리지 계층은 집계 결과만 유지합니다.
  • 적용 시나리오: 지표 요약 집계, 트래픽 통계, 광고 클릭 집계 등 차원이 고정된 보고서형 쿼리에 적합합니다.
  • 장점: 사전 집계를 통해 쿼리 시 스캔할 데이터양과 필요한 연산량을 크게 줄일 수 있습니다.
  • 제약 사항:
    • count(*) 쿼리에 적합하지 않습니다.
    • Value 열의 집계 방식은 테이블 생성 시 고정됩니다. 다른 유형의 집계 쿼리를 실행할 때는 의미상 올바른 결과가 나오는지 고려해야 합니다.
  • 자세히 보기: Aggregate 모델
일부 열 업데이트

Unique 모델과 Aggregate 모델은 모두 일부 열 업데이트를 지원합니다. 권장 사용 방법은 Unique 모델의 일부 열 업데이트 및 Aggregate 모델의 일부 열 업데이트를 참고하세요.

정렬 키​

Doris는 데이터를 열 단위로 저장하며, 테이블의 열은 두 가지로 나뉩니다.

  • Key 열: 그룹화와 정렬에 사용되며, 테이블 생성 시 명시적으로 지정합니다.
  • Value 열: Key 열과 함께 저장되며, 집계 연산에 사용됩니다.

Key 열은 하나 이상의 필드로 구성될 수 있습니다. 어떤 테이블 모델을 사용하든 테이블 생성 시 Key 열을 지정해야 하며, 스토리지 계층에서는 Key 열을 기준으로 데이터를 정렬하여 저장합니다. Key 열의 의미는 모델에 따라 조금씩 다릅니다.

테이블 모델Key 열의 역할
Duplicate 모델(Duplicate Key)정렬에만 사용하며, 고유성을 강제하지 않음
Unique 모델(Unique Key)정렬과 고유성 제약을 적용하며, 기본 키를 기준으로 중복 제거에 사용
Aggregate 모델(Aggregate Key)정렬과 고유성 제약을 적용하며, Key를 기준으로 사전 집계에 사용

잘 설계된 정렬 키의 이점​

잘 설계된 정렬 키는 다음 세 가지 측면에서 성능을 개선합니다.

  1. 쿼리 성능 향상: 정렬 키는 스캔할 데이터양을 줄이는 데 도움이 됩니다. 범위 쿼리나 필터 쿼리는 정렬 키를 기준으로 데이터를 바로 찾을 수 있으며, 정렬이 필요한 쿼리도 정렬 키를 통해 속도를 높일 수 있습니다.
  2. 데이터 압축 최적화: 정렬 키에 따라 유사한 데이터가 한곳에 모이므로 압축률이 크게 높아지고 스토리지 사용량이 줄어듭니다.
  3. 중복 제거 비용 절감: Unique 모델에서는 정렬 키를 통해 Doris가 기본 키 중복을 더 효율적으로 제거하고 데이터의 고유성을 보장할 수 있습니다.

정렬 키 설계 권장 사항​

Key 열을 설계할 때는 다음 원칙을 따르세요.

  • Key 열은 모든 Value 열보다 앞에 와야 합니다.
  • 정수 타입을 우선 사용하세요: 정수는 연산과 조회에서 문자열보다 훨씬 효율적입니다.
  • 정수의 길이는 필요한 만큼만 사용하세요: 비즈니스에서 요구하는 값의 범위를 충족하는 가장 짧은 정수 타입을 선택하세요.
  • VARCHAR 및 STRING의 길이는 필요한 만큼만 사용하세요: 필드 길이를 지나치게 길게 설정하지 마세요.

테이블 모델별 기능 비교​

다음 표는 세 가지 테이블 모델의 중복 제거, 뷰, 업데이트 및 데이터 적재 기능 차이를 요약한 것입니다.

기능Duplicate 모델Unique 모델Aggregate 모델
Key 열의 고유성 제약지원하지 않음. Key 열의 값이 중복될 수 있음지원지원
동기 구체화된 뷰지원지원지원
비동기 구체화된 뷰지원지원지원
UPDATE 문지원하지 않음지원지원하지 않음
DELETE 문일부 지원지원지원하지 않음
데이터 적재 중 전체 행 업데이트지원하지 않음지원지원하지 않음
데이터 적재 중 일부 열 업데이트지원하지 않음지원일부 지원

다음 단계​

모델 간 차이를 이해했다면 각 모델의 상세 문서를 살펴보세요.