Data Sharing across providers with Snowflake

Verónica Bravo
Hexacta Engineering

--

Snowflake is an analytic data warehouse provided as Software-as-a-Service (SaaS). Snowflake provides a data warehouse that is faster, easier to use, and far more flexible than traditional data warehouse offerings.

Snowflake’s data warehouse is not built on an existing database or “big data” software platform such as Hadoop but uses a new SQL database engine with a unique architecture designed for the Cloud. On the other hand, to the user, Snowflake has many similarities to other enterprise data warehouses, but also has additional functionality and unique capabilities.

Total automatization

The platform automates everything from how data is stored and processed to transaction management, security, governance, and metadata management. All you have to worry about is loading and querying your data, and Snowflake takes care of the rest.

In this article I would like to talk about one of the best characteristics that is Data Sharing.

Through Data Sharing, Snowflake allows access to data with other accounts:

  • Provide data to other accounts to consume.
  • Consume data provided by other accounts.

Secure Data Sharing

Secure Data Sharing enables sharing selected objects in a database in your account with other Snowflake accounts. The following database objects can be shared:

  • Tables
  • External tables
  • Secure views
  • Secure materialized views
  • Secure UDFs (user defined functions)

Snowflake enables the sharing of databases through shares, which are created by data providers and “imported” by data consumers.

Share Data is easy and saves money

With Secure Data Sharing, no actual data is copied or transferred between accounts. All sharing is accomplished through Snowflake’s unique services layer and metadata store. This is an important concept because it means that shared data does not take up any storage in a consumer account and, therefore, does not contribute to the consumer’s monthly data storage charges. The only charges to consumers are for the compute resources used to query the shared data.

So, as an enterprise (provider), you can share data with your customers (consumers) as a service and they only pay for time they use to consume that data.

In addition, because no data is copied or exchanged, Secure Data Sharing setup is quick and easy for providers and access to the shared data is instantaneous for consumers:

  • The provider creates a share of a database in their account and grants access to specific objects in the database.
  • On the consumer side, a read-only database is created from the share.

Through this architecture, Snowflake enables creating a network of providers that can share data with multiple consumers (including within their own organization) and consumers that can access shared data from multiple providers:

Shares and their unique capabilities

Shares are named Snowflake objects that encapsulate all of the information required to share a database. Each share consists of:

  • The privileges that grant access to the database(s) and the schema containing the objects to share.
  • The privileges that grant access to the specific objects in the database.
  • The consumer accounts with which the database and its objects are shared.

Once a database is created (in a consumer account) from a share, all the shared objects are accessible to users in the consumer account:

Shares are secure, configurable, and controlled 100% by the provider account.

New objects added to a share become immediately available to all consumers, providing real-time access to shared data.

Access to a share (or any of the objects in a share) can be revoked at any time.

--

--