这是本系列文章的第一部分, 我们描述了雪花如何帮助您管理现代数据存储问题. 现在,我们将深入研究技术细节.
正如我在我的 以前的博客, 雪花在存储和计算分离模型上工作, 是什么使数据的存储与操作分离.
现在我将探讨这个问题:存储机制如何与计算引擎交互? 为了回答这个问题,让我们从探究雪花管理数据的三种方式开始.
使用雪花管理数据
存储
持久化存储层位于可扩展的云存储服务中,例如Amazon S3. 这确保了数据的复制、伸缩和可用性,无需客户进行任何管理. 雪花在存储层中以柱状格式优化和存储数据, 按照用户的指定组织到数据库中.
罗马建筑
- 雪花使用了一种混合存储方法,比如PAX (Partition Attributes Across)存储模型, 列存储和行存储的混合.
- PAX的设计是为了确保一旦数据从磁盘可用时的高数据缓存性能. 因此,它充分利用了缓存空间.
S3使用
- 雪花使用S3来存储由查询操作符生成的临时数据(例如, 大量连接),一旦本地磁盘空间耗尽, 以及大型查询结果.
- 将临时数据溢出到S3允许系统计算任意大的查询,而不会出现内存不足或磁盘不足的错误.
虚拟仓库
雪花使用虚拟仓库(VWs)处理查询. 大众可以访问存储层中的任何数据库, 它们可以执行SELECT, 删除, 插入, 更新和复制到. 雪花将大众汽车配置为仅在使用时“运行”. 不使用时, vw将在一段时间后自动关闭, 因此,当不主动运行查询时,您不会为查询付费. 雪花的缓存和云服务层进一步降低了计算时间的成本.
在我看来, 雪花的大众架构是它的优势和关键区别之一,因为它支持弹性, 最优执行引擎存储和自调优和自修复:
弹性
大众汽车让雪花非常有弹性,可以在提高用户体验的同时管理成本. 例如, 在有4个节点的系统上,数据加载可能需要20小时,而在有32个节点的系统上只需4小时. 因为用户为计算时间付费, 总体成本非常相似, 然而用户体验却截然不同.
执行引擎
每个大众汽车的执行引擎都是柱状的、矢量化的和推式的,这给了它很多优势.
- 列存储和执行 通常被认为优于行存储和执行分析工作负载,因为更有效地使用CPU缓存和单指令, 多数据(SIMD)指令.
- 矢量化执行 意味着, 而不是MapReduce, 雪花避免了中间结果的物质化, 这是需要时间的. 而不是, 它以流水线方式处理数据, 以柱状格式批量运行几千行.
- 推动基于执行 该模型允许关系操作符将其结果推送给下游操作符,而不是等待这些操作符拉取数据. 这提高了缓存效率.
- 自调优和自愈 意味着用户不必处理糟糕的性能,因为机器大小全天调整以匹配工作负载. 用户专注于分析数据,而不是花时间管理和调整数据.
服务层
服务层是雪花的“大脑”,管理完整的雪花系统——元数据, 安全, 访问控制和基础设施. 这一层与客户端应用程序(包括雪花 web用户界面)进行无缝通信, JDBC和ODBC客户机)来协调查询处理和返回结果.
这一层管理的服务包括:
基础设施管理
- 为所有存储提供集中的存储库管理
- 根据需要启动和暂停大众汽车集群,管理基础设施.
元数据管理
- 保留关于存储在雪花中的数据的信息
- 这使得新的大众汽车能够立即使用这些数据
- 用于时间旅行和克隆.
查询解析和优化
- 自动统计信息收集
- 基于成本优化(CBO)的SQL优化器
- 自动JOIN订单优化.
安全
- 对用户、角色和共享的访问控制
- 启用加密和密钥管理.
雪花建筑的主要特征
与其他传统数据库相比,雪花提供了各种独特的功能:
- 使用VARIANT存储和查询半结构化数据的灵活性
- 使用流和任务更改CDC (Data Capture)
- 使用时间旅行和故障安全的连续数据保护(CDP)
- 在雪花云中与其他帐户和用户共享数据
- 结果缓存
- 使用UNDROP恢复对象
- 零拷贝克隆
- 跨云或跨地区的数据库复制.
让我们更深入地看看其中两个最重要的特性:
零拷贝克隆
在传统系统中,开发人员必须等待数小时或数天才能启动一个产品的副本 数据仓库 在较低的环境中,如测试或开发. 此外,组织必须为存储所有复制数据的磁盘支付额外费用.
使用雪花 CLONE命令, 客户可以创建自己的表, 模式或数据库,而不复制实际数据. 与复制, 通过克隆,数据只存在于一个地方,而且几乎不需要额外的成本, 节省时间和金钱.
- 当执行CLONE命令时, 在DEV环境中创建一个名为Sales_Table_Clone的表,其中包含在运行查询时可用的所有原始生产数据. 在此场景下,数据不会占用DEV环境的存储空间.
- 更新发生在CLONE表上的DEV环境中, 哪些对生产没有任何影响. 而不是, 它会在DEV环境中创建一个新的微分区, 另外,只对新分区征收额外的存储成本,而对完整的克隆分区不征收额外的存储成本.
数据库复制
雪花可以通过其数据库复制方法轻松地处理灾难管理和业务连续性.
大多数传统数据库都需要额外的硬件, 为了灾难恢复和可用性,跨不同区域复制数据的成本和时间都比平时高.
在上图中,与数据库复制,内置 AWS /天蓝色 默认情况下,AZ的多数据冗余功能会自动处理故障, 复制数据到一个区域内的三个可用分区.
但如果整个地区都失败了? 在雪花, 跨云和跨区域复制仅使用不超过4或5个SQL查询就可以轻松实现灾难恢复. 跨地区数据库复制和跨地区数据库故障转移一起减轻了数据丢失.
类似的, 如果多个区域在一个云提供商中经历了停机, 雪花可以提供跨云数据库复制和跨云数据库故障转移. 下图描述了跨区域进行数据库复制的容易程度, 和, 如果A区停电, 转移到B区有多容易.
结论
以其独特的混合建筑, 雪花解决了传统系统的所有关键挑战, 例如节点故障, 网络故障, 安全问题和支持依赖关系. 这些好处可以帮助工程师, 分析师和数据科学家提供了更多的满意度和更容易访问他们的数据.
除了, 雪花可以在任何规模的用户和工作负载下运行,而无需用户和数据负载争用. 我认为雪花架构的一个优点是,您可以独立于其他层扩展单个层. 例如,您可以弹性地伸缩存储层,并分别对存储收费. 当您需要额外的资源以更快的查询处理和性能优化时,还可以提供和扩展多个虚拟仓库.
最后, 因为雪花是为云构建的,并以软件即服务(SaaS)的形式提供,而不是IaaS, 它消除了对软件和基础设施管理的需求. 它的多集群架构允许它处理并发问题,因此组织可以无缝地共享数据,而无需担心任何安全问题, 因为数据在传输和静止时都是加密的. 和, 数据可用性扩展到三个可用性区域, 雪花可以继续运行,即使两个区域变得不可用.
其他公司是否会部分或全部复制雪花的架构还有待观察, 但它可能是您的组织需要的现代数据存储解决方案.