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