The Snowflake Data Cloud is becoming increasingly popular among businesses of all sizes. Snowflake is highly scalable and easy to manage within one account for most businesses, but when is it beneficial to use multiple accounts in Snowflake?
In this blog, we’ll review the pros and cons of single accounts versus multiple accounts and use cases for both. We’ll also detail tools that can be used to help manage your accounts both within Snowflake and created by third parties.
Single Primary Account Strategy
The most common approach is having one single primary account for an organization in Snowflake. This isn’t to say you only have one account, but one account where your data resides, which is used daily.Â
This strategy keeps all your business units’ data in one account, along with both production and non-production environments. With this strategy, you still may have other accounts used for disaster recovery or testing purposes, which we will explain later in this post.Â
There are many benefits to this approach, including:
Simplicity
Managing a single Snowflake account is inherently simpler than overseeing multiple accounts. This simplicity can be advantageous for small to medium-sized businesses with straightforward data requirements and businesses new to Snowflake.
Configuration for External Dependencies
Third-party tools used with Snowflake, such as those for Single Sign On (SSO), Extract Load and Transform (ELT), and Business Intelligence (BI), all require configurations to the Snowflake account(s) where data resides. A single account means a single set of configurations required for these external dependencies.Â
Cloning Capabilities
Zero copy cloning in Snowflake refers to the ability to create a clone of a database or table without physically duplicating the underlying data. Instead, Snowflake creates a metadata-only copy, minimizing storage and enhancing efficiency by allowing multiple instances to share the same data without unnecessary duplication. This vastly reduces the costs associated with duplicating data between environments.Â
Cloning can also easily share data across virtual instances within Snowflake between business units or environments. However, cloning can only be done directly within the same account.
Security
With Snowflake’s Role-Based Access Control (RBAC), data can easily be bound by security rules, even within a single account. This allows for different business units or separate environments to be deployed within the same account, creating virtual instances of Snowflake without having security concerns.
There are also a few disadvantages of the single account strategy, including:
Naming Requirements
There must be something in place with a single account to separate production and non-production databases properly, most likely a naming convention. This would involve adding a prefix or suffix to all databases to determine their environment.Â
For example, if you have a database called MY_DB
, you can separate environments by having PROD_MY_DB
, QA_MY_DB
, DEV_MY_DB
, etc. When this becomes an issue, it is within applications that assume object names don’t change by environment, leading to a potential break.
Overseas Operations
Some large organizations operate in multiple countries, leading to differing customer data policies. Having a single account for all countries would entail complying with all consumer data laws from those countries. Having an account for each region, for example, one for the US and one for the EU may make complying with those policies easier.Â
Multiple Account Strategy
The second strategy for Snowflake account management is to have multiple accounts. These accounts may be split by environment (production vs non-production) or by business unit to give a physical barrier between them.Â
Organizations migrating from on-premises to the cloud may see adding accounts as equating to adding instances in the on-premises world, but this would not be accurate. Creating virtual instances within a single Snowflake account is the best practice, especially for small to medium businesses, due to the built-in tools laid out above.Â
However, there are a few advantages to the multiple-account approach for very large organizations:
Separating Business Units
Creating accounts for each business unit within an organization can not only create a physical barrier between their data but will also:
Easily define which department is responsible for the costs of specific data
Allow each business unit to define its own rules around data governance and security
Give each business unit more control over its own data
Separating Regions
Having an account in each political region your organization works out of could also be advantageous. For example, having one Snowflake account located in the European Union that would have to adhere to the General Data Protection Regulation (GDPR) and one in the United States that doesn’t necessarily need to adhere to those regulations could be useful.Â
Separating Cost Plans
Organizations sometimes have different types of data with different requirements (sensitive vs non-sensitive). These businesses could separate the sensitive data into a higher-level Snowflake account, such as Business Critical or Enterprise, and the non-sensitive data into standard accounts.Â
There are also several disadvantages to having multiple accounts:
Complexity
Managing multiple Snowflake accounts can introduce complexity due to the need to navigate and oversee distinct environments, each with its own set of databases, warehouses, and users. Coordinating data sharing and access controls across multiple accounts requires meticulous configuration, potentially leading to increased administrative overhead.Â
Monitoring and optimizing performance may also become challenging, as each account operates independently, necessitating a holistic understanding of the entire ecosystem.
Cloning
Zero-copy cloning can not be used directly between accounts, leading to the need for alternative solutions to share data between them. As a workaround for this, each account could create a data share and/ or use replication between accounts to share data. However, costs associated with these measures would be incurred each time the data needs to be refreshed.
Disaster Recovery and Snowflake Feature Testing
Depending on your situation, you may not need your data split into multiple accounts, but having multiple copies of one Snowflake account is a recommended solution for two reasons:
Data Replication and Failover
Snowflake’s Data Replication is a process by which a database is designated as a primary database, and all DDL operations performed on that database are copied periodically to a secondary database in another Snowflake account with a different availability zone, region, or cloud provider.
In addition to data replication, it is also possible to implement Failover to the secondary database. This means that if the primary database undergoes a disaster scenario such as a hardware failure, the secondary database can serve as a backup to perform database operations, avoiding any downtime.
Snowflake Feature Testing
Snowflake is always evolving and creating new features your business may want to exploit. However, these behavior changes can only be enabled at the account level. Testing any new feature in your one Snowflake account could have unintended consequences.Â
Because of this, it is recommended that a separate account be kept for platform development and testing purposes to ensure the new feature(s) work as intended before implementing them in your production environment.
Multiple Account Best Practices
Utilize account usage monitoring.
Leverage Snowflake’s account usage monitoring tools to track resource consumption, identify potential bottlenecks and optimize resource allocation across accounts.Â
This will help you ensure that your accounts are using resources efficiently and that you are not over-provisioning resources.
Establish data governance guidelines.
Define clear data governance guidelines to ensure data consistency, integrity, and security across multiple accounts.Â
This will help prevent data silos and ensure that your data is managed in a consistent and compliant manner.
Regularly review and optimize account structure.
Periodically review your account structure to ensure it aligns with your evolving data needs and business requirements.Â
This will help you identify any opportunities to consolidate accounts or optimize resource allocation.
Consider using a Snowflake partner for assistance.
Engage with a Snowflake partner, such as phData, to gain expertise and guidance in managing multiple accounts effectively.Â
This can be especially helpful if you are new to Snowflake or have a complex multi-account environment.
Tooling
Managing multiple Snowflake accounts is a challenging task. phData has created many tools as part of our phData Toolkit that can be utilized to make having more than one Snowflake account easier on you:
Provision Tool
Whether employing a single Snowflake account or multiple, a major bottleneck to getting value from a Snowflake Data Cloud environment is creating the databases, schemas, roles, and access grants that make up a data system information architecture.Â
Creating, applying, and evolving this information architecture can be a time-consuming and error-prone process. Our template-driven Provision tool automates onboarding users and projects to Snowflake, allowing your data teams to start producing real value immediately.
Advisor Tool
One of the challenges of using a cloud-based data platform like Snowflake is making it cost-efficient and secure. With the Advisor tool, you can quickly and easily identify opportunities to improve the configuration, security, performance, and efficiency of your Snowflake environment.Â
We have worked closely with our Snowflake data and operations experts to ensure that our Snowflake Advisor delivers actionable recommendations based on best practices and phData’s vast real-world experience on the Snowflake Platform.
The Advisor tool comes with a pre-configured set of checks to identify opportunities and provide recommendations that ensure your Snowflake environment follows best practices and industry standards across various categories.Â
The check results are provided in a rich interactive report for users to view and use to address them:
Platform Monitoring with CDOpsMon
Monitoring Snowflake accounts and their supporting cloud resources can sometimes be challenging, but not with our platform monitoring tool, CDOpsMon. CDOpsMon provides a simple configuration to define how to collect, evaluate, and alert on events in your environment, ensuring you never miss a critical moment in your platform operations.
These tools and the rest of the Toolkit are free to all phData customers without limitations.
Closing
In conclusion, using single or multiple accounts in Snowflake ultimately depends on your business’s specific needs and objectives. As we’ve explored in this blog, Snowflake offers a highly scalable and flexible architecture, allowing most organizations to be able to utilize one account that adapts to changing requirements.Â
However, for the large organizations that need it, multiple accounts can be used and easily maintained using Snowflake internal tools as well as third-party tools such as phData’s Toolkit.
For further insights on the optimal number of Snowflake accounts and their impact on performance in data vault modeling, connect with our team of experts.
FAQs
By default, an organization's maximum number of On Demand accounts is 25. If the organization has a capacity contract, the default maximum number of accounts is 100. Contact Snowflake Support to have these limits raised. You can only create an account in a region that is enabled for your organization.
The cloud platform you choose for each Snowflake account is completely independent from your other Snowflake accounts. You can choose to host each Snowflake account on a different platform, although this may impact data transfer billing when loading data.