개요
숫자 타입
Doris는 다음 숫자 데이터 타입을 지원합니다:
BOOLEAN
가능한 값은 두 가지입니다. 0은 false를, 1은 true를 나타냅니다.
자세한 내용은 BOOLEAN을 참조하세요.
정수
모두 부호 있는 정수입니다. INT 타입은 차지하는 바이트 수와 표현할 수 있는 값의 범위에 따라 구분됩니다:
-
TINYINT: 1바이트, [-128, 127]
-
SMALLINT: 2바이트, [-32768, 32767]
-
INT: 4바이트, [-2147483648, 2147483647]
-
BIGINT: 8바이트, [-9223372036854775808, 9223372036854775807]
-
LARGEINT: 16바이트, [-2^127, 2^127 - 1]
부동소수점
정밀도가 보장되지 않는 부동소수점 타입인 FLOAT와 DOUBLE을 지원하며, 각각 일반적인 프로그래밍 언어의 float와 double에 해당합니다.
고정소수점
정밀한 고정소수점 타입인 DECIMAL을 지원하며, 금융 등 엄격한 정확도가 필요한 경우에 사용합니다.
날짜 타입
날짜 타입에는 DATE, TIME, DATETIME, TIMESTAMPTZ가 있습니다. DATE 타입은 날짜만 일 단위로 저장하고, DATETIME 타입은 날짜와 시간을 마이크로초 단위까지 저장할 수 있습니다. TIME 타입은 시간만 저장하며, 현재 테이블 생성 및 저장에는 사용할 수 없고 쿼리 처리 과정에서만 사용할 수 있습니다. TIMESTAMPTZ는 시간대를 인식하는 날짜 및 시간 타입으로, 값을 UTC로 저장하고 쿼리 시 세션 시간대에 따라 자동으로 변환합니다.
날짜 및 시간 타입에 대한 연산을 수행하거나 숫자 타입으로 변환할 때는 TIME_TO_SEC, DATE_DIFF, UNIX_TIMESTAMP 등의 함수를 사용하세요. 숫자 타입으로 직접 변환한 결과는 보장되지 않습니다.
자세한 내용은 DATE, TIME, DATETIME, TIMESTAMPTZ 문서를 참조하세요.
문자열 타입
Doris는 다음과 같은 고정 길이 및 가변 길이 문자열을 지원합니다:
-
CHAR(M): 고정 길이 문자열이며, M은 바이트 단위의 길이입니다. M의 범위는 [1, 255]입니다.
-
VARCHAR(M): 가변 길이 문자열이며, M은 최대 길이입니다. M의 범위는 [1, 65533]입니다.
-
STRING: 기본 최대 길이가 1,048,576바이트(1 MB)인 가변 길이 문자열입니다. 최대 길이는 2,147,483,643바이트(2 GB)까지 늘릴 수 있으며,
string_type_length_soft_limit_bytes설정으로 조정합니다.
바이너리 타입
- VARBINARY: 가변 길이 바이너리 바이트 시퀀스이며, M은 바이트 단위의 최대 길이입니다. VARCHAR와 유사하지만 문자 집합이나 콜레이션 없이 바이트 단위로 저장하고 비교합니다. 파일 조각, 암호화된 데이터, 압축된 데이터 등 임의의 바이너리 데이터를 저장하는 데 적합합니다. 4.0부터 지원됩니다. 현재 Doris에서 테이블 생성 및 저장에는 사용할 수 없지만, Catalog를 사용하여 다른 데이터베이스의 BINARY 컬럼을 Doris에 매핑해 사용할 수 있습니다.
반정형 타입
Doris는 JSON 데이터 처리를 위해 다양한 반정형 데이터 타입을 지원하며, 각 타입은 서로 다른 사용 사례에 맞게 설계되었습니다.
-
ARRAY / MAP / STRUCT: 중첩 데이터와 고정 스키마를 지원하므로 사용자 행동 및 프로필 분석과 같은 분석 워크로드와 Parquet 등의 데이터 레이크 형식에 대한 쿼리에 적합합니다. 스키마가 고정되어 있어 동적 스키마 추론에 따른 오버헤드가 없으므로 쓰기 및 분석 성능이 높습니다.
-
VARIANT: 중첩 데이터와 유연한 스키마를 지원합니다. 로그, 트레이스, IoT 데이터 분석과 같은 분석 워크로드에 적합합니다. 유효한 JSON 데이터를 모두 수용할 수 있으며, 데이터는 컬럼 지향 저장 형식의 하위 컬럼으로 자동 확장됩니다. 이 방식은 높은 저장 압축률과 데이터 집계, 필터링 및 정렬 성능을 제공합니다.
-
JSON: 중첩 데이터와 유연한 스키마를 지원합니다. 동시성이 높은 포인트 쿼리에 최적화되어 있습니다. 유연한 스키마를 통해 유효한 JSON 데이터를 모두 수집할 수 있으며, 데이터는 바이너리 형식으로 저장됩니다. 이 바이너리 JSON 형식에서 필드를 추출하는 속도는 일반 JSON 문자열을 사용할 때보다 2배 넘게 빠릅니다.
집계 타입
집계 데이터 타입은 집계 결과나 집계 과정의 중간 결과를 저장합니다. 집계 작업이 많은 쿼리를 가속화하는 데 사용합니다.
-
BITMAP: (UV) 통계나 사용자 세분화 등에서 정확한 중복 제거를 위해 사용합니다.
bitmap_union,bitmap_union_count,bitmap_hash,bitmap_hash64등의 BITMAP 함수와 함께 사용합니다. -
HLL: 근사 중복 제거에 사용하며,
COUNT DISTINCT보다 성능이 뛰어납니다.hll_union_agg,hll_raw_agg,hll_cardinality,hll_hash등의 HLL 함수와 함께 사용합니다. -
QUANTILE_STATE: 근사 백분위수 계산에 사용하며,
PERCENTILE함수보다 성능이 뛰어납니다.QUANTILE_PERCENT,QUANTILE_UNION,TO_QUANTILE_STATE등의 함수와 함께 사용합니다. -
AGG_STATE: 집계를 가속화하는 데 사용하며, state/merge/union과 같은 집계 함수 조합자와 함께 사용합니다.
IP 타입
IP 데이터 타입은 IP 주소를 바이너리 형식으로 저장하므로 문자열로 저장할 때보다 쿼리 속도가 빠르고 공간 효율이 높습니다. 지원하는 IP 데이터 타입은 두 가지입니다: