列表的自动履行¶
如果您是提供商,则可以对列表使用 Cross-Cloud Auto-Fulfillment(自动履行)来自动将您的数据产品复制到其他 Snowflake 区域,而无需手动复制数据。
当为列表启用自动履行时,Snowflake 会根据需要自动将您的数据产品履行到使用者区域。数据产品是附加到您的列表中的任何共享或应用程序包。
通过使用自动履行,您可以避免手动复制数据产品和批准列表请求,从而帮助使用者更快地访问您的列表。
备注
目前,只有 Amazon Web Services (AWS) 和 Microsoft Azure 支持在 Snowflake Native App with Snowpark Container Services 中使用 Cross-Cloud Auto-Fulfillment。有关更多信息,请参阅 了解 Snowflake Native App Framework 中的限制。
了解自动履行¶
自动履行让您可以根据您为列表选择的可用性和访问选项在任何受支持的 Snowflake 区域提供数据产品,而无需手动复制数据。
当列表处于草稿或已发布状态时,您可以配置和启用自动履行。当为列表启用自动履行时,Snowflake 会根据需要自动将列表的产品履行到相应的区域。
您如何在其他区域提供数据产品取决于您的数据产品以及使用者如何访问您的列表:
如果您的数据产品是应用程序包,请使用自动履行功能在其他区域提供数据产品。
如果您的数据产品是共享,则可在大多数情况下使用自动履行:
对于 Snowflake Marketplace 上免费的或受限试用列表,您可以使用 Cross-Cloud Auto-Fulfillment 或 手动复制数据。
对于付费列表,您可以使用自动履行。
对于与特定使用者账户共享的所有列表,Snowsight 会自动检测目标账户是否处于不同的区域并启用自动履行。您无法手动将私密列表复制到其他区域。
当您在其他区域提供数据产品时,需额外付费。请参阅 自动履行成本。
自动履行的工作原理¶
作为提供商,您为列表设置 Cross-Cloud Auto-Fulfillment 后,Snowflake 会管理 安全共享区 (SSA) 的配置以及将数据产品自动履行到远程区域。SSA 由 Snowflake 管理。如果您的数据产品已经存在于远程区域,则该区域的使用者可以立即获取数据产品。
每个列表都有关联的数据产品(共享或应用程序包)。该数据产品包含来自一个或多个数据库的对象以及应用程序包的应用程序逻辑。您的数据产品自动履行到远程区域的确切时间取决于您提供列表的方式:
在指定的使用者获得您的列表后,私密列表会自动履行。
在特定区域的使用者获得列表后,Snowflake Marketplace 上共享的公开列表会自动履行。
当您的数据产品首次自动履行到新区域时,它将被转移到该区域的 SSA。与复制不同,自动履行无法保持持续同步的副本。可以使用 FULL_DATABASE 或 SUBDB 设置来配置自动履行。FULL_DATABASE 可以提供数据库中的所有对象,但不进行持续同步。SUBDB 允许按需提供所选对象。在复制中,FULL_DATABASE 确保定期同步副本,而 SUB_DATABASE 同步特定组件。
多个列表可以使用同一数据库,但该数据库仅自动履行到新区域一次。
备注
对于 Business Critical Edition (BCE),共享数据的处理不同于高安全性部署(如 VPS)。虽然 BCE 不需要为每个区域创建单独的 SSA,但它强制执行严格的数据安全性,并遵守 Tri-Secret Secure 加密等功能。
对于 Virtual Private Snowflake (VPS) 和政府特定的 Snowflake 环境等部署,每个部署都有一个单独的安全共享区 (SSA)。这可确保自动履行始终符合这些环境特有的严格安全和数据隔离要求。
自动履行如何刷新数据¶
当您为列表设置自动履行时,您可以为数据产品配置刷新间隔。
初次将数据产品自动履行到某个区域的 SSA 后,对数据产品的更改将根据配置的数据刷新从您的账户同步:
数据刷新类型 |
描述 |
---|---|
基于触发的数据刷新 |
提供商可以使用 SYSTEM$TRIGGER_LISTING_REFRESH 触发按需数据刷新,确保使用者收到最新信息。 如果上游提取-转换-加载 (ETL) 管道进程完成,并且您希望在数据准备就绪后触发复制,Snowflake 建议使用基于触发的数据刷新。例如,如果您是向金融机构提供股票分析服务的数据提供商,则可以在上游 ETL 管道中更新新数据集后,立即触发向所有分析师更新,提供新数据集。 注意: 此功能仅在使用 SQL 的情况下可用。 |
基于触发器的应用程序包刷新 |
如果列表的数据产品是应用程序包,则提供商可以设置 SYSTEM$TRIGGER_LISTING_REFRESH 来触发应用程序包的按需刷新。但是,每次需要刷新应用程序包时,提供商都必须运行此函数。 要将应用程序包配置为在每次修改发布指令时刷新,请使用 ALTER APPLICATION PACKAGE 命令的 LISTING_AUTO_REFRESH子句。 |
基于间隔的数据刷新 |
提供商可以为列表的所有使用者建立基于间隔的数据刷新,时间段从 1 分钟到 8 天不等。与数据库关联的每个列表都按相同的刷新间隔运行。 当您需要按预定义的节奏进行更新时,建议使用基于间隔的数据刷新配置。例如,每周刷新数据集的提供商可以使用基于间隔的刷新来按相同的计划更新其数据库。每次刷新完成都会根据节奏触发下一次刷新。有关详细信息,请参阅 设置账户级刷新间隔。 注意: 此功能适用于在 Snowsight 中使用 SQL 或 Provider Studio 的情况。 |
基于计划的数据刷新 |
提供商可以建立列表的所有使用者的数据刷新时间戳和计划。每个使用数据库的列表都将遵循相同的刷新计划。 对于需要按照特定时间戳和计划进行列表更新的用例,建议使用基于计划的数据刷新。例如,需要为所有使用者提供刷新时间的可预测时间戳的数据提供商。 基于间隔的数据刷新和基于计划的数据刷新不能同时使用。如果两者都设置,一个将替换另一个。例如,如果为已具有刷新间隔的计划刷新设置了 cron 表达式,则它将被替换以支持计划刷新。有关详细信息,请参阅 auto_fulfillment。 注意: 此功能适用于在 Snowsight 中使用 SQL 或 Provider Studio 的情况。 |
自动履行的注意事项¶
当您对列表使用自动履行功能时,请考虑以下事项:
Snowflake 支持使用多个同名数据库。自动履行会在目标区域创建一个安全共享区域 (SSA) 账户,而 SSA 不能有两个同名的数据库。因此,如果您的源账户中有两个或更多同名数据库,则自动履行将在数据库名称后面附加一个唯一的前缀,以避免 SSA 账户中出现冲突。例如,想象一下以下场景:
一个组织有两个账户,即生产账户和开发账户。
生产和开发各有一个名为
AnyCompanyData
的数据库。
由于目标将始终有一个包含两个数据库的 SSA 账户,因此自动履行将在重复的数据库名称后添加前缀,从而生成两个数据库:
AnyCompanyData
和PrefixXXXXX_AnyCompanyData
。如果您使用 AWS Marketplace、GCP Marketplace 或 Azure Marketplace 注册 Snowflake,您只能在这些云中创建账户和 SSAs。向当前云服务区域之外的区域履行列表将会失败。
根据数据产品的大小,数据产品可能需要一些时间才能提供给使用者。数据产品的大小也会影响自动履行的成本。有关成本的详细信息,请参阅 自动履行成本。
默认情况下,使用对象级模式 (SUBDB)。
如果列表使用的对象位于已处于完整数据库模式 (FULL_DATABASE) 的数据库中,则在 Snowsight 中将显示警告,并且数据库仍处于完整数据库模式。