Sharing data between accounts in Snowflake is simple and convenient.
When data is securely shared between accounts, it is not physically moved to the account it is shared with. Because the data isn't moved, that account pays no storage costs. It only pays when it queries the shared data, using its own compute resources.
How does data sharing work?
The provider (the entity sharing the data) creates a share of one or more databases in its Snowflake account and makes those database objects available to the consumer (the entity the data is shared with).
The consumer gets read-only access to the database objects: it can query the data but cannot change the objects. When new objects are added to the share, they become available to the share's consumers immediately. The provider can also revoke access to the share at any time.
Data share types
Data can be shared in the following ways:
- 1ListingA share, plus additional metadata, is offered to one or more accounts.
- 2Direct shareDatabase objects are shared directly with another account in your region.
- 3Data exchangeYou set up and manage a group of accounts, and offer a share to that specific group.
Data share participants
Provider
The provider creates the share and makes it available to other accounts. Providers have full control over what the share contains, decide which accounts it is shared with, and can revoke access to the shared data.
Consumer
Consumers are the accounts that providers share data with. The data is still physically stored in the provider's account. The consumer can only query the shared data, and is charged for the compute resources used to do so.
Reader accounts for third-party access
Reader accounts make it possible for providers to share data with people who don't use Snowflake. Reader accounts belong to the provider, and can only consume data from the provider account that created them.
