メインコンテンツまでスキップ
バージョン: 26.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')];

Tabletbl1をTabletbl2で置き換えます。

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

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

原理

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

TableAをTableBで置き換え、swaptrueの場合、操作は以下の通りです:

  1. TableBをTableAにリネームします。
  2. TableAをTableBにリネームします。

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

  1. TableAを削除します。
  2. TableBをTableAにリネームします。

注意事項

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