在现代经济中,数据推动业务发展;企业获取数据并提供有意义的见解的速度越快,他们就越能做出明智的决策。近年来,Snowflake在这个领域取得了长足的进步,进展令人印象深刻。Snowflake也越来越多地被一些公司采用,因为它以其大型数据集处理和计算能力而闻名。它提供了可扩展性、可负担性、安全性、易用性、定制和轻松的数据集成。此外,Snowflake 还根据用例的需要提供许多专业服务,例如 Snowflake Arctic、Snowflake for Big Data、Snowflake Data Sharing 和 Snow Pipe。它们为所有努力从战略数据利用中获利的企业带来了强大的武器。
在本文中,我将探讨 Snowflake 中的数据共享工作原理。数据共享是将数据提供给多个用户、应用程序或组织,同时保持其质量的过程。组织通常需要与客户、供应商和合作伙伴共享数据,但他们面临着重大挑战,例如治理不善、解决方案过时、手动数据传输以及与特定供应商绑定。为了实现真正的数据驱动,组织需要一种改进的数据共享方法。Snowflake 为这些挑战提供了现代解决方案,可实现无缝和安全的数据共享。
数据共享
使用 Snowflake 作为数据仓库时,您可以与其他 Snowflake 帐户持有人共享选定的数据对象,甚至可以与没有 Snowflake 帐户的人共享(通过读者帐户)。Snowflake 中数据共享的一个主要优点是数据不会在帐户之间复制或传输。相反,对提供商帐户所做的任何更新都会立即提供给使用者。
供应商
提供商(也称为数据提供商或生产者)是 Snowflake 帐户的用户,负责创建共享并将其提供给其他 Snowflake 帐户用户使用。作为共享的创建者,提供商有权决定哪些数据和资源可供 Snowflake 生态系统中的其他用户共享和访问。
消费者
数据使用者是指选择使用数据提供者提供的共享建立数据库的任何帐户。作为数据使用者,在将共享数据库集成到您的账户中后,您可以访问并可以像您账户中的任何其他数据库一样查询数据库的内容。
在 Snowflake 中共享数据有不同的方法。您可以根据特定权限限制访问,确保只有授权用户才能查看某些对象,也可以使数据可供所有目标用户读取。这种灵活性允许安全高效的数据协作。
直接分享
当提供商和使用者位于同一区域时,直接共享是消费者访问提供商共享的数据的最简单方法。此方法要求数据提供程序有权访问使用者帐户的帐户 ID。设置完成后,使用者可以轻松查看和使用共享数据对象。
拥有 Snowflake 帐户的消费者
拥有 Snowflake 帐户的使用者可以访问提供商共享的数据。共享对象只能由这些使用者访问。在此设置中,提供商需要为存储付费,而使用者需要为计算使用量付费。通过 Snowflake 共享共享和使用数据时,请务必遵循最佳实践。其中包括验证数据共享、审核对共享数据的访问,以及根据需要在共享中添加或删除对象。这确保了安全高效的数据共享。
要在 Snowflake 中执行的命令列表,用于将对象从提供者共享到使用者。
CREATE DATABASE ROLE MYSHARE; GRANT USAGE ON SCHEMA PUBLIC TO DATABASE ROLE MYSHARE; GRANT SELECT ON VIEW VW_CUSTOMER TO DATABASE ROLE MYSHARE; SHOW GRANTS TO DATABASE ROLE MYSHARE; CREATE OR REPLACE SHARE MY_TEST_SHARE; GRANT USAGE ON DATABASE SAMPLE_DB TO SHARE MY_TEST_SHARE; GRANT USAGE ON SCHEMA SAMPLE_DB.PUBLIC TO SHARE MY_TEST_SHARE; GRANT SELECT ON TABLE SAMPLE_DB.PUBLIC.CUSTOMER_TEST TO SHARE MY_TEST_SHARE; SHOW SHARES; SHOW GRANTS TO SHARE MY_TEST_SHARE; ALTER SHARE MY_TEST_SHARE ADD ACCOUNT= ACC12345; ------ TO SHARE ALL OBJECTS GRANT SELECT ON ALL TABLES IN SCHEMA SAMPLE_DB.PUBLIC TO SHARE MY_TEST_SHARE; GRANT SELECT ON ALL TABLES IN DATABASE SAMPLE_DB TO SHARE MY_TEST_SHARE;
作为数据提供商,您可能希望与没有 Snowflake 帐户或尚未准备好成为许可 Snowflake 客户的使用者共享数据。没有 Snowflake 帐户的使用者无法访问共享数据。要启用访问权限,您可以创建一个读者帐户并与使用者共享。使用 Reader 帐户,无需用户注册 Snowflake 帐户即可快速、简单且经济实惠地共享数据。生成每个读者帐户的提供商帐户负责管理它。客户产生的处理费和仓储费均由提供商承担。
SQL的
CREATE MANAGED ACCOUNT READER_ACCT; ADMIN_NAME='READER_ACCT'; ADMIN_PASSWORD='**********'; TYPE='READER'; SHOW MANAGED ACCOUNTS; --Snowflake URL with Locator ( Share it with the Consumer) ALTER SHARE SHARE_NAME ADD ACCTID=LOCATOR IN URL IN ABOVE LINE ; SHARE_RESTRICATIONS=FALSE; ALTER SHARE QCUFBZG.AXYZ5751.POC_SNOWFLAKE_SECURE_SHARE ADD ACCOUNT=XYZ11993; SHARE_RESTRICTIONS=FALSE;
与使用者共享数据时,使用者可以看到所有信息,提供者无法隐藏任何数据。建议使用安全视图共享数据。这样,只有面向使用者的属性是可见的,并且对其他数据的访问受到限制。如果视图旨在确保数据隐私,则应将其标记为安全。
清单
列表是一种更安全地共享数据的更高级方式,并且在与直接共享相同的生产者和消费者模型上运行。但是,它的不同之处在于它不限于同一区域;不同地域的 Snowflake 账号可以访问数据。数据可以与特定帐户共享,也可以在 Snowflake Marketplace 中发布。列表有两种类型:私人和公共。
私人:私人列表仅供特定消费者访问。它们允许您利用列表功能直接与任何 Snowflake 区域中的其他 Snowflake 帐户共享数据和其他信息。
公共:数据产品可以在 Snowflake Marketplace 中公开共享。通过在 Snowflake Marketplace 上提供列表,您可以在 Snowflake Data Cloud 中推广您的数据产品。这允许您一次与多个使用者共享精选数据产品,而不是单独管理与每个使用者的共享安排
Snowflake 的数据共享功能为希望安全高效地共享数据的组织提供了现代解决方案。通过利用上述功能,企业可以克服传统的数据共享挑战,并释放其数据的全部潜力。根据用例确定与消费者共享数据或从提供商处访问数据的最佳方法。有关实现数据共享的更详细说明和最佳实践,请参阅官方 Snowflake 文档。