メインコンテンツまでスキップ
バージョン: 2.1

データ型

Apache Dorisは標準SQLシンタックスをサポートし、MySQL Network Connection Protocolを使用して、MySQL構文プロトコルとの高い互換性を実現しています。そのため、データ型サポートの観点では、Apache DorisはMySQLに関連するデータ型と可能な限り密接に整合しています。

Dorisがサポートするデータ型のリストは以下の通りです:

数値データ型

タイプ NameStorage (bytes)デスクリプション
BOOLEAN12つの値のみを格納するBoolean型データ型:0はfalseを表し、1はtrueを表す。
TINYINT1整数値、符号付きの範囲は-128から127まで。
SMALLINT2整数値、符号付きの範囲は-32768から32767まで。
INT4整数値、符号付きの範囲は-2147483648から2147483647まで。
BIGINT8整数値、符号付きの範囲は-9223372036854775808から9223372036854775807まで。
LARGEINT16整数値、範囲は[-2^127 + 1から2^127 - 1]。
FLOAT4単精度浮動小数点数、範囲は[-3.4 * 10^38から3.4 * 10^38]。
DOUBLE8倍精度浮動小数点数、範囲は[-1.79 * 10^308から1.79 * 10^308]。
DECIMAL4/8/16/32精度(総桁数)とスケール(小数点の右側の桁数)で定義される正確な固定小数点数。フォーマット:DECIMAL(P[,S])、ここでPは精度、Sはスケール。Pの範囲は[1, MAX_P]で、MAX_Pはenable_decimal256=falseの場合38、enable_decimal256=trueの場合76。Sの範囲は[0, P]。
enable_decimal256のデフォルト値はfalse。trueに設定するとより正確な結果が得られるが、パフォーマンスの低下を伴う。
ストレージ要件:
  • 0 < precision <= 9の場合4バイト。
  • 9 < precision <= 18の場合8バイト。
  • 18 < precision <= 38の場合16バイト。
  • 38 < precision <= 76の場合32バイト。

日時データ型

タイプ nameStoreage (bytes)デスクリプション
DATE4DATEは暦年、月、日の値を保持し、サポートされる範囲は['0000-01-01', '9999-12-31']。デフォルトの印刷フォーマット:'yyyy-MM-dd'。
DATETIME8DATEとTIMEの組み合わせ。フォーマット:DATETIME ([P])。オプションパラメータPは時刻精度を表し、値の範囲は[0,6]で、最大6桁の小数(マイクロ秒)をサポート。設定されていない場合は0。サポートされる範囲は['0000-01-01 00:00:00 [.000000]', '9999-12-31 23:59:59 [.999999]']。デフォルトの印刷フォーマット:'yyy-MM-dd HH: mm: ss. SSSSSS '。

文字列データ型

タイプ nameStoreage (bytes)デスクリプション
CHARM固定長文字列、パラメータMは文字単位での列の長さを指定。Mの範囲は1から255まで。
VARCHARVariable Length可変長文字列、パラメータMは文字単位での最大文字列長を指定。Mの範囲は1から65533まで。可変長文字列はUTF-8エンコーディングで格納される。英字は1バイト、中国語文字は3バイトを占める。
STRINGVariable Length可変長文字列、デフォルトで1048576バイト(1 MB)をサポートし、最大精度は2147483643バイト(2 GB)まで。サイズはstring_type_length_soft_limit_bytesを通じてBEで調整可能。String型は値列でのみ使用可能で、キー列やパーティションバケット列では使用不可。

半構造化データ型

タイプ nameStoreage (bytes)デスクリプション
ARRAYVariable Length型Tの要素で構成される配列、キー列としては使用不可。現在DuplicateおよびUniqueモデルのTableでの使用がサポートされている。
MAPVariable Length型Kと型Vの要素で構成されるマップ、Key列としては使用不可。これらのマップは現在DuplicateおよびUniqueモデルを使用するTableでサポートされている。
STRUCTVariable Length複数のFieldで構成される構造体、複数の列の集合として理解することも可能。Keyとしては使用不可。現在、STRUCTはDuplicateモデルのTableでのみ使用可能。Struct内のFieldの名前と数は固定されており、常にNullable。
JSONVariable LengthバイナリJSON型、バイナリJSON形式で格納され、JSON関数を通じて内部JSONフィールドにアクセス。デフォルトで最大1048576バイト(1MB)をサポートし、最大2147483643バイト(2GB)まで調整可能。この制限はBE設定パラメータ'jsonb_type_length_soft_limit_bytes'で変更可能。
VARIANTVariable LengthVARIANT データ型は動的に適応可能で、JSONなどの半構造化データ専用に設計されている。任意のJSONオブジェクトを格納でき、ストレージ効率とクエリパフォーマンスの向上のためJSONフィールドを自動的にサブカラムに分割する。長さ制限と設定方法はSTRING型と同じ。ただし、VARIANT型は値列でのみ使用可能で、キー列やパーティション/バケット列では使用不可。

集計データ型

タイプ nameStoreage (bytes)デスクリプション
HLLVariable LengthHLLはHyperLogLogの略で、ファジー重複排除。大きなデータセットを扱う際にCount Distinctより優れたパフォーマンスを発揮。HLLのエラー率は通常約1%で、時には2%に達することもある。HLLはキー列として使用できず、Table作成時の集計型はHLL_UNION。ユーザーは長さやデフォルト値を指定する必要はなく、データの集計レベルに基づいて内部で制御される。HLL列はhll_union_agg、hll_raw_agg、hll_cardinality、hll_hashなどの付随関数を通じてのみクエリまたは使用可能。
BITMAPVariable LengthBITMAP型はAggregateTable、UniqueTableまたはDuplicateTableで使用可能。- UniqueTableまたはDuplicateTableで使用する場合、BITMAPは非キー列として使用する必要がある。- AggregateTableで使用する場合、BITMAPも非キー列として機能し、Table作成時に集計型をBITMAP_UNIONに設定する必要がある。ユーザーは長さやデフォルト値を指定する必要はなく、データの集計レベルに基づいて内部で制御される。BITMAP列はbitmap_union_count、bitmap_union、bitmap_hash、bitmap_hash64などの付随関数を通じてのみクエリまたは使用可能。
QUANTILE_STATEVariable Length近似分位値を計算するために使用される型。ロード時、同じキーで異なる値に対して事前集計を実行。値の数が2048を超えない場合、すべてのデータを詳細に記録。値の数が2048より大きい場合、TDigestアルゴリズムを使用してデータを集計(クラスタ化)し、クラスタ化後の重心点を格納。QUANTILE_STATEはキー列として使用できず、Table作成時に集計型QUANTILE_UNIONと組み合わせて使用する必要がある。ユーザーは長さやデフォルト値を指定する必要はなく、データの集計レベルに基づいて内部で制御される。QUANTILE_STATE列はQUANTILE_PERCENT、QUANTILE_UNION、TO_QUANTILE_STATEなどの付随関数を通じてのみクエリまたは使用可能。
AGG_STATEVariable Length集計関数はstate/merge/union関数コンバイナーとのみ使用可能。AGG_STATEはキー列として使用不可。Table作成時、集計関数のシグネチャを併せて宣言する必要がある。ユーザーは長さやデフォルト値を指定する必要はない。実際のデータストレージサイズは関数の実装に依存。

IP型

タイプ NameStorage (bytes)デスクリプション
IPv44ipv4_*ファミリーの関数と組み合わせて使用。
IPv616ipv6_*ファミリーの関数と組み合わせて使用。

SHOW DATA TYPES;文でDorisがサポートするすべてのデータ型を確認することもできます。