Retention ポリシー

アイテム保持ポリシーは、テーブルまたは具体化されたビューからデータを自動的に削除するメカニズムを制御します。 テーブルに継続的に流入し、その経過時間に基づいて関連付けられているデータを削除する場合に便利です。 たとえば、2 週間後には不要になる可能性がある診断イベントを保持するテーブルに対して、ポリシーを使用できます。

アイテム保持ポリシーは、特定のテーブル、具体化されたビュー、またはデータベース全体に対して構成できます。 このポリシーは、次にそれをオーバーライドしないデータベース内のすべてのテーブルに適用されます。 ポリシーがデータベース レベルとテーブル レベルの両方で構成されている場合、テーブル内のアイテム保持ポリシーがデータベース ポリシーよりも優先されます。

アイテム保持ポリシーの設定は、データを継続的に取り込んでいるクラスターにとって重要です。これにより、コストを抑えることができます。

アイテム保持ポリシーの "外部" にあるデータは、削除の対象となります。 削除が発生しても、特定の保証はありません。 アイテム保持ポリシーがトリガーされた場合でも、データが "残る" 場合があります。

アイテム保持ポリシーは、インジェスト以降のデータの経過期間を制限するために最も一般的に設定されます。 詳細については、SoftDeletePeriod に関する記事を参照してください。

Note

  • 削除時間は不正確です。 制限を超える前にデータが削除されることはありませんが、削除がその直後に行われるわけではありません。
  • 論理的な削除期間 0 は、テーブルレベルのアイテム保持ポリシーの一部として設定できますが、データベースレベルのアイテム保持ポリシーの一部として設定することはできません。
  • これが行われると、取り込まれたデータがソース テーブルにコミットされず、データを保持する必要がなくなります。 このため、RecoverabilityDisabled にのみ設定できます。
  • このような構成は、主にデータがテーブルに取り込まれるときに便利です。 これを変換し、別のテーブルに出力をリダイレクトするには、トランザクションの更新ポリシーを使用します。

ポリシー オブジェクト

アイテム保持ポリシーには、次のプロパティが含まれます。

  • SoftDeletePeriod:
    • クエリにデータを使用できることが保証される期間です。 期間の測定はデータが取り込まれた時点から開始されます。
    • 既定値は 100 years です。
    • テーブルまたはデータベースの論理的な削除期間を変更すると、新しい値が既存のデータと新しいデータの両方に適用されます。
  • Recoverability:
    • データが削除された後のデータの回復性 (有効または無効) です。
    • 既定値は Enabled です。
    • Enabled に設定した場合、データは論理的に削除されてから 14 日間回復できます。
    • 回復可能期間を構成することはできません。

管理コマンド

デフォルト

既定では、データベースまたはテーブルを作成するときに、アイテム保持ポリシーは定義されていません。 通常は、データベースが作成された後すぐに、既知の要件に従って、その作成者によってアイテム保持ポリシーが設定されます。 ポリシーが設定されていないデータベースまたはテーブルのアイテム保持ポリシーに対して .show コマンドを実行すると、Policynull として表示されます。

既定のアイテム保持ポリシーは、上記の既定値で、次のコマンドを使用して適用できます。

.alter database DatabaseName policy retention "{}"
.alter table TableName policy retention "{}"
.alter materialized-view ViewName policy retention "{}"

コマンドを実行すると、次のポリシー オブジェクトがデータベースまたはテーブルに適用されます。

{
  "SoftDeletePeriod": "36500.00:00:00", "Recoverability":"Enabled"
}

データベースまたはテーブルのアイテム保持ポリシーをクリアするには、次のコマンドを使用します。

.delete database DatabaseName policy retention
.delete table TableName policy retention

MyDatabase という名前のデータベースと、テーブル MyTable1MyTable2、および MySpecialTable を含むクラスターの場合。

論理的な削除期間は 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 日間、回復性は有効

  • テーブル MyTable1MyTable2 を、論理的な削除期間が 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 はデータを無制限に保持する

テーブル MyTable1MyTable2 を、論理的な削除期間が 7 日間、MySpecialTable がデータを無期限に保持するように設定します。

  • "オプション 1": データベース レベルのアイテム保持ポリシーを設定し、論理的な削除期間が MySpecialTable の既定の保持ポリシーである 100 年のテーブルレベルのアイテム保持ポリシーを設定します。

    .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": テーブル MyTable1MyTable2 で、テーブルレベルのアイテム保持ポリシーを設定し、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": テーブル MyTable1MyTable2 で、テーブルレベルのアイテム保持ポリシーを設定します。 テーブル MySpecialTable には、論理的な削除期間が既定のアイテム保持ポリシーである 100 年の、テーブルレベルのアイテム保持ポリシーを設定します。

    .alter-merge table MyTable1 policy retention softdelete = 7d
    .alter-merge table MyTable2 policy retention softdelete = 7d
    .alter table MySpecialTable policy retention "{}"