olap技术选型:对什么进行选型?

zhisheng_blog zhisheng_blog     2023-01-01     431

关键词:

OLAP 技术架构

上图展现的 impala 技术架构,很直观展示了 OLAP 技术核心模块:数据模型、存储格式与数据处理架构;

数据模型

数据模型层主要是解决数据传输问题,通过对数据序列化与反序列化,同时提供了远程调用( 如 RPC )功能,从而实现跨平台、多语、客户端与服务端数据传输与通信。传统跨语言通信方案:

  • 基于 SOAP 消息格式的 WebService

  • 基于 JSON 消息格式的 RESTful 服务

分布式、大数据量跨语言通信方案:

  • Google protobuf

  • Apache Thrift

  • Apache Avro

下图为 Thrift 协议栈结构,通过对结构化数据的解析,发送,接受完成数据传输

大家可能会有疑问,为什么会存在这么多通信协议与通信框架;只使用 JSON 不香吗?其实,当你想要将一些数据存储在文件中或想要通过网络发送时,你经历了一下几个演化阶段:

  1. 使用编程语言的内置序列化,如 Java 序列化、Ruby 的 marshal,或 Python 的 pickle。

  2. 然而,你意识到困在一种编程语言中是很糟糕的,所以转而使用一种广泛支持的、与语言无关的格式,比如 Json。

  3. 然而,你发现 JSON 太过冗余,解析太慢,不能区分整数和浮点数,并且你认为自己非常喜欢二进制字符串和 Unicode 字符串。

  4. 然后你会发现人们使用不一致的类型将各种各样的随机字段填充到他们的对象中,这时你非常需要一个 schema 以及一些 documentation。也许你还在使用静态类型的语言,并从 schema 生成 model 类。你还会意识到,与 JSON 相似的二进制文件实际上不是那么紧凑,因为你在一遍又一遍地存储字段名。如果你有一个 schema,你可以避免存储对象的字段名,这样可以节省更多字节。

如果你到了第四阶段,你的选择一般会使 Thrift,Protocol Buffers 或 Avro。这三种方法都为 Java 人员提供了高效的、跨语言的数据序列化(使用 schema)和代码生成。

存储格式

存储格式指的是数据在存储介质中以什么样方式进行存储;传统的关系型数据库,如 Oracle、DB2、MySQL、SQL SERVER 等采用行式存储法(Row-based),在基于行式存储的数据库中, 数据是按照行数据为基础逻辑存储单元进行存储的, 一行中的数据在存储介质中以连续存储形式存在。随着大数据的发展,现在出现的列式存储和列式数据库。它与传统的行式数据库有很大区别的。列式存储(Column-based)是相对于行式存储来说的,新兴的 Hbase、HP Vertica、EMC Greenplum 等分布式数据库均采用列式存储。在基于列式存储的数据库中, 数据是按照列为基础逻辑存储单元进行存储的,一列中的数据在存储介质中以连续存储形式存在。下图为两种主要列式存储格式 Parquet 与 ORC 比较。

因此,选择什么样存储格式,会在很多程度上影响到是否支持模式演化(schema evolution)、是否支持 ACID、是否支持 update 操作、查询性能、数据压缩能力等

数据处理框架

数据处理框架指的就是 OLAP 引擎或者 OLAP 工具,比如 presto、doris、doris、kylin、clickhouse、impala 等等。这些 OLAP 数据处理框架执行查询逻辑一般都会经过客户端发送 SQL 查询、引擎节点解析和分析查询语句、执行查询某个任务、向 client 发送结果集;下图是 impala 执行流程

对什么进行选型

讲了这么多,哪我们 OLAP 技术选型究竟是对什么进行选型;很明显,我们是对 OLAP 数据处理框架进行选型

  • 但是数据处理框架所使用的存储格式对 OLAP 很多方面起到决定性作用;如下图,如果我们选型了 impala(使用 Parquet 作为存储格式),就不能期望对模式演化(schema evolution)有很好支持;再比如,如果选型了 druid(使用作为存储格式),底层查询在存储引擎上的执行过程不能向量化执行,因此在对大数据量、少量列进行聚合计算查询时性能应该是比 impala、presto 差。

  • 通过数据处理框架所使用存储格式,再结合我们需求可以很大程度缩小选型范围;哪怎么再在这个小范围再进一步去选择符合我们场景的 OLAP 技术呢?在下篇再跟大家讲讲 OLAP 技术分类,通过这些分类我们可以进一步缩小我们选型范围,最终选择合适技术。

END

热门内容
两年经验斩获蚂蚁/头条/PingCAP Offer,牛逼了快手大数据平台服务化实践深入理解 Java 内存模型
关注我关注我,Java 学习不迷路!
点个赞+在看,少个 bug ????

创业公司的技术选型

技术选型对创业公司至关重要,好的选型会让你少走弯路,产品更快推向市场,比竞争对手更快赢得客户,获得更多融资,有更多资源投入产品研发和市场扩展…如此往复形成良性循环。相反,每一个错误选型都会带来巨大... 查看详情

微服务之架构技术选型与设计

参考技术A本文主要介绍了架构技术选型与设计-微服务选型,Springcloud实现采用的技术,希望对您的学习有所帮助。架构技术选型与设计-DUBBODubbo,是阿里巴巴服务化治理的核心框架,并被广泛应用于阿里巴巴集团的各成员站点(... 查看详情

关于mq的几件小事消息队列的用途优缺点技术选型

1.为什么使用消息队列?(1)解耦:可以在多个系统之间进行解耦,将原本通过网络之间的调用的方式改为使用MQ进行消息的异步通讯,只要该操作不是需要同步的,就可以改为使用MQ进行不同系统之间的联系,这样项目之间不... 查看详情

技术框架选型需考虑的性能因素

        技术框架选型需考虑的性能因素在新产品进入研发阶段前,技术、操作系统、硬件、数据库等选型是必须要完成的一项重要工作,这是对产品非功能需求、架构设计中的各种要素及约束的综合... 查看详情

大数据olap查询引擎选型对比(代码片段)

1、常用OLAP查询引擎    目前大数据比较常用的OLAP查询引擎包括:Presto、Impala、Druid、Kylin、Doris、Clickhouse、GreenPlum等。    不同引擎特点不尽相同,针对不同场景,可能每个引擎的表现也各有优缺点。下面就以上... 查看详情

我用chatgpt做直播技术选型,卷死了同事

...作为冲浪第一线的开发者可不能错过。刚好在做“音视频技术选型”的调研,不如找ChatGPT来聊聊,看看它怎么回答?在同质化竞争如此激烈的今天,虽然各厂商都有自己的差异化优势,但开发者在选型时并没... 查看详情

我用chatgpt做直播技术选型,卷死了同事

...作为冲浪第一线的开发者可不能错过。刚好在做“音视频技术选型”的调研,不如找ChatGPT来聊聊,看看它怎么回答?在同质化竞争如此激烈的今天,虽然各厂商都有自己的差异化优势,但开发者在选型时并没... 查看详情

t31训练营笔记技术架构选型

1.关于技术选型1.1为什么要进行技术选型降低开发成本、提高研发效率1.2微服务架构的产生(1)第一代单体应用,所有模块打包到一起部署运行。特点:不可靠、单维扩展、不可持续发展。(2)SOA,面... 查看详情

关于消息队列的技术选型

https://cloud.tencent.com/developer/article/1006035导语:消息队列是分布式系统中重要的组件,在很多生产环境如商品抢购等需要控制并发量的场景下都需要用到。最近组内需要做流水server的选型升级,这里对消息队列及常见的消息队列进... 查看详情

-项目说明流程设计技术选型与模块划分

作者:冰河星球:http://m6z.cn/6aeFbs博客:https://binghe.gitcode.host文章汇总:https://binghe.gitcode.host/md/all/all.html大家好,我是冰河~~在前面的章节中,我们对《SpringCloudAlibaba实战》专栏的内容进行了简单的介绍,并简单介绍了微服务的... 查看详情

-项目说明流程设计技术选型与模块划分

作者:冰河星球:http://m6z.cn/6aeFbs博客:https://binghe.gitcode.host文章汇总:https://binghe.gitcode.host/md/all/all.html大家好,我是冰河~~在前面的章节中,我们对《SpringCloudAlibaba实战》专栏的内容进行了简单的介绍,并简单介绍了微服务的... 查看详情

-项目说明流程设计技术选型与模块划分

...实战专栏最后的准备工作,包括:项目说明、流程设计、技术选型和模块划分。项目说明经过一段时间的反复思考,整个《 查看详情

应用层/安全层/传输层如何进行协议选型?

系统设计,协议先行。大部分技术人没有接触协议的设计细节,更多的是使用已有协议进行应用层的编码,例如:(1)使用http作为载体,设计get/post/cookie参数(2)使用dubbo框架,而不用去深究内部的二进制包头包体,以及序列... 查看详情

如何进行架构技术选型

一、什么是技术选型为了达到业务需求,从各种技术选择中选取最优的过程。开发语言:Java,Python,C++中间件:Mysql/PGSQL,Redis/Memcache微服务框架:SpringCloud,Dubbo,K8S二、怎么做技术选型2... 查看详情

导致选型失败的原因有哪些?

虽然刚工作几年接触不到技术选型,因为大部分已有架构设计、总体设计的人确定了,但随着个人工作成长,未来很可能要面临技术选型,其实如果你真的动手做些自己的项目的话,也面临着技术选型,只是看你是否足够重视罢... 查看详情

技术选型-微服务

【微服务带来的好处】1.解耦合,维护和部署简单根据模块系统分开,一个模块需要修改的时候,对其他模块的影响最小,甚至没有影响,发布的时候只发布被修改的模块即可。微服务关键需要边界定义清楚。2.服务可作为商品... 查看详情

做技术选型时,要注意些什么?

...周明耀,浙江大学工学硕士,13年软件研发经验,近10年技术团队管理经验,4年分布式计算、大数据技术经验,出版书籍包括《大话Java性能优化》、《深入理解JVM&G1GC》、《技术领导力-码农如何才能带团队》;36氪经授权 查看详情

元数据管理开源项目技术选型

元数据管理或者叫数据发现服务开源项目技术选型目录一、元数据管理简介是什么?为什么?二、开源方案介绍LinkedinDatahubApacheAtlasNetflixMetacatLYFTAmundsen三、详细对比四、推荐度一、元数据管理简介是什么?元数据ÿ... 查看详情