各テーブルタイプの機能
キーカラムとソートキー
| 主キーテーブル | 重複キーテーブル | 集計テーブル | ユニークキーテーブル | |
|---|---|---|---|---|
| キーカラムとUNIQUE制約 | 主キーにはUNIQUE制約とNOT NULL制約があります。 | 重複キーにはUNIQUE制約がありません。 | 集計キーにはUNIQUE制約があります。 | ユニークキーにはUNIQUE制約があります。 |
| キーカラムとデータ変更の論理的関係 | 新しいデータ行の主キー値がテーブル内の既存のデータ行と同じ場合、ユニーク制約違反が発生します。その場合、新しいデータ行が既存のデータ行を置き換えます。 ユニークキーテーブルと比較して、主キーテーブルは強化された基盤ストレージエンジンを持っており、ユニークキーテーブルを置き換えることができます。 | 重複キーにはUNIQUE制約がありません。そのため、新しいデータ行の重複キー値がテーブル内の既存のデータ行と同じ場合、新旧のデータ行はテーブル内に保持されます。 | 新しいデータ行の集計キー値がテーブル内の既存のデータ行と同じ場合、新旧のデータ行は集計キーと値カラムの集計関数に基づいて集計されます。 | 新しいデータ行のユニークキー値がテーブル内の既存のデータ行と同じ場合、新しいデータ行が既存のデータ行を置き換えます。 ユニークキーテーブルは、集計関数がreplaceである集計テーブルと見なすことができます。 |
| キーカラムとソートキーの関係 | v3.0.0以降、ソートキーは主キーテーブルの主キーから分離されています。 | v3.3.0以降、重複キーテーブルはORDER BYを使用してソートキーを指定することをサポートします。ORDER BYとDUPLICATE KEYの両方が使用される場合、ORDER BYが優先されます。 | v3.3.0以降、ソートキーは集計テーブルの集計キーから分離されています。集計テーブルはORDER BYを使用してソートキーを指定し、AGGREGATE KEYを使用して集計キーを指定することをサポートします。ソートキーと集計キーのカラムは同じである必要がありますが、カラムの順序は同じである必要はありません。 | v3.3.0以降、ソートキーはユニークキーテーブルのユニークキーから分離されています。ユニークキーテーブルはORDER BYを使用してソートキーを指定し、UNIQUE KEYを使用してユニークキーを指定することをサポートします。ソートキーとユニークキーのカラムは同じである必要がありますが、カラムの順序は同じである必要はありません。 |
| キーカラムとソートキーがサポートするデータ型 | 数値(整数とBOOLEANを含む)、文字列、日付(DATEとDATETIME)。 | 数値(整数、BOOLEAN、DECIMALを含む)、文字列、日付(DATEとDATETIME)。 | ||
| キーカラムとパーティション/バケットカラムの関係 | パーティションカラムとバケットカラムは主キーに含まれている必要があります。 | なし | パーティションカラムとバケットカラムは集計キーに含まれている必要があります。 | パーティションカラムとバケットカラムはユニークキーに含まれている必要があります。 |
キーおよび値カラムのデータ型
キーのカラムは、数値(整数、BOOLEAN、DECIMALを含む)、文字列、日付(DATEとDATETIME)をサポートします。
注記
主キーテーブルのキーカラムはDECIMALデータ型をサポートしていません。
一方、値カラムは基本的なデータ型をサポートしており、数値、文字列、日付(DATEとDATETIME)が含まれます。値カラムのBITMAP、HLL、および半構造化型のサポートは、テーブルの種類によって異なります。詳細は以下の通りです:
| 主キーテーブル | 重複キーテーブル | 集計テーブル | ユニークキーテーブル | |
|---|---|---|---|---|
| BITMAP | サポート | サポートされていません | サポート。集計関数はbitmap_union、replace、またはreplace_if_not_nullである必要があります。 | サポート |
| HLL | サポート | サポートされていません | サポート。集計関数はhll_union、replace、またはreplace_if_not_nullである必要があります。 | サポート |
| PERCENTILE | サポート | サポートされていません | サポート。集計関数はpercentile_union、replace、またはreplace_if_not_nullである必要があります。 | サポート |
| 半構造化データ型:JSON/ARRAY/MAP/STRUCT | サポート | サポート | サポート。集計関数はreplaceまたはreplace_if_not_nullである必要があります。 | サポート |
データ変更
| 主キーテーブル | 重複キーテーブル | 集計テーブル | ユニークキーテーブル | |
|---|---|---|---|---|
| データロードによるINSERT | サポート。ロードジョブで__op=0を設定してINSERTを実現。内部実装では、StarRocksはINSERTとUPDATE操作の両方をUPSERT操作として扱います。 | サポート | サポート(同じ集計キー値を持つデータ行は集計されます。) | サポート(同じユニークキー値を持つデータ行は更新されます。) |
| データロードによるUPDATE | サポートされていません | サポート(これは集計関数としてreplaceを使用することで実現できます。) | サポート(ユニークキーテーブル自体はreplace集計関数を使用する集計テーブルと見なすことができます。) | |
| データロードによるDELETE | サポート。ロードジョブで__op=1を設定してDELETEを実現。 | サポートされていません | ||
| ロードされるデータカラム値の整合性 | デフォルトでは、すべてのカラム値をロードする必要があります。ただし、部分カラム更新(partial_update)が有効になっている場合、またはカラムにデフォルト値がある場合は、すべてのカラム値をロードする必要はありません。 | デフォルトでは、すべてのカラム値をロードする必要があります。ただし、カラムにデフォルト値がある場合は、すべてのカラム値をロードする必要はありません。 | デフォルトでは、すべてのカラム値をロードする必要があります。ただし、集計テーブルは値カラムの集計関数をREPLACE_IF_NOT_NULLとして指定することで部分カラム更新を実現できます。詳細はaggr_typeを参照してください。また、カラムにデフォルト値がある場合は、すべてのカラム値をロードする必要はありません。 | デフォルトでは、すべてのカラム値をロードする必要があります。ただし、カラムにデフォルト値がある場合は、すべてのカラム値をロードする必要はありません。 |
| DML INSERT | サポート | |||
| DML UPDATE |
| サポートされていません | ||
| DML DELETE |
|
|
| |
他の機能との互換性
| 主キーテーブル | 重複キーテーブル | 集計テーブル | ユニークキーテーブル | ||
|---|---|---|---|---|---|
| ビットマップインデックス/ブルームフィルターインデックス | キーカラムにインデックスを構築 | サポート | |||
| 値カラムにインデックスを構築 | サポート | サポート | サポートされていません | サポートされていません | |
| パーティション化/バケット化 | 式に基づくパーティション化/リストパーティション化 | サポート | |||
| ランダムバケット法 | サポートされていません | v3.1以降でサポート | サポートされていません | サポートされていません | |
| マテリアライズドビュー | 非同期マテリアライズドビュー | サポート | |||
| 同期マテリアライズドビュー | サポートされていません | サポート | サポート | サポート | |
| その他の機能 | CTAS | サポート | サポート | サポートされていません | サポートされていません |
| バックアップとリストア | v2.5以降でサポート | サポート | |||