테이블 모델 개요
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를 기준으로 사전 집계에 사용 |
잘 설계된 정렬 키의 이점
잘 설계된 정렬 키는 다음 세 가지 측면에서 성능을 개선합니다.
- 쿼리 성능 향상: 정렬 키는 스캔할 데이터양을 줄이는 데 도움이 됩니다. 범위 쿼리나 필터 쿼리는 정렬 키를 기준으로 데이터를 바로 찾을 수 있으며, 정렬이 필요한 쿼리도 정렬 키를 통해 속도를 높일 수 있습니다.
- 데이터 압축 최적화: 정렬 키에 따라 유사한 데이터가 한곳에 모이므로 압축률이 크게 높아지고 스토리지 사용량이 줄어듭니다.
- 중복 제거 비용 절감: Unique 모델에서는 정렬 키를 통해 Doris가 기본 키 중복을 더 효율적으로 제거하고 데이터의 고유성을 보장할 수 있습니다.
정렬 키 설계 권장 사항
Key 열을 설계할 때는 다음 원칙을 따르세요.
- Key 열은 모든 Value 열보다 앞에 와야 합니다.
- 정수 타입을 우선 사용하세요: 정수는 연산과 조회에서 문자열보다 훨씬 효율적입니다.
- 정수의 길이는 필요한 만큼만 사용하세요: 비즈니스에서 요구하는 값의 범위를 충족하는 가장 짧은 정수 타입을 선택하세요.
VARCHAR및STRING의 길이는 필요한 만큼만 사용하세요: 필드 길이를 지나치게 길게 설정하지 마세요.
테이블 모델별 기능 비교
다음 표는 세 가지 테이블 모델의 중복 제거, 뷰, 업데이트 및 데이터 적재 기능 차이를 요약한 것입니다.
| 기능 | Duplicate 모델 | Unique 모델 | Aggregate 모델 |
|---|---|---|---|
| Key 열의 고유성 제약 | 지원하지 않음. Key 열의 값이 중복될 수 있음 | 지원 | 지원 |
| 동기 구체화된 뷰 | 지원 | 지원 | 지원 |
| 비동기 구체화된 뷰 | 지원 | 지원 | 지원 |
UPDATE 문 | 지원하지 않음 | 지원 | 지원하지 않음 |
DELETE 문 | 일부 지원 | 지원 | 지원하지 않음 |
| 데이터 적재 중 전체 행 업데이트 | 지원하지 않음 | 지원 | 지원하지 않음 |
| 데이터 적재 중 일부 열 업데이트 | 지원하지 않음 | 지원 | 일부 지원 |
다음 단계
모델 간 차이를 이해했다면 각 모델의 상세 문서를 살펴보세요.
Duplicate 모델
Duplicate Key 모델의 테이블 생성 구문과 쓰기 동작을 자세히 설명합니다. 로그와 이벤트처럼 원시 레코드를 유지해야 하는 시나리오에 적합합니다.
Unique 모델
Unique Key 모델의 기본 키 중복 제거, UPDATE/DELETE 및 일부 열 업데이트를 자세히 설명합니다. 실시간 업데이트 시나리오에 적합합니다.
Aggregate 모델
Aggregate Key 모델의 사전 집계 동작 방식과 집계 함수 선택 방법을 자세히 설명합니다. 보고서 및 지표 요약 집계 분석에 적합합니다.
모범 사례
테이블 모델 선택 권장 사항, Aggregate 모델의 제약 사항, 테이블 생성 시 Key 열과 데이터 타입에 관한 모범 사례를 설명합니다.