在现代数据管理和分析领域,Snowflake凭借其独特的多云数据平台优势,成为许多企业的数据解决方案首选。Snowflake的跨区域(cross-region)数据共享功能是其重要特性之一,能够让企业在全球不同地理位置之间无缝共享数据。
一、Snowflake跨区域数据共享的机制
1. 数据共享概念
Snowflake的数据共享功能允许账户之间直接共享数据,而无需复杂的数据复制或移动。共享的数据是实时的,可以确保接收方访问的始终是最新的数据。
2. 跨区域数据共享
跨区域数据共享是指在不同地理区域或不同云服务提供商之间共享数据。Snowflake支持在同一区域内的共享,也支持跨区域的共享,甚至跨云平台的共享(例如,从AWS到Azure)。
二、优势
1. 实时数据访问
跨区域数据共享能够确保接收方访问到的数据是实时的,消除了数据同步延迟问题,支持业务决策的及时性。
2. 减少数据移动成本
传统的数据共享方法通常需要将数据导出、传输和导入,这不仅耗时而且成本高。Snowflake的数据共享功能通过直接访问数据源,避免了这些额外成本。
3. 简化数据管理
通过Snowflake的数据共享功能,可以集中管理数据权限和访问控制,简化了跨区域数据管理的复杂性。
4. 多云兼容
Snowflake支持跨云平台的数据共享,使得企业可以在不同的云环境中自由选择和使用数据,而不被单一云服务提供商锁定。
三、实际案例
1. 全球销售数据共享
某全球零售公司在多个区域和云平台上运营,通过Snowflake的跨区域数据共享功能,该公司能够将不同区域的销售数据集中在一起进行分析。总部在北美,通过共享功能实时访问欧洲和亚洲的销售数据,进行统一的市场分析和策略制定。
2. 多区域灾备方案
一家金融服务公司利用Snowflake的跨区域数据共享功能,构建了一个多区域的灾备方案。在北美和欧洲分别部署了Snowflake实例,通过跨区域数据共享功能,确保在任何区域发生灾难时,其他区域可以无缝接管业务,确保数据和服务的连续性。
3. 跨云平台的数据整合
某科技公司在AWS和Azure上都有数据部署。通过Snowflake的跨区域数据共享功能,这家公司实现了跨云平台的数据整合和分析。例如,从AWS上的应用程序日志和Azure上的用户数据中提取信息,进行综合的用户行为分析和产品优化。
四、实现方式
实现跨区域数据共享的核心机制是Snowflake的数据库复制(Database Replication)功能。通过将数据库复制到另一个区域,可以在多个区域间实现数据共享。具体步骤如下:
Step1:登录Snowsight:
首先,需要登录到Snowflake的Snowsight用户界面。
登录Snowsight:Snowflake
Step2:导航到Provider Studio:
在导航菜单中,选择“Data Products” > “Provider Studio” > “Listings”。
Step3:选择右上角新增 “+Listing”,此时会打开“Create Listing”窗口。
Note:
Listing: Listing是一种更安全地共享数据的更高级方式,并且在与直接共享相同的生产者和消费者模型上运行。但是,它的不同之处在于它不限于同一区域;不同地域的 Snowflake 账号可以访问数据。 数据可以与特定帐户共享,也可以在 Snowflake Marketplace 中发布。Listing有两种类型:私人和公共。 私人:私人Listing仅供特定消费者访问。它们允许您利用列表功能直接与任何 Snowflake 区域中的其他 Snowflake 帐户共享数据和其他信息。 公共:数据产品可以在 Snowflake Marketplace 中公开共享。通过在 Snowflake Marketplace 上提供列表,您可以在 Snowflake Data Cloud 中推广您的数据产品。这允许您一次与多个使用者共享精选数据产品,而不是单独管理与每个使用者的共享安排。 |
Step4:为“Listing”输入一个名称,例如:demo04_listing;选择一个具有所需特权的“role”
,例如“ACCOUNTADMIN”;在“Who can discover the listing section”部分,选择“Only specified consumers”,点击“Next”。
Step5:点击“+ Select”选择要附加到列表的对象。
你选择一个或多个数据库对象,Snowflake会为你创建包含这些对象的安全共享。你可以更改安全共享的名称。点击“Done”完成数据对象的选择。
为你的列表输入一个描述,分享的数据包括哪些和如何使用等。例如:sharing test
Step6:在“Add consumer accounts”部分,添加你想要与之共享此列表的消费者的组织名和账户名。
查看消费者的组织名和账户名:
点击“Copy account identifier”,把复制的信息填到“Add consumer accounts”,会带出account信息,选中下面的account。点击“Publish”。(这里可以分享给多个account)
会出现“demo04_listing”创建成功界面:
与此同时,consumer account会收到一封分享数据的邮件,内容如下:
Step7:登录snowflake的consumer account的Snowsight用户界面。
登录Snowsight:Snowflake
导航到Provider Studio:
在导航菜单中,选择“Data Products” > “Private Sharing” > “Shared With You”。
找到“Privately Shared Listings”,看到列表信息,找到刚才分享的“demo04_listing”,点击“Get”,会发送邮件。
第一次“Replicating”复制需要一些时间
Step8:以demo2_listing为例,分享成功之后,查看provider account数据
查看consumer account数据
Note:
Snowflake默认同步刷新频率为1 day,所以在provider account上面操作数据:增加、删除、修改等操作,consumer account上面1 day之后才能看到。
Step9:自定义刷新频率
找到如下界面
在“Consumer Accounts”部分,右边三点“…”,点开,选择“Update refresh frequency”,自定义刷新频率,频率范围:1 minute ~ 1 week
例如:刷新频率设置成 1 minute,做如下操作校验刷新频率
在provider account上面删除数据
1 minute之后,查看consumer account数据