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

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テーブル間でのみ実行でき、テーブル構造の整合性はチェックしません。
  • 置き換え操作は、テーブル名に基づいて権限チェックが行われるため、元の権限設定は変更されません。