一、云数仓、数据湖和集成湖仓的区别1、数据仓库作为分析的中央存储库,可以用来存储结构化和过滤后的数据。作为数据仓库典型用户的数据分析师,通常具有丰富的SQL知识和数据处理能力。通过对仓库中的数据进行优化和转化,实现快速访问、查询和分析,并据此获得洞察,构建仪表盘和数据报表,驱动业务成果的转化。2.数据湖2000年代初,数据湖最初被雅虎、谷歌等大型互联网公司采用。尽管数据仓库的数据收集和存储功能相似,但它是为处理大量原始、非结构化和半数据而设计的。结构化大数据。因此,数据湖通常可以容纳比仓库更多的数据,并且能够处理更多的用例。在大多数情况下,各种未经处理的原始数据直接加载到数据湖中,因此需要具有专业知识的数据科学家对数据进行后续操作和转换。正是因为数据湖非常擅长处理各种实时摄取的数据流,所以它的一个典型用例是以批处理的方式启用自助服务(self-service)ELT,自动化数据处理,复杂度调度、构建和维护单个数据管道。3.DataLakehouse不同于简单的数据仓库和数据湖架构。Lakehouse集成被普遍认为是一种非常重视开放性的新型数据管理架构。它的目标是通过将上述两个引擎组合成一个直接针对数据湖本身运行分析的单一平台来消除多个查询引擎的麻烦。2.什么是雪花?Snowflake作为一个基于云的数据仓库,专为运行在AWS、微软Azure、谷歌云平台(GCP)等主流云服务商上的数据业务打造。它是一种软件即服务(SaaS)解决方案,使企业能够将收集的数据整合到一个集中位置进行分析。Snowflake被认为是云数据仓库行业中最大的公司之一。它提供了一个为支持商业智能用例而构建的自助服务平台,并允许用户利用SQL来查询数据并创建可推动业务决策的仪表板和报告。3.什么是数据块?与Snowflake类似,Databricks也是一个基于云的数据平台。但它是一种数据湖类型,而不是数据仓库。当然,Databricks现在已经扩展到了湖仓一体化。如果说Snowflake专注于分析和报告,那么Databricks则更专注于机器学习、数据科学和数据流用例。由于能够支持多种开发语言,Databricks更适合数据工程师和数据科学家。Databricks作为基于ApacheSpark的大数据平台,主要用于存储大量未经处理的原始数据。简单来说,就是围绕ApacheSpark的分布式计算框架构建数据管理层,免除人员管理和维护基础设施的负担。四、架构1、SnowflakeSnowflake是一个基于ANSISQL的serverless解决方案,具有完全分离的存储和计算处理层。Snowflake使用大规模并行处理(MassivelyParallelProcessing,MPP)来处理查询,每个单独的虚拟仓库(即计算集群)在本地存储整个数据集的一部分。Snowflake使用微分区在内部将数据组织和优化为压缩列格式,以便将它们保存到云存储中。Snowflake可以管理文件大小、压缩、结构、元数据、统计信息和其他用户不可见的数据对象,这些数据对象只能通过SQL以自动化方式查询和访问。Snowflake中的所有处理都是使用称为虚拟仓库的计算集群完成的。这些集群通常由多个MPP节点组成。作为SaaS解决方案,Snowflake在后台管理着来自用户请求、基础设施、元数据、身份验证、查询解析、访问控制和优化的大量内容。由于可以运行在AWS、GCP、Azure三大云平台上,Snowflake的仓库技术可以让用户非常方便的使用SQL进行快速查询。2、Databricks属于SaaS解决方案,可以运行在AWS、GCP和AzureDatabricks上,但架构完全不同。它起源于Spark,Spark是一种围绕单个节点或集群构建的多语言引擎,可以部署在云端。Databricks可以在控制平面和数据平面之外运行。其中,数据平面包括所有要处理的数据,而控制平面包括Databricks管理的所有后端服务。与Snowflake类似,Databricks也是无服务器的,因此能够支持几乎无限的并发请求。总的来说,Databricks架构包括以下几个核心组件:(1)Databricks的DeltaLakeDeltaLake是Databricks的数据仓库版本。它充当在传统数据湖之上运行的附加存储系统。DeltaLake的核心是在现有数据湖上统一流式和批式处理,充当Spark计算和云存储之间的中间地带。DeltaLake架构由以下三类数据表组成:Bronze表:原始数据Silver表:稍微“纯化”的数据,但还没有准备好使用Gold表:已经纯化并可以使用的数据Delta保存在每个表的所有数据都会以parquet文件的形式存储在云存储中。(2)Databricks的DeltaEngineDeltaEngine是一个兼容ApacheSpark的高性能查询引擎,可以辅助处理DeltaLake中的数据。它通过针对SQL和DataFrame工作负载的改进查询优化器提高了DeltaLake的整体性能。用C++编写的优化器战略性地放置在执行层和云对象存储之间,充当缓存层和执行引擎。(3)NotebooksNotebooks包含可执行代码、可视化和描述性文本。可以通过基于网络的界面访问它们。借助各种Notebook,开发者可以使用Scala、R、SQL和Python语言协同构建不同的模型。(4)MLFlowMLflow是Databricks创建的另一个开源平台,可用于配置机器学习的环境,并从现有库如Spark、TensorFlow、ONNX等运行测试,实现大规模可靠管理机器学习和数据科学等生命周期。MLFlow具有三个核心组件:实验跟踪、模型管理和模型开发。五、可扩展性1.SnowflakeSnowflake具有自动扩容和自动挂起两种功能,可以在空闲和繁忙期间启动和停止集群。虽然在Snowflake中,开发者不能随意调整节点大小,但可以通过点击自动扩容到10个仓库。当然,单个表中每个队列有20个DML的限制。2.DatabricksDatabricks还有自动扩容的功能。也就是说,集群会根据单个查询和并发用户的实际使用情况自动扩容和缩容。不过由于Databricks主要是为数据科学家设计的,它的UI比较复杂,用户调整起来会有些困难。6.安全性和合规性无论是在Snowflake还是Databricks中,所有静态存储的数据都会自动加密。它们都提供RBAC(role-basedaccesscontrol,基于角色的访问控制),并能符合各种法规和认证,例如:SOC2TypeII、ISO27001、HIPAA和GDPR。但是,与Snowflake不同的是,Databricks没有存储层。开发人员需要使用对象级存储,例如AWSS3、AzureBlobStorage和GoogleCloudStorage。7.数据支持Snowflake和Databricks都支持半结构化(如:Parquet、Avro、Orc、CSV、JSON)和结构化数据。Snowflake在2021年9月宣布支持非结构化数据。在湖仓整合方面,Databricks还可以处理任何时间类型或格式的数据,包括非结构化数据。由于Databricks支持多种开发语言,因此在这方面具有优势。它的Spark引擎更适合数据流、ML、AI和与数据科学工作相关的工作负载。并且由于Snowflake最初是作为数据分析工具设计的,其核心能力来自于SQL。显然,SQL擅长处理数据转换。当然,Snowflake最近也通过引入Snowpark宣布支持Python、Java、Scala等语言。8.管理Databricks省去了很多与管理和运行Spark相关的基础设施工作,但用户仍然需要通过大量的手动输入来调整集群大小、更新配置和切换计算选项。可见Databricks的门槛高,学习曲线陡峭。基于SQL的Snowflake更简单,用户只需点击几下鼠标即可开始使用。同时,Snowflake还提供了对对象、角色、用户、权限和访问权限的细粒度控制。除了执行常规作业外,Databricks还允许用户实施保护日志、控制作业属性和所有权。九、数据保护1.SnowflakeSnowflake有两个独特的功能——时间旅行(TimeTravel)和故障安全(Fail-safe)。其中,时间旅行功能是在数据更新之前保存数据的状态。通常,时间旅行限制为1天,但企业客户可以指定最长90天的时间跨度。此功能可应用于表、模式和数据库。故障安全意味着历史数据可以在时间旅行保留期结束后的7天内得到保护和恢复。2.DatabricksDatabricks的DeltaLake也有时间穿梭的功能。它的工作方式与Snowflake非常相似。存储在DeltaLake中的数据自动进行版本控制,以便用户可以按需访问或使用数据的历史版本。Databricks的主要优点之一是,由于它运行在基于对象级存储的Spark上,因此它本身不需要存储任何数据,从而消除了各种本地用例。十、价格1、SnowflakeSnowflake采用基于单个仓库使用量的计费模式。由于各种仓库有X-Small、Small、Medium、Large、X-Large等各种规模,因此在规模成本和服务器集群数量上存在很大差异。X-small类型的Snowflake仓库的基本定价约为每秒0.0003个积分或每小时1个积分。Snowflake标准版上X-Small仓库的按需使用模式每点2美元起。随着仓库规模的使用量增加,积分的成本和消耗也会增加。对此,Snowflake提供了多个版本,允许用户根据使用情况预购积分。通常,预购容量模型的费率低于按需模型。按需存储的价格为每月40美元,前端客户为每TB23美元。当然,积分的花费也会根据业务等级的不同而有所不同。2.与Snowflake相比,Databricks提供更便宜的存储。毕竟,一切都存储在客户自己的对象级存储环境中。由于某些数据可能不会经常访问,因此可以对其进行高度优化。例如,S3中的存储起价为每TB23美元。并且根据数据大小和访问频率的需要,此类费用可能会大幅降低。Databricks的定价是基于DBU(Databricksprocessingunit),其中包括三个商业价格级别:经典、高级和企业。价格从每DBU0.07美元到0.65美元不等,具体取决于DBU的大小。11、云基础设施作为托管SaaS服务,Snowflake和Databricks在后端基础设施的启动和运行方面做得很好。此外,这两种解决方案都可以在多个不同的云环境中运行。当然,基于Spark的Databricks需要更多的手动输入和微调才能发挥其全部潜力。12.性能由于Snowflake和Databricks支持的用例不同,我们很难简单断言哪一个性能更好。值得注意的是,Snowflake在数据访问过程中优化了所有存储,更适合交互式查询。十三。Databricks和Snowflake之间的主要区别Snowflake在处理生产级商业智能负载方面非常强大,这些负载通常需要以一致的方式运行或生成报告和仪表板。因此,Snowflake可以替代传统的数据仓库,提供更快的性能。但是,基于SQL的Snowflake并未针对处理大量数据进行优化,尤其是对于流式用例。它帮助数据分析师以一种简单的方式使数据民主化,以扩展和处理更多负载。当然,它的核心用例仍然是数据仓库。作为基于Spark的解决方案,Databricks的集成湖和仓库平台支持更广泛的功能需求,尤其是:ELT、数据科学和机器学习。Databricks允许开发人员将数据保存在自己的托管对象存储中,并提供了良好的使用托管DeltaLake(数据处理引擎)和DeltaEngine(SQL查询引擎)的体验。通过Databricks的DeltaLake和DeltaEngine平台,开发者基本可以实现Snowflake提供的所有功能,但由于它是一个复杂的工具,开发者仍然需要花时间优化和构建功能齐全的湖仓一体化。同时,Databricks会要求用户比Snowflake投入更多的维护时间和经验。总而言之,Databricks和Snowflake数据平台都可以支持高性能的SQL查询和数据处理。其中,Databricks提供了建立全功能湖仓集成的所有部件和说明手册,因此更擅长处理数据工程、ETL/ELT、数据科学和数据流负载;而Snowflake使用各种预构建的工具来处理生产环境中的数据以供以后分析。原文链接:https://dzone.com/articles/databricks-vs-snowflake-the-definitive-guide译者介绍陈朱利安(JulianChen),社区编辑,拥有十余年IT项目实施经验,是擅长内部沟通管控外部资源和风险,注重传播网络与信息安全知识和经验;持续以博文、专题、翻译等形式分享前沿技术和新知识;经常在线上和线下开展信息安全培训和讲座。
