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

개요

숫자 타입​

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 데이터 타입은 두 가지입니다:

  • IPv4: IPv4 주소를 4바이트 바이너리 값으로 저장합니다. ipv4_* 함수군과 함께 사용합니다.
  • IPv6: IPv6 주소를 16바이트 바이너리 값으로 저장합니다. ipv6_* 함수군과 함께 사용합니다.