内容简介:Apache Doris(Incubating) 0.12.0 已经发布了,这是 Doris 进入 Apache 孵化器后第四个正式版本。 此版本带来的新功能包括: 全新的存储格式SegmentV2 此版本对底层的数据文件格式进行了完全重构。原有的存储格式...
Apache Doris(Incubating) 0.12.0 已经发布了,这是 Doris 进入 Apache 孵化器后第四个正式版本。
此版本带来的新功能包括:
全新的存储格式SegmentV2
此版本对底层的数据文件格式进行了完全重构。原有的存储格式是类似orcfile的列存格式,存在诸多的设计问题,如按字节流的读取方式效率低下、大量随机读问题、不支持字典压缩、不支持数据块的缓存、结构不清晰难以扩展等。
新的SegmentV2存储格式参考了Parquet的设计思路,引入了基于Page的最小数据存储单元,并将数据文件划分为数据区、索引区和元数据区三个部分。针对不同的列类型、索引格式实现了不同的Page编码方式,显著提升了数据的读写效率,并增强了数据格式的可扩展性。
在SegmentV2的基础上,0.12版本实现了如下重要功能:
· 字典压缩编码
原有的存储格式中,字符串类型都是采用Plain Text的格式进行存储的,这种朴素的方式在某些低基数字符串列的场景下,会极大地浪费存储空间。
SegmentV2通过Dictionary Page,实现了字典压缩编码,在不同基数的情况下可以节省数倍的存储空间。
· 基于Bitmap的二级索引
之前版本的Doris只支持基于BloomFilter的二级索引,只能过滤block级别的数据,并且在某些低基数列上的效果欠佳。在0.12版本中,支持了基于Bitmap的倒排索引,可以在任意Key列上创建。通过倒排索引,可以更精准地进行数据查询和检索。测试中,通过倒排索引,可以提升数倍的查询性能。
· Page Cache和内存表
Page是SegmentV2格式中,最小的数据单元,一个Page会被完整的解压并读取到内存中。Page一旦生成,是不可变更的,根据这个特性,此版本增加了Page Cache功能,通过在内存中缓存解压后的Page数据,可以避免大量的重复IO,降低磁盘IO。
同时基于Page Cache功能,也提供了一种内存表的实现方式。用户可以在建表时指定表的属性“in_memory”=“ true”,则系统会尽可能的保证该表的数据Page保留在Page Cache中,从而提升数据的访问效率。
· 延迟物化
全新的存储格式提供了更清晰的数据读取逻辑,使得Doris能够支持延迟物化这种更高效的数据读取能力。延迟物化的含义,举例来说,当用户需要读取A、B、C三列的数据,并且在A列上有过滤条件时,系统会先读取A列并进行过滤,根据过滤后的行号再去读取B、C两列,这样可以显著减少B、C两列的读取数据量。根据测试,在某些场景下,延迟物化功能可以带来几十倍的性能提升。
Spark on Doris
此版本实现了Spark Doris Connector,用户可以直接通过Spark对Doris中存储的数据进行查询。从Doris的角度看,将其数据引入Spark,可以使用Spark一系列丰富的生态产品,扩宽了Doris的想象力,也使得Doris和其他数据源的联合查询成为可能。
明细模型上的物化视图功能
在之前的版本中,Doris仅支持在聚合模型(Aggregate Key)上创建上卷表(Rollup),而如果用户创建的是明细模型(Duplicate Key)表,则无法使用该功能。在新版本中,Doris支持了在明细模型上创建物化视图的功能。该功能使得用户可以更加灵活地进行数据建模。
当前该功能仅支持SUM、MIN、MAX三种上卷聚合方式,更多的聚合方式如HLL、BITMAP_UNION、AVG、COUNT等将在后续的3位版本迭代中陆续推出。
支持ORC格式数据的导入
在0.11版本中支持了Parquet文件格式,而在0.12版本中,进一步支持了ORC格式的数据文件的导入,进一步降低了用户的使用门槛,可以更加方便地从不同数据源中导入数据。
动态分区
在之前的版本中,数据表的分区(Partition)需要手动创建。对于一些例行任务场景,用户需要维护额外的脚本或服务来定期地增加新的分区或删除旧的分区。在新版本中,支持了动态分区的定义和创建,分区可以按照定义定期地进行创建和删除,用户无需再担心因分区未及时创建而导致数据无法导入的问题了。
差集、交集、Grouping Set
0.12版本支持了更丰富的 SQL 语法和算子。其中差集(Expect)和交集(Intersect)算子避免了用户通过改写Join来获取想要的结果,同时也带来了查询性能的提升。
Grouping Set功能能够让用户更便捷地通过简单的SQL语法获取不同纬度的聚合查询结果,进一步降低了SQL的复杂度。
更多增强特性
除了以上主要功能更新外,0.12版本也做了诸多性能和功能方面的改进。
· 插件框架和审计日志插件
0.12版本分别实现了FE端和BE端的插件框架。该框架支持用户对一些功能组件进行定制化的开发和安装。目前该功能还处于实验阶段。系统提供了一个FE端的审计日志插件供使用,通过该插件,用户可以直接通过Doris的查询能力来分析Doris系统内的查询请求情况。
· 显著提升了Doris On Elasticsearch的性能
通过更精细的谓词下推、以及API接口的改进,显著提升了Doris On ES性能。
· Bitmap聚合方式支持64位整型
Bitmap聚合方式从支持32位整型扩展到了64位,使得可以在更多场景实现快速精确去重能力。
· 更多的列类型转换
支持Float转Double,Date和Datetime的互转、Integer转Date/Datetime,以及Varchar转换为整型、浮点和日期类型等。通过更丰富的列类型转换,使得用户能够更灵活地应对业务场景的变更。
· 基于NIO模型的 MySQL 协议连接层
通过XNIO框架(https://xnio.jboss.org/),Doris的连接层现在可以支持百万量级的连接请求。新的连接层框架可以在高并发场景降低Doris在连接协议上的开销和负载。
该功能可以通过添加FE的配置项:mysql_service_nio_enabled=true开启。
此外官方还透露,下一版本将支持更好的物化视图功能、Spark导入功能,并且对查询引擎性能做进一步地优化。
详情查看更新说明:
https://mp.weixin.qq.com/s/oR6q-JsJEF3VNPGMAQfsHQ
下载地址:
https://github.com/baidu-doris/incubator-doris/releases
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- NPM包(模块)发布、更新、撤销发布
- 有赞灰度发布与蓝绿发布实践
- 【重磅发布】Linkis 0.10.0 版本发布
- BeetlSQL 3.0.9 发布,Idea 插件发布
- 贝密游戏 0.7.0 发布,发布斗地主
- 【重磅发布】DataSphere Studio 0.9.0 版本发布
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
区块链:定义未来金融与经济新格局
张健 / 机械工业出版社 / 2016-6-18 / 49.00
从构建价值互联网的角度看,区块链的出现意味着从0到1。正因如此,本书章节结构与常见的体例不同,从第0章开始。第0章从文字与货币的起源出发,通过论述人类信息传递和价值传输手段的进步,说明区块链技术诞生的必然性。第1章用深入浅出的语言讲解区块链的本质、运行原理、颠覆性潜力以及区块链技术的现状与未来;第2章宏观讲述了区块链技术带来的新产品和新机遇,包括数字货币、互联网金融、物联网,以及新一代的基础设施;......一起来看看 《区块链:定义未来金融与经济新格局》 这本书的介绍吧!