目录
产品简介
Snowflake是作为软件即服务(SaaS)提供的分析数据仓库。与传统的数据仓库产品相比,Snowflake提供了一个更快,更易于使用且更加灵活的数据仓库。Snowflake的数据仓库不是建立在现有数据库或Hadoop等“大数据”软件平台上的,Snowflake数据仓库使用新的SQL数据库引擎,该引擎具有为云设计的独特架构。对于用户而言,Snowflake与其他企业数据仓库有很多相似之处,但还具有一些其他特有功能。
产品架构
Snowflake的架构是传统shared-disk数据库架构和shared-nothing数据库架构的混合体。
与shared-disk数据库架构相似,Snowflake数据仓库中所有计算节点访问的持久化数据使用中央数据存储库存储。
也与shared-nothing数据库架构相似,Snowflake使用MPP(大规模并行处理)计算集群处理查询,集群中的每个节点都在本地存储整个数据集的一部分。
这种方法简化了shared-disk数据库架构的数据管理,还具备shared-nothing数据库的性能和横向扩展优势。
Snowflake的独特架构包括三个关键层:
- 数据库存储
将数据加载到Snowflake后,Snowflake会将数据重组为内部优化的压缩列式格式。Snowflake将此优化的数据存储在云存储中。
Snowflake管理着存储此数据的所有方面——组织(organization),文件大小,结构,压缩,元数据,统计信息,并且数据存储的其他方面由Snowflake处理。Snowflake存储的数据对象不直接可见,客户也无法访问;只能通过使用Snowflake运行SQL查询操作才能进行访问。
- 查询处理层
查询功能在处理层中执行,Snowflake使用“虚拟仓库”(virtual warehouses)处理查询。每个虚拟仓库都是一个MPP计算集群,集群使用多个云提供商提供的计算节点,由Snowflake分配组成。
每个虚拟仓库是一个独立的计算集群,不与其他虚拟仓库共享计算资源。因此,每个虚拟仓库都不会影响其他虚拟仓库的性能。
- 云服务层
云服务层是协调整个Snowflake服务的集合。这些服务将Snowflake的所有不同组件结合在一起,以便处理从登录到查询等不同阶段分发的用户请求。云服务层也运行在由Snowflake提供且来自于云提供商的计算实例上。
这一层中包含如下服务:
- 认证方式
- 基础设施管理
- 元数据管理
- 查询解析与优化
- 访问控制