The Snowflake Elastic Data Warehouse
We live in the golden age of distributed computing. Public cloud platforms now offer virtually unlimited compute and storage resources on demand. At the same time, the Software as a Service (SaaS) model brings enterprise class systems to users who previously could not afford such systems due to their cost and complexity. Alas, traditional data warehousing systems are struggling to fit into this new environment. For one thing, they have been designed for fixed resources and are thus unable to leverage the cloud's elasticity. For another thing, their dependence on complex ETL pipelines and physical tuning is at odds with the flexibility and freshness requirements of the cloud's new types of semi structured data and rapidly evolving workloads. We decided a fundamental redesign was in order. Our mission was to build an enterprise ready data warehousing solution for the cloud. The result is the Snowflake Elastic Data Warehouse, or "Snowflake" for short. Snowflake is a multi tenant, transactional, secure, highly scalable and elastic system with full SQL support and built in extensions for semi structured and schema less data. The system is offered as a pay as you go service in the Amazon cloud. Users upload their data to the cloud and can immediately manage and query it using familiar tools and interfaces. Implementation began in late 2012 and Snowflake has been generally available since June 2015. Today, Snowflake is used in production by a growing number of small and large organizations alike. The system runs several million queries per day over multiple petabytes of data. In this paper, we describe the design of Snowflake and its novel multi cluster, shared data architecture. The paper highlights some of the key features of Snowflake: extreme elasticity and availability, semi structured and schema less data, time travel, and end to end security. It concludes with lessons learned and an outlook on ongoing work.
SIGMOD Conference