16、Snowflake:数据克隆、复制与共享全解析

Snowflake:数据克隆、复制与共享全解析

一、零拷贝克隆

1.1 流(Streams)克隆

当流被克隆时,它会从克隆的那一刻开始累积变更数据。克隆之前流中跟踪的任何未消费记录将被忽略。

1.2 任务(Tasks)克隆

任务被克隆后会立即暂停,必须手动恢复。

1.3 克隆时的注意事项

Snowflake 建议在克隆过程中不要对源对象执行 DML 语句。因为 Snowflake 尝试克隆表数据在克隆操作开始时的状态,它依赖时间旅行数据来重建该时间点的数据。
- 如果在克隆过程中,由于 DML 操作导致源表数据发生变化,并且表的 DATA_RETENTION_TIME_IN_DAYS 参数设置为 0,克隆操作将失败,因为没有时间旅行数据可供 Snowflake 重建克隆操作开始时的数据。
- 如果不能保证在克隆期间没有 DML 操作,那么将所有要克隆的表的 DATA_RETENTION_TIME_IN_DAYS 参数设置为 1,以便克隆过程有时间旅行数据可用。

二、数据库复制

2.1 复制概述

Snowflake 的复制功能可用于在同一组织的 Snowflake 账户之间复制数据库。数据库可以复制到不同的区域,甚至不同的云提供商。
- 要复制的一个或多个数据库称为主数据库,可以是永久的或临时的。
- 每个主数据库可以复制到一个或多个账户,在主数据库复制到的账户中会创建该数据库的副本,称为从数据库。主数据库中的数据可以更改,而从数据库是只读的。

2.2 复制的特点

  • 数据库复制需要在账户之间物理复制数据,这意味着数据在最初复制后可能会过时。为了使从数据库中的复制数据与主数据库保持同步,通常会设置定期复制任务。
  • 为了在复制数据到另一个账户时保护数据传输安全,Snowflake 使用随机加密密钥对数据进行加密。

2.3 可复制的数据库对象

可复制对象 说明
永久和临时表 存储数据的基本结构
表上的聚类 优化数据存储和查询性能
表约束 确保数据的完整性
序列 生成唯一的数字序列
视图 虚拟表,基于查询结果
物化视图 预计算的视图,提高查询性能
安全视图 提供数据安全访问控制
文件格式 定义数据的存储格式
存储过程 一组预定义的 SQL 语句
UDFs(SQL、JavaScript、Python) 用户自定义函数
掩码策略,包括基于标签的掩码策略 保护敏感数据
标签 用于数据分类和管理

2.4 复制限制

  • 权限方面 :当数据库复制到从数据库时,授予数据库对象的权限不会被复制。
  • 参数方面
    • 账户参数不复制。
    • 数据库参数不复制。
    • 显式设置在对象上的表和模式参数会被复制。
  • 其他限制
    • 当主数据库是关键业务版或更高版本时,不支持复制到较低版本。
    • 包含外部表的数据库不能复制。
    • 从共享创建的数据库不能复制。

2.5 数据库复制的计费

数据库复制会产生以下费用:
- 数据传输费用 :云提供商对区域之间的数据传输收费。
- 计算资源费用 :复制使用 Snowflake 提供的计算资源。
- 存储费用 :目标账户需要为从数据库中的数据支付存储费用。

当复制操作因任何原因(如网络中断)失败时,下一次刷新可以重用前一次刷新中已复制的数据,但仅限于 14 天内。

2.6 查看数据传输使用情况

可以通过执行 SQL 命令查看数据传输使用情况和相关的信用费用:
- 查询 Snowflake 信息模式中的 REPLICATION_USAGE_HISTORY 表函数,该函数返回过去 14 天的复制使用活动。例如,查看过去 10 天的数据传输使用情况:

select *
  from table(information_schema.REPLICATION_USAGE_HISTORY(
    date_range_start => dateadd(d, -10, current_date),
    date_range_end => current_date));
  • 查询账户使用情况中的 REPLICATION_USAGE_HISTORY 视图,该视图返回过去 365 天的复制使用活动。例如:
select * from snowflake.account_usage.REPLICATION_USAGE_HISTORY;

这两个查询返回的结果类似,会显示每次数据传输的开始时间和结束时间,以及数据库名称、传输的字节数和使用的信用。

2.7 数据库复制的设置步骤

  1. 组织管理员或具有 ORGADMIN 角色的用户必须为源账户和目标账户启用复制。通过执行 SYSTEM$GLOBAL_ACCOUNT_SET_PARAMETER 函数,将 ENABLE_ACCOUNT_DATABASE_REPLICATION 参数设置为 TRUE
  2. 注意,数据库复制只进行一次。为了实现复制数据库的定期更新,必须设置一个 Snowflake 任务,定期刷新复制的数据库。
  3. Snowflake 目前仅支持数据库级别的复制,不支持模式或表级别的复制。如果要复制数据库中的部分对象,可以按以下步骤操作:
    • 克隆要复制的对象到同一账户的新数据库中。
    • 在源对象上创建流来跟踪更改,并创建任务以保持克隆数据的同步。
    • 将克隆的数据库复制到组织内不同区域的另一个账户。
    • 创建一个任务,定期刷新复制数据库中的数据。
graph LR
    A[启用账户复制] --> B[设置定期刷新任务]
    B --> C{是否部分复制}
    C -- 是 --> D[克隆对象到新数据库]
    D --> E[创建流和任务]
    E --> F[复制克隆数据库]
    F --> G[创建刷新任务]
    C -- 否 --> H[直接复制数据库]
    H --> B

三、数据共享

3.1 安全数据共享概述

安全数据共享是一项强大的功能,可让用户在不同的 Snowflake 账户之间共享对象。数据共享无需在账户间进行物理复制,这意味着不会消耗额外的存储空间,并且能够快速设置。
- 共享对象的类型 :可以共享的数据库对象包括表、外部表、安全视图、安全物化视图和安全 UDF。
- 数据提供者与消费者 :创建共享的账户称为数据提供者,使用共享的账户称为数据消费者。共享的数据存储在提供者账户中,消费者只能查询数据,不能修改。
- 成本与操作 :消费者只需为查询共享数据所使用的计算资源付费。所有与数据共享相关的操作都可以在 Snowflake 的服务层和元数据中完成。

3.2 共享对象的设置步骤

  1. 创建共享 :提供者基于账户中的数据库创建共享,并通过授予访问权限将选定的对象添加到共享中。这些对象可以来自创建共享的 Snowflake 账户内的多个数据库。
  2. 添加消费者账户 :创建共享后,将一个或多个要共享对象的账户添加到共享中。
  3. 消费者创建数据库 :提供者设置共享并添加至少一个消费者账户后,消费者可以从共享中创建只读数据库。从消费者的角度来看,共享就像他们账户中的另一个数据库,查询能力和访问权限由 Snowflake 的基于角色的访问控制进行管理。

3.3 Snowflake 共享对象

Snowflake 共享对象具有以下特点:
- 包含的权限 :包括授予对要共享的数据库和模式的访问权限,以及对选定共享对象的访问权限。
- 管理与可用性 :共享由提供者账户创建和管理。设置共享后,共享中的所有对象对消费者账户中的用户可用。提供者可以向共享中添加新对象,这些对象将立即对消费者账户中的用户可用。
- 权限撤销与限制 :提供者可以撤销任何已添加到共享对象的消费者的访问权限。提供者创建共享的数量、添加到共享的账户数量以及消费者账户配置共享的数量均无限制,但每个共享在消费者账户中只能设置一个数据库。

3.4 读者账户

即使消费者没有 Snowflake 账户,也可以通过创建读者账户来实现数据共享。
- 创建读者账户 :提供者创建共享后,可以创建属于自己的读者账户。读者账户可以像消费者账户一样从共享中创建数据库,但只能配置由创建该读者账户的提供者共享的共享。
- 账户配置 :读者账户创建时只有一个用户,该用户是账户管理员,仅用于账户配置和监控,不应与查询数据的用户共享。为了让其他用户访问读者账户,账户管理员必须创建用户、自定义角色(如果需要)和用于执行查询的虚拟仓库。

3.5 直接共享

3.5.1 共享限制

直接共享仅支持在同一区域的 Snowflake 账户之间进行。如果需要在不同区域的账户之间共享数据,则需要使用数据库复制。

3.5.2 创建直接共享的步骤
  1. 准备工作 :使用 ACCOUNTADMIN 角色或具有 CREATE SHARES 全局权限的角色。需要有一个可用的数据库,并至少创建一个要共享数据库的额外账户。
  2. 创建数据库和表 :例如,创建一个名为 SUPPLIERS 的数据库、一个名为 SUPPLIERS_DATA 的模式和两个表:
create database SUPPLIERS;
create schema SUPPLIERS_DATA;
create table SUPPLIER as
  select * from SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.SUPPLIER;
create table REGION as
  select * from SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.REGION;
  1. 创建共享并授予权限 :可以使用 SQL 命令或 Snowsight 用户界面完成。使用 SQL 命令的示例如下:
create share SUPPLIERS_SHARE;
grant usage on database SUPPLIERS
  to share SUPPLIERS_SHARE;
grant usage on schema SUPPLIERS.SUPPLIERS_DATA
  to share SUPPLIERS_SHARE;
grant select on table SUPPLIERS.SUPPLIERS_DATA.SUPPLIER
  to share SUPPLIERS_SHARE;
grant select on table SUPPLIERS.SUPPLIERS_DATA.REGION
  to share SUPPLIERS_SHARE;
  1. 添加消费者账户 :使用 ALTER SHARE 命令将一个或多个消费者账户添加到共享中。例如:
alter share SUPPLIERS_SHARE add accounts = BH09635;
3.5.3 查看共享信息的命令
  • 查看所有共享 :使用 SHOW SHARES 命令,输出将列出所有入站和出站共享及其属性。
show shares;
  • 查看单个共享的详细信息 :使用 DESC 命令,输出将列出指定共享中包含的数据库、模式和表。
desc share SUPPLIERS_SHARE;
  • 查看共享的授予权限 :使用 SHOW GRANTS 命令,输出将列出分配给指定共享的授予权限,如数据库和模式的 USAGE 权限以及表的 SELECT 权限。
show grants to share SUPPLIERS_SHARE;
3.5.4 消费直接共享
  1. 使用 Snowsight 用户界面 :登录到消费者账户,使用 Snowsight 用户界面查看与该账户共享的数据库。在相应窗口中提供数据库名称,并选择访问该数据库的角色(除 ACCOUNTADMIN 外),点击“获取数据”按钮,将从直接共享中创建数据库对象。
  2. 使用 SQL 命令 :在消费者账户中执行以下命令:
create database SUPPLIERS_SHARE
  from share AZXZRCJ.GO10133.SUPPLIERS_SHARE;
grant imported privileges on database SUPPLIERS_SHARE
  to role PUBLIC;
3.5.5 创建读者账户

如果要与非 Snowflake 客户的用户共享 SUPPLIERS 数据库,可以在 Snowsight 用户界面中创建读者账户。在“新读者账户”窗口中,提供读者账户名称、可选注释、用户名和初始密码,点击“创建账户”按钮。创建读者账户后,将其添加到之前创建的 SUPPLIERS_SHARE 直接共享中,然后使用创建账户时指定的凭据登录到新的读者账户。读者可以像消费者账户一样从 SUPPLIERS_SHARE 直接共享中创建数据库。

3.6 读者账户的配置

读者账户创建后,需要进行以下配置:
| 配置项 | 说明 |
| — | — |
| 用户创建 | 账户管理员创建用于查询数据的用户 |
| 角色创建 | 创建自定义角色,控制用户在读者账户中的活动和可访问的对象。可以使用角色授予用户查询数据的访问控制权限、对用于查询的虚拟仓库的权限,以及执行需要特定权限的任务的额外权限 |
| 虚拟仓库创建 | 创建用于执行查询的虚拟仓库 |

graph LR
    A[创建共享] --> B[添加消费者账户]
    B --> C{是否为读者账户}
    C -- 是 --> D[创建读者账户]
    D --> E[添加到共享]
    E --> F[读者创建数据库]
    C -- 否 --> G[消费者创建数据库]
    G --> H[查询共享数据]
    F --> H

综上所述,Snowflake 的数据克隆、复制和共享功能为用户提供了强大而灵活的数据管理和使用方式。通过合理利用这些功能,可以提高数据的安全性、可用性和共享效率,满足不同场景下的数据处理需求。

内容概要:本文介绍了ENVI Deep Learning V1.0的操作教程,重点讲解了如何利用ENVI软件进行深度学习模型的训练应用,以实现遥感图像中特定目标(如集装箱)的自动提取。教程涵盖了从数据准备、标签图像创建、模型初始化训练,到执行分类及结果优化的完整流程,并介绍了精度评价通过ENVI Modeler实现一键化建模的方法。系统基于TensorFlow框架,采用ENVINet5(U-Net变体)架构,支持通过点、线、面ROI或分类图生成标签数据,适用于多/高光谱影像的单一类别特征提取。; 适合人群:具备遥感图像处理基础,熟悉ENVI软件操作,从事地理信息、测绘、环境监测等相关领域的技术人员或研究人员,尤其是希望将深度学习技术应用于遥感目标识别的初学者实践者。; 使用场景及目标:①在遥感影像中自动识别和提取特定地物目标(如车辆、建筑、道路、集装箱等);②掌握ENVI环境下深度学习模型的训练流程关键参数设置(如Patch Size、Epochs、Class Weight等);③通过模型调优结果反馈提升分类精度,实现高效自动化信息提取。; 阅读建议:建议结合实际遥感项目边学边练,重点关注标签数据制作、模型参数配置结果后处理环节,充分利用ENVI Modeler进行自动化建模参数优化,同时注意软硬件环境(特别是NVIDIA GPU)的配置要求以保障训练效率。
内容概要:本文系统阐述了企业新闻发稿在生成式引擎优化(GEO)时代下的渠道策略效果评估体系,涵盖当前企业传播面临的预算、资源、内容效果评估四大挑战,并深入分析2025年新闻发稿行业五大趋势,包括AI驱动的智能化转型、精准化传播、首发内容价值提升、内容资产化及数据可视化。文章重点解析央媒、地方官媒、综合门户和自媒体四类媒体资源的特性、传播优势发稿策略,提出基于内容适配性、时间节奏、话题设计的策略制定方法,并构建涵盖品牌价值、销售转化GEO优化的多维评估框架。此外,结合“传声港”工具实操指南,提供AI智能投放、效果监测、自媒体管理舆情应对的流程解决方案,并针对科技、消费、B2B、区域品牌四大行业推出定制化发稿方案。; 适合人群:企业市场/公关负责人、品牌传播管理者、数字营销从业者及中小企业决策者,具备一定媒体传播经验并希望提升发稿效率ROI的专业人士。; 使用场景及目标:①制定科学的新闻发稿策略,实现从“流量思维”向“价值思维”转型;②构建央媒定调、门户扩散、自媒体互动的立体化传播矩阵;③利用AI工具实现精准投放GEO优化,提升品牌在AI搜索中的权威性可见性;④通过数据驱动评估体系量化品牌影响力销售转化效果。; 阅读建议:建议结合文中提供的实操清单、案例分析工具指南进行系统学习,重点关注媒体适配性策略GEO评估指标,在实际发稿中分阶段试点“AI+渠道”组合策略,并定期复盘优化,以实现品牌传播的长期复利效应。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值