存储生命周期策略

存储生命周期策略 是一种架构级对象,可自动管理标准和交互式 Snowflake 表的数据生命周期。使用这些策略可根据您定义的条件(例如数据存在时间或其他标准)来归档或使特定表行过期。Snowflake 每天使用共享计算资源自动执行这些策略。

存储生命周期策略的工作原理

存储生命周期策略工作流程概述

要开始使用存储生命周期策略,请完成以下步骤:

  1. 创建一个策略,其中包含用于识别需归档或过期行的表达式。

  2. 将策略附加到一个或多个表

将存储生命周期策略附加到表后,Snowflake 大约会等待 24 小时才首次运行该策略。经过初始延迟后,Snowflake 将每日自动使用共享计算资源运行该策略,以识别并处理符合您定义条件的行。

当策略运行时,它会根据您的表达式检查每一行,并将数据归档到 COOL 或 COLD 存储,或使数据过期(永久删除)。您可以在数据过期前使用 CREATE TABLE ... FROM ARCHIVE OF 命令检索已归档的数据。Snowflake 会等待指定的归档期结束后,才将数据从归档存储中过期处理。

存储生命周期策略从归档到过期的流程概述。

主要功能

存储生命周期策略为管理 Snowflake 数据提供以下优势。

降低存储成本

存储生命周期策略通过自动将较旧的数据移至更具成本效益的 归档层 来帮助优化成本。对于必须长期保留但访问频率较低的数据,与标准存储层级相比,归档存储可显著降低存储成本。

法规合规性

通过配置策略以根据监管标准归档或使数据过期,自动满足合规性要求。您可以在数据过期前将其归档特定时长,也可以不经过归档直接使其过期。这可确保您的数据管理遵循组织的治理标准。

简单的数据管理

存储生命周期策略通过自动执行归档和过期规则,消除了手动数据管理任务。有关更多信息,请参阅 Monitor storage lifecycle policies

灵活的数据检索

通过创建一个仅包含所需数据行的新表,精确 检索已归档的数据。使用带有 WHERE 子句的简单命令,精确指定要恢复的归档数据。

归档存储层

Snowflake 支持将数据归档到以下存储层级:

归档层

描述

COOL

提供快速检索时间,确保数据立即可用。最短归档期为 90 天。

COLD

比 COOL 层节省更多成本(便宜四倍)。最短归档期为 180 天。与 COOL 层相比,COLD 的数据检索时间更长(最多 48 小时)。从 COLD 存储层进行数据检索操作时,每次恢复操作最多支持 100 万个文件。

选择归档层

选择归档层时,请考虑以下因素:

  • 归档成本:两个层的归档数据一次性成本相同。

  • 存储成本:COLD 层的存储费用低于 COOL 层。

  • 检索成本:COLD 层的数据检索费用低于 COOL 层。

  • 检索时间:COOL 存储层提供即时数据检索,而 COLD 层的检索可能需要长达 48 小时。

重要

如果您将归档存储策略附加到表,则该表在其生命周期内将永久分配给指定的归档层。您无法通过应用新策略来更改归档层。例如,您不能先在 ALTER TABLE...DROP STORAGE LIFECYCLE POLICY 中指定一个使用 COOL 归档层创建的策略,随后又修改表以添加一个使用 COLD 归档层创建的策略。若要更改表的归档层,请联系 Snowflake 支持部门,请求删除当前已归档的数据。有关其他注意事项,请参阅 归档存储策略

有关详细定价信息,请参阅 Snowflake 服务消耗表 中的表 3(e) 和 4(f)。

有关归档数据的更多信息,请参阅 创建存储生命周期策略归档存储注意事项

注意事项

使用存储生命周期策略时,请考虑以下信息。

云提供商支持

  • 过期策略:支持托管在所有云提供商上的账户:Amazon Web Services (AWS)、Microsoft Azure 和 Google Cloud。

  • 归档策略

    • COOL 层:适用于托管在 AWS 和 Microsoft Azure 上的账户。

    • COLD 层:仅适用于托管在 AWS 上的账户。

支持的表和功能

  • 支持的表:标准 Snowflake 表和 交互式表 支持存储生命周期策略。为了评估和应用存储生命周期策略表达式,Snowflake 会在内部暂时绕过表上的任何治理策略。

  • 复制

    • Snowflake 会将存储生命周期策略及其与表的关联复制到目标账户,但不会运行这些策略。

    • Snowflake 不会复制位于 COOL 或 COLD 层级的存档数据。故障转移后,源账户中的存档数据在目标账户中不可用。

    • 故障转移到目标账户后,Snowflake 会暂停原始主账户中的存储生命周期策略执行。故障恢复至原始主账户后,Snowflake 会恢复策略执行。

    • 即使在故障转移后,Snowflake 也永远不会在辅助表上自动运行辅助存储生命周期策略。但是,您可以通过将辅助策略附加到 表的方式,在目标账户中使用它们。对于这些新表,Snowflake 会运行策略。

  • **克隆*:Snowflake 不会自动将存储生命周期策略应用于克隆表。如果您对克隆组中的某个表应用存储生命周期策略,Snowflake 仅会归档该特定表中的行。该策略不会影响克隆。这会在标准存储层和归档存储层中创建数据副本,您需要为每个层的存储付费。有关成本信息,请参阅 存储生命周期策略计费

  • 不支持的功能

    以下功能不支持存储生命周期策略:

    • 除不自动刷新的常规 Snowflake 表、动态表和交互式表之外的所有对象类型。

    • 一次写入多次读取 (WORM) 快照,即创建后无法修改的不可变快照。

    • 提供者表和使用者表都通过 Snowflake 数据共享进行共享。

    • 原生应用。

    • 具有外部访问权限的用户定义函数 (UDFs) 和外部函数。

    • Python、Java 或 Scala UDFs。

    • 行时间戳

策略行为和执行

存储生命周期策略使用的性能指南与 行级访问策略指南 相似,并具有以下自动运行特征:

  • 当您将存储生命周期策略附加到表时,Snowflake 大约会等待 24 小时才首次运行该策略。

  • Snowflake 每日使用共享计算资源运行存储生命周期策略。有关存储生命周期策略成本的信息,请参阅 存储生命周期策略计费

  • 为防止归档或过期运行时间过长,Snowflake 会以较小的分块增量处理大型数据操作。大型操作可能无法在单次每日运行中完成,而需要跨多个每日运行才能完成。

  • 当存储生命周期策略在表上运行时,Snowflake 会锁定 UPDATE、DELETE 和 MERGE 操作。您仍然可以在此期间执行 INSERT 和 COPY 操作。有关更多信息,请参阅 资源锁定

归档存储策略

在使用附加了归档存储生命周期策略的表时,请考虑以下信息:

  • 访问归档数据:Snowflake 归档行后,您无法直接查询它们。要访问这些数据,请使用 CREATE TABLE ... FROM ARCHIVE OF 命令创建一个包含已归档数据副本的新表。有关更多信息,请参阅 检索归档数据

  • 安全:您可以使用 Tri-Secret Secure (TSS),通过定期密钥轮换来保护归档数据。

  • 密钥更新:Snowflake 不会对归档数据进行密钥更新。如果您怀疑密钥遭到泄露,请执行以下步骤:

    1. 使用 CREATE TABLE... FROM ARCHIVE OF 命令将归档数据检索到新表中。

    2. 需要时将数据归档到新表中。

      每个表都有自己的加密密钥,因此新表实际上使用的是新密钥。

    3. 删除原始表(其密钥已泄露)的归档数据。

  • 归档层限制

    • 您无法将策略的 归档层 从 COOL 更改为 COLD,或从 COLD 更改为 COOL。请改为创建新策略。有关说明,请参阅 重新创建存储生命周期策略

    • 一个表 在其生命周期内 只能使用一个存档层。例如,您不能将使用 COLD 归档层的策略附加到已使用 COOL 归档层的表中,反之亦然。此外,您不能通过修改表来删除策略,随后再附加一个指定不同归档层的策略。

  • 移除策略:当您从表中移除策略时,已归档的数据仍保留在归档存储中,并且仍可被检索。

  • 移除或截断表

    • 截断表不会影响该表的已归档数据。截断表后,您仍可从归档存储中检索数据。

    • 当您在适用的 Time Travel 数据保留期 内使用 UNDROP TABLE 恢复表时,Snowflake 也会恢复归档存储中的任何数据。

    • 当表处于 故障安全 期内时,归档存储中的数据或许可以通过联系 Snowflake 支持团队执行故障安全数据恢复步骤来恢复。

    • 在 ARCHIVE_FOR_DAYS 期限届满前删除的归档存储中的表数据仍会产生存储费用。有关更多信息,请参阅 最短存储期限费用