Retention ポリシー
アイテム保持ポリシーは、テーブルまたは具体化されたビューからデータを自動的に削除するメカニズムを制御します。 テーブルに継続的に流入し、その経過時間に基づいて関連付けられているデータを削除する場合に便利です。 たとえば、2 週間後には不要になる可能性がある診断イベントを保持するテーブルに対して、ポリシーを使用できます。
保持ポリシーは、特定のテーブル、具体化されたビュー、またはデータベース全体に対して構成できます。 このポリシーは、データベース内のすべてのテーブルに適用されます。データベースはオーバーライドされません。 ポリシーがデータベース レベルとテーブル レベルの両方で構成されている場合、テーブル内のアイテム保持ポリシーがデータベース ポリシーよりも優先されます。
データを継続的に取り込む場合は、アイテム保持ポリシーを設定することが重要であり、コストが制限されます。
アイテム保持ポリシーの "外部" にあるデータは、削除の対象となります。 削除が発生しても、特定の保証はありません。 アイテム保持ポリシーがトリガーされた場合でも、データが "残る" 場合があります。
アイテム保持ポリシーは、インジェスト以降のデータの経過期間を制限するために最も一般的に設定されます。 詳細については、SoftDeletePeriod に関する記事を参照してください。
Note
- 削除時間は不正確です。 制限を超える前にデータが削除されることはありませんが、削除がその直後に行われるわけではありません。
- 論理的な削除期間 0 は、テーブルレベルのアイテム保持ポリシーの一部として設定できますが、データベースレベルのアイテム保持ポリシーの一部として設定することはできません。
- これが行われると、取り込まれたデータがソース テーブルにコミットされず、データを保持する必要がなくなります。 このため、
Recoverability
はDisabled
にのみ設定できます。 - このような構成は、主にデータがテーブルに取り込まれるときに便利です。 これを変換し、別のテーブルに出力をリダイレクトするには、トランザクションの更新ポリシーを使用します。
- 具体化されたビューのアイテム保持ポリシーは、ソース テーブルではなくビューにのみ影響します。 ソース データは影響を受けません。
ポリシー オブジェクト
アイテム保持ポリシーには、次のプロパティが含まれます。
- SoftDeletePeriod:
- クエリにデータを使用できることが保証される期間です。 期間の測定はデータが取り込まれた時点から開始されます。
- 既定値は
1,000 years
です。 - テーブルまたはデータベースの論理的な削除期間を変更すると、新しい値が既存のデータと新しいデータの両方に適用されます。
- 回復可能性:
- データが削除された後のデータの回復性 (有効または無効) です。
- 既定値は
Enabled
です。 Enabled
に設定した場合、データは論理的に削除されてから 14 日間回復できます。- 回復可能期間を構成することはできません。
管理コマンド
- データベース、テーブル、または具体化されたビューの現在のアイテム保持ポリシーを表示するには、
.show policy retention
を使用します。 - データベース、テーブル、または具体化されたビューの現在のアイテム保持ポリシーを変更するには、
.alter policy retention
を使用します。
既定
既定では、データベースまたはテーブルを作成するときに、アイテム保持ポリシーは定義されていません。 通常は、データベースが作成された後すぐに、既知の要件に従って、その作成者によってアイテム保持ポリシーが設定されます。
ポリシーが設定されていないデータベースまたはテーブルのアイテム保持ポリシーに対して .show
コマンドを実行すると、Policy
が null
として表示されます。
既定のアイテム保持ポリシーは、上記の既定値で、次のコマンドを使用して適用できます。
.alter database DatabaseName policy retention "{}"
.alter table TableName policy retention "{}"
.alter materialized-view ViewName policy retention "{}"
コマンドを実行すると、次のポリシー オブジェクトがデータベースまたはテーブルに適用されます。
{
"SoftDeletePeriod": "365000.00:00:00", "Recoverability":"Enabled"
}
データベースまたはテーブルのアイテム保持ポリシーをクリアするには、次のコマンドを使用します。
.delete database DatabaseName policy retention
.delete table TableName policy retention
例
テーブルがMyTable1
、MyTable2
、およびMySpecialTable
を持つ、MyDatabase
という名前のデータベースがある環境の場合。
論理的な削除期間は 7 日間、回復性は無効
データベース内のすべてのテーブルを、論理的な削除期間が 7 日間、回復性が無効に設定します。
"オプション 1 (推奨)": データベースレベルのアイテム保持ポリシーを設定し、テーブルレベルのポリシーが設定されていないことを確認します。
.delete table MyTable1 policy retention // optional, only if the table previously had its policy set .delete table MyTable2 policy retention // optional, only if the table previously had its policy set .delete table MySpecialTable policy retention // optional, only if the table previously had its policy set .alter-merge database MyDatabase policy retention softdelete = 7d recoverability = disabled .alter-merge materialized-view ViewName policy retention softdelete = 7d
"オプション 2": 各テーブルについて、論理的な削除期間が 7 日間、回復性が無効になっているテーブルレベルのアイテム保持ポリシーを設定します。
.alter-merge table MyTable1 policy retention softdelete = 7d recoverability = disabled .alter-merge table MyTable2 policy retention softdelete = 7d recoverability = disabled .alter-merge table MySpecialTable policy retention softdelete = 7d recoverability = disabled
論理的な削除期間は 7 日間、回復性は有効
テーブル
MyTable1
とMyTable2
を、論理的な削除期間が 7 日間、回復性が無効に設定します。MySpecialTable
を、論理的な削除期間が 14 日間、回復性が有効に設定します。"オプション 1 (推奨)": データベースレベルのアイテム保持ポリシーを設定し、テーブルレベルのアイテム保持ポリシーを設定します。
.delete table MyTable1 policy retention // optional, only if the table previously had its policy set .delete table MyTable2 policy retention // optional, only if the table previously had its policy set .alter-merge database MyDatabase policy retention softdelete = 7d recoverability = disabled .alter-merge table MySpecialTable policy retention softdelete = 14d recoverability = enabled
"オプション 2": 各テーブルについて、論理的な削除期間および回復性と共にテーブルレベルのアイテム保持ポリシーを設定します。
.alter-merge table MyTable1 policy retention softdelete = 7d recoverability = disabled .alter-merge table MyTable2 policy retention softdelete = 7d recoverability = disabled .alter-merge table MySpecialTable policy retention softdelete = 14d recoverability = enabled
論理的な削除期間は 7 日間で、MySpecialTable
はデータを無制限に保持する
テーブル MyTable1
と MyTable2
を、論理的な削除期間が 7 日間、MySpecialTable
がデータを無期限に保持するように設定します。
オプション 1: データベース レベルのアイテム保持ポリシーを設定し、
MySpecialTable
の既定の保持ポリシーである 1,000 年の論理的な削除期間を持つテーブル レベルのアイテム保持ポリシーを設定します。.delete table MyTable1 policy retention // optional, only if the table previously had its policy set .delete table MyTable2 policy retention // optional, only if the table previously had its policy set .alter-merge database MyDatabase policy retention softdelete = 7d .alter table MySpecialTable policy retention "{}" // this sets the default retention policy
"オプション 2": テーブル
MyTable1
とMyTable2
で、テーブルレベルのアイテム保持ポリシーを設定し、MySpecialTable
のデータベースレベルとテーブルレベルのポリシーが設定されていないことを確認します。.delete database MyDatabase policy retention // optional, only if the database previously had its policy set .delete table MySpecialTable policy retention // optional, only if the table previously had its policy set .alter-merge table MyTable1 policy retention softdelete = 7d .alter-merge table MyTable2 policy retention softdelete = 7d
"オプション 3": テーブル
MyTable1
とMyTable2
で、テーブルレベルのアイテム保持ポリシーを設定します。 テーブルMySpecialTable
の場合は、既定のアイテム保持ポリシーである 1,000 年の論理的な削除期間を持つテーブル レベルのアイテム保持ポリシーを設定します。.alter-merge table MyTable1 policy retention softdelete = 7d .alter-merge table MyTable2 policy retention softdelete = 7d .alter table MySpecialTable policy retention "{}"