暂无图片
暂无图片
3
暂无图片
暂无图片
暂无图片

BI处理引擎选型 开源与商业的选择

原创 大数据模型 2021-12-13
1705

遥远的数据世界里,在商业智能领域内有两个王国,一个王国叫super,它秉承了开源的教义,天下本源,天下一体,众生平等,众生自由,所以它吸收别人的发明创造有所得时,同时把自己的发明创造贡献出来,而另一个王国smart则相信天下熙熙,皆为利来,天下往往,皆为利往,它认为发明创造的东西本意是为追求利润空间,技术专利从来不对外开放,为了达到利益最大化,甚至不惜代价利用各种资源。

由于两者理念和意识形态不同,所以它们一直在暗暗较劲,就像冷战时期美国苏联军备竞赛一样,两者多方面展开追逐对比,众所周知,商业智能是一个横跨多个领域,混合各种技术的学科,至少包含数据存储、数据处理、数据分析三部分。如图所示,数据处理居于中间位置,负责承上启下的作用,引擎能力做为最重要的一环,它等当于王国的军事力量强弱,商业智能至今,横跨IT多个时代,两个王国一直在努力寻找最合适的处理引擎。
clipboard.png

小数据时代

90年代,OLAP刚刚兴起,全球开始普及化信息化建设。市场上选择的数据产品不多,smart选择了Oracle作为数据处理中心,而super选择了mysql,表面是Oracle是压倒性MySQL,其实两者差不多。Oracle擅长的是OLTP,直到今天它依然擅长的是OLTP,单机Oracle在OLAP领域是鸡肋,而super选择了Oracle,是因为客户群体本身就有Oracle,或者计划使用Oracle。 所以smart推出捆绑Oracle的解决方案,更赢得客户人心。而super王国选择MySQL,MySQL是全球最流行的数据库,super好玩技术,通过MySQL定制的列式引擎或集群实践 ,也能支持运营管理系统和各种报表分析。

smart的客户埋怨数据处理不及时,花钱的东西甚至比MySQL慢,Oracle推出Oracle RAC或者 Oracle Exadata解决方案,但是成本昂贵,不是普通的用户能够承受。smart王国寻找更好的武器。

大数据时代

来到大数据年代,数据产品相比过去丰富了很多,开源精神越来越得到工程师的认可。super因时导势采用了hadoop解决方案,hadoop有三大功能,分布式存储实现了海量存储,分布式计算实现了对海量存储的计算能力,最后YARN实现集群的资源管理。基于hadoop为中心,周边生态继续添加实时计算、批处理、SQL框架等等,使它的功能更加丰富,对于BI来说至今hadoop未失为一套良好全面的解决方案。但是hadoop同时存有生态臃肿,对初入门的人学习成本过高、管理混乱等缺点,hadoop洐生的lamda架构和kappa架构能够解决各种分析问题,但是对商业智能的工程师、开发者、业务员提出更高的要求。

相对于super王国工程化的解决方案,smart王国选择了产品级的解决方案,引入greeplum代替数仓建设,greeplum支持横向扩展,通过增加节点提高计算能力。greeplum的底层用的是postgresSQL,这个意味着兼容postgresSQL生态,并且可以把原有的postgresSQL用户集成进去,最重要的是greeplum也支持开源。商业版greeplum和开源版greeplum提供一样的能力,但是商业版greeplum提供更多的技术服务。

greeplum既支持开源,又支持商业,而且使用简单,smart王国整合greeplum卖给那些急需数据分析又买不了exadata的中小企业,对于那些没有技术能力实现数仓的客户,greeplum对其言也是一个不错的选择。

处理引擎的极限

大数据时代,数据太多,访问太多,无论哪一种处理引擎都会有力竭时,就拿MPP处理引擎Greeplum来说,你必须对全量的数据分析,而你只从数海只取一瓢饮,为了实时性,你必须增长节点提高性能。当数据越来越大,每个节点从硬盘读取数据互相通信反而增加了集群的消耗,再增加节点,性能不但没有增加,相反还下降。针对高并发,数据量低的业务super王国采用了presto做为处理引擎,presto是一个分布式内存集群,优先把数据锁定在内存,响应并发请求。预处理技术kylin提出另外一种解决方案,把全量数据根据需求特征生成立方体,再从立方体读取数据,这是一个多种数据处理技术协同的解决方案。

super王国和smart都支持两种处理技术,但是两种技术缺点也很明显,如果全量数据超出集群内存的阀值,那么presto也没有办法。而kylin的预处理第一步必须耗费大量的力气,而且预定义维度后无法随心所欲自定义查找数据。

合适的处理引擎

super王国终于找到了一个高效、可靠、实用的武器,它就是clickhouse,clickhouse按列存储,通过高压缩算法对数据进行,并且实现向量化,读取的速度非常快,批量写的速度也非常快。但是美中不足的是如此优越的性能,clickhouse只体现在大宽表,对于日常经常使用的多表关联业务场景,clickhouse有心无力。

smart王国同样集成了对clickhouse的支持,但是smart王国相信还有更好的处理引擎,这次它找到了vertica。

vertica是什么?它是一个基于列式存储、实现MPP、去中心化、分布式、可扩展、高可用的数据库。clickhouse扬名立万的成功之作就是基于大宽表某些业务场景比vertica快,但是其它业务场景测试不及vertica,甚至满足不了测试条件。

美国的数据分析市场是我们的3倍,数据集成分析领域的领头军Denodo提出数据虚拟化的思想,通过统一界面访问唯一的接口,背后却是不同的数据源。通过智能调度,请求发送到数据源,通过数据源原生的引擎读取数据,传送到数据虚拟存储区,最后再送回给用户。下次类似的请求,用户直接从数据虚拟存储区读取数据。

用生活语言介绍Denodo,Denodo是一个地产代理商 ,它代理Greeplum、Hadoop、Oracle、MySQL等数据源,为了计算贴近数据,Denodo会利用数据源的原生执行引擎,当数据源读出来后,它存放到数据虚拟存储区,数据虚拟存储区就是Denodo私人经营的楼盘。

数据虚拟存储区的位置非常重要,它每天要整合不同的数据源,整合后再对它们有序按规律整齐摆放。Denodo支持多种方式满足数据虚拟存储区建设,默认使用缓存或内存的方式,如果你购买了Denodo的高级商业版,那么Denodo提供你vertica数据库系统的管理运营数据。

即使Denodo这样的公司,也需要通过vertica提供高段位服务,那么vertica是怎么做到呢?
同样是MPP引擎,vertica的关键核心技术是没有采用传统关系数据库的B树索引结构,而是冗余存储一张表的多个物理视图,每一个物理视图等于是映射,vertica称之为projection。

vertica维护不同排序有重叠的映射,尽量使得每个查询只来自于一个映射,为提高查询性能,表查询需要的列至少在一个映射中。
clipboard2.png

greeplum做MPP,impala也做MPP,但是vertica的MPP是牺性了空间换取时间,在空间上vertica构建了大量的索引,加上独有的列式存储和压缩技术,同类产品中只有vertica做到鹤立鸡群,出类拔萃。

读写的存储机制上,Vertica数据库将所有的数据库更新缓存在一个可查询的主内存缓存里面。这块缓存被称为写优化存储(write-optimized store,WMS)。写优化存储中的数据是按照跟新顺序以未压缩的集合,未排序的数据列阵列的形式存储的。这些数据会被放入到数据投影中。数据结点上的一个异步后台进程,通常称为Tuple mover,它会将近期的更新迁移到永久的硬盘存储区。这块存储区被称为读优化存储(Read-optimized Store,ROS)。读优化存储区中的数据是经过排序,压缩,然后被装进变长的硬盘分区中的。这样优化措施保证了数据加载的性能。后来,TiDB的架构设计也借鉴了Vertica的读写机制。

目前Vertica推出商业版和社区版,但社区版仅限于1TB数据和3个数据库节点,所以喜欢白嫖的同学也可以体验,见 vertica
vertica knowledge

Vertica介绍

Vertica 创建于2005年,Vertica 成立于2005年,总部位于美国麻萨诸塞州的Billerica,在亚太和欧洲都设有Office。2011年3月被HP公司收购。它的合作创始人是数据库之父Michael Stonebraker,他曾开发了Ingres 和 Postgres数据库,是公认的数据库权威大师。Vertica是Stonebraker 基于MIT开发的C-Store 架构的商业实现,致力于解决当前数据分析平台日益增长的“大数据”和实时分析要求所带来的挑战,可以以传统解决方案30%的成本,实现50倍-1000倍的性能提高。

后记

一个项目系统要做好,质量高,取决于三个元素,人、方法、工具,所以项目经理、方法论、技术和工具非常重要。我们都知道现在开源的软件覆盖领域铺天盖地,到处都是,第一次接触Vertica是2015年,那时和领导报告 这个东西测试还不错,我忘了它的上限是100GB还是1000GB,领导一听是商业,马上要我们研究HADOOP,免费的东西最香。Vertica是一个好工具,但是企业却要你用免费的开源技术把项目做好。那时候,我感觉开源和商业是两个对立,smart王国原型来自于smartBI,super王国原型来于superset,三者同属BI,但是感觉区别不大,最大的区别是你使用哪一个数据产品做处理引擎,这决定了你整套解决方案的灵魂和核心。本人在多年的工作经历打磨比较,当时体验Vertica后,觉得它技术工程方面确实有过人之处,而且它在国外积淀了多年。近年,数据库领域出了一个snowflak,也是擅长分析的大行家,snowflake的技术内幕流出不多,但是从技术大势上,个人认为snowflake或多或少借鉴了Vertica的工程思想。大空间换短时间,牺牲空间的收益最丰富,期待vertica在数据分析其它领域再起建树。

最后修改时间:2022-01-05 22:53:42
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论