メインコンテンツまでスキップ
に最終更新

概要

数値型​

Doris は次の数値データ型をサポートします。

BOOLEAN​

値は二種類で、0 は false、1 は true を表します。

詳しくは BOOLEAN を参照してください。

整数型​

すべて符号付き整数です。各整数型は、使用するバイト数と表現できる値の範囲が異なります。

  • 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、TIMESTAMP_NS、TIMESTAMPTZ があります。DATE は日単位の精度で日付を格納します。DATETIME はタイムゾーン情報を持たない日時を最大マイクロ秒の精度で格納します。TIMESTAMP_NS はタイムゾーン情報を持たない日時を固定のナノ秒精度で格納し、その範囲は 1677 年から 2262 年です。TIME は時刻のみを保持し、現時点ではテーブルへの格納をサポートせず、クエリ処理中にのみ使用できます。TIMESTAMPTZ はタイムゾーンを考慮する日時型です。値を UTC で格納し、クエリ時にはセッションのタイムゾーンに応じて自動的に変換します。

日時型の値を計算したり数値型に変換したりする場合は、TIME_TO_SEC、DATE_DIFF、UNIX_TIMESTAMP などの関数を使用してください。数値型に直接変換した場合の結果は保証されません。

詳しくは DATE、TIME、DATETIME、TIMESTAMP_NS、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 文字列を使用する場合より 2X を超える速度です。

集約型​

集約データ型は、集約中の結果または中間結果を格納します。集約処理が多いクエリの高速化に使用します。

  • 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_* 系の関数と組み合わせて使用します。

UUID​

UUID は、128 ビットの識別子型で、固定長の 16 バイトを使用します。正規形式またはコンパクト形式の十六進数テキストを受け付け、正規形式の小文字テキストを出力します。比較、ソート、グループ化、結合をサポートします。