メインコンテンツまでスキップ

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で置き換えられ、swaptrue であると仮定すると、操作は以下のようになります:

  1. テーブルBをテーブルAにリネームする。
  2. テーブルAをテーブルBにリネームする。

swapfalse の場合、操作は以下のようになります:

  1. テーブルAを削除する。
  2. テーブルBをテーブルAにリネームする。

注意事項

  • swap パラメータが false の場合、置き換えられるテーブル(テーブルA)は削除され、復旧できません。
  • 置き換え操作は2つのOLAPテーブル間でのみ実行でき、テーブル構造の一貫性はチェックされません。
  • 置き換え操作は元の権限設定を変更しません。権限チェックはテーブル名に基づいて行われるためです。