Atomicテーブルの置き換え
Dorisでは、2つのテーブル間でのアトミック置換操作をサポートしており、OLAPテーブルにのみ適用できます。
適用シナリオ
ユーザーがテーブルデータを書き換える必要がある場合がありますが、削除してからデータをインポートすると、一定期間利用できなくなってしまいます。このような場合、ユーザーはCREATE TABLE LIKE文を使用して同じ構造の新しいテーブルを作成し、新しいデータを新しいテーブルにインポートしてから、古いテーブルをアトミックに置換することができます。パーティションレベルでのアトミック上書き操作については、temporary partition documentationを参照してください。
構文
ALTER TABLE [db.]tbl1 REPLACE WITH TABLE tbl2
[PROPERTIES('swap' = 'true')];
テーブルtbl1をテーブルtbl2で置き換えます。
swapパラメータがtrueの場合、置き換え後、tbl1のデータはtbl2の元のデータになり、tbl2のデータはtbl1の元のデータになります。つまり、2つのテーブルのデータが交換されます。
swapパラメータがfalseの場合、置き換え後、tbl1のデータはtbl2の元のデータになり、tbl2は削除されます。
原理
テーブル置き換え機能は、以下の一連の操作をアトミック操作に変換します。
テーブルAをテーブルBで置き換え、swapがtrueであると仮定すると、操作は以下の通りです:
- テーブルBをテーブルAにリネームする。
- テーブルAをテーブルBにリネームする。
swapがfalseの場合、操作は以下の通りです:
- テーブルAを削除する。
- テーブルBをテーブルAにリネームする。
注意事項
swapパラメータがfalseの場合、置き換えられるテーブル(テーブルA)は削除され、復元できません。- 置き換え操作は2つのOLAPテーブル間でのみ実行でき、テーブル構造の整合性はチェックされません。
- 置き換え操作では、権限チェックがテーブル名に基づいて行われるため、元の権限設定は変更されません。