概要
数値型
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 はバイト単位の長さで、指定できる範囲は [1, 255] です。
-
VARCHAR(M): 可変長文字列です。M は最大長で、指定できる範囲は [1, 65533] です。
-
STRING: 可変長文字列です。デフォルトの最大長は 1,048,576 バイト(1 MB)です。
string_type_length_soft_limit_bytes設定により、最大長を 2,147,483,643 バイト(2 GB)まで引き上げられます。
バイナリ型
- 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 データ型をサポートします。