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

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')];

Table tbl1 をTable tbl2 で置き換えます。

swap パラメータが true の場合、置き換え後に tbl1 のデータは元の tbl2 のデータとなり、tbl2 のデータは元の tbl1 のデータとなります。つまり、2つのTableのデータが交換されます。

swap パラメータが false の場合、置き換え後に tbl1 のデータは元の tbl2 のデータとなり、tbl2 は削除されます。

原理

Table置き換え機能は、以下の一連の操作をアトミック操作に変換します。

Table A をTable B で置き換え、swaptrue の場合、操作は以下のとおりです:

  1. Table B をTable A にリネームする。
  2. Table A をTable B にリネームする。

swapfalse の場合、操作は以下のとおりです:

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

注意事項

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