此次发布的新版本为Doris进入Apache社区孵化的第五个正式版本。经过6个月的研发,Doris在功能和性能上都得到了很大的提升。共计60位社区同学贡献了633个commit,感谢以下同学为Doris做出的贡献:
目前社区贡献者数量已经增长到121位。
从上一版本到现在,我们还迎来了4位Committer:
yangzhg
wuyunfeng
caiconghui
wangbo
感谢所有参与Doris社区建设的同学,同时也感谢所有关注和使用Doris的朋友给我们的建议和支持!
一些有趣的事情
最早的一次提交发生在早上7点,最晚的发生在0点。
不熬夜的好习惯要保持下去!
周四的提交最频繁
是因为周五要写周报吗
非东八区的小伙伴,让我看到你们的双手好吗?
我们在新版本中增加了9个新功能:
大查询落盘
Doris在排序和窗口函数功能中支持查询落盘功能。当参数 enable_spilling
为 true 并且查询达到内存限制时,查询将进行落盘,以避免由于内存瓶颈导致的无法查询的问题。
0.13版本主要支持在排序和窗口函数上的落盘功能。
物化视图支持 bitmap_union, hll_union 和 count
物化视图支持更丰富的聚合函数:bitmap_union
,hll_union
和 count。在“订单”业务情景中,用户可以借助生成 count 类型的物化视图,来分析不同维度的订单数量。还可以对某些重复数据精确去重分析(例如分析网站流量中的PV和UV数据)执行 bitmap 和 hll 函数的预先计算。Doris可以自动将用户查询与最佳物化视图进行匹配,以加快查询速度。
Spark导入
通过外部 Spark 资源实现对导入数据的 ETL 处理,提高了 Doris 大数据量的导入性能,并节省了 Doris 集群计算资源。它主要用于在初始迁移期间将大量数据导入 Doris 的方案。
RoutineLoad 和 StreamLoad支持新的数据格式:Json
通过load语句中的转换规则将 Json 格式的数据导入 Doris。此功能对于原始数据格式为 Json 的日志服务特别有用。用户不再需要在外层将数据处理为 csv 格式。
修改 RoutineLoad
可以通过 ALTER ROUTINE LOAD stmt 修改常规 Routine load 的属性,例如并发性、Kafka消费进度。注意只能修改处于 “pause” 状态的作业。修改并发度后,当 Routine load被 resume 时,新设置的属性将用于 Routine load。
Logstash 插件
Logstash 插件用于将数据从 Logstash 输出到 Doris 中。使用HTTP协议与Doris FE Http接口进行交互,通过Doris的 Stream load 来加载 Logstash 的数据。
支持查询结果输出到文件
Doris 当前支持将查询结果导出到第三方文件系统,例如HDFS,S3,BOS。语法是从 MySQL 语法手册中引用的,导出格式为CSV。导出查询结果可以提供给其他用户,以供其他系统下载或进一步处理。对于因为结果集太大而无法通过 MySQL 协议输出的查询很有帮助,例如当函数 bitmap_to_string
后所标识的ID过多时。
在delete语句中支持谓词
delete语句支持IN或NOT IN谓词的条件,用户可以通过此功能删除满足不同值的行。
我们做出了如下的功能优化:
Doris on ES
支持从ES提取_id并使用ES的通配符或别名索引创建表
来自本地ES文档的_id字段是ES索引的主键。此字段可由Doris在ES上获取。此外,Doris支持使用别名或通配符索引(例如log_ *)创建外部表。用户可以使用别名和通配符来匹配所有索引,从而轻松搜索所有这些索引。重构并增强了读取 ES 元数据的逻辑
为doc_values扫描添加docvalue限制并默认启用doc_values扫描
忽略_total节点以提高效率和完全信任的文档数
合并规则优化
此优化更新了触发合并的策略,该版本合并策略将大福减少写放大,空间放大,读取性能等问题(它倾向于合并相邻大小的文件)。当相同版本的数量相同时,合并数量减少,并且文件总数减少。
简化删除过程
删除期间的轮训机制被取消,并由事务回调代替,把delete命令的响应时间减少到毫秒级。
在连接谓词下推时支持简单的可传递性
当查询过滤谓词中涉及的列与联接条件中涉及的列一致时,过滤谓词可以进行列传输,还可以过滤联接中的另一个表,从而减少了数据量,达到了提高查询速度的效果。
非阻塞 OlapTableSink
在此优化中,发送过程和加载新行过程在 OlapTableSink 中并发执行,并且导入性能得到改善。经过测试,56G Broker load,原始版本将运行4个小时,多版本可将时间减半。
支持数据库级别的事务管理并使用 ArrayDeque提升事物任务性能
事务管理支持 DB 级别的划分,并且每个 DB 不会相互阻塞,从而提高了事务任务的执行效率。
使用 IN 谓词提高查询性能
添加新的配置 max_pushdown_conditions_per_column 以限制可以向下推到存储引擎的单个列的条件数。它与 split scan key 的先前配置不同。仅默认值为1024。将两种配置分开后,Doris的 qps 有所提高,CPU使用率也降低了。
优化读取 parquet 文件的速度
读取 parquet 文件时,在 broker 读取过程中增加了一个缓存缓冲区。当 broker 要寻找到 position 并从远程 parquet 文件中获取数据时,会先尝试在缓存缓冲区中读取该位置。一旦期望的数据命中了缓存缓冲区,那么我们就不用再花时间从远程 parquet 文件中读取数据了。测试后,broker 中的 parquet 文件的时间可以减半。适用于 Spark load 和 Broker load。
还增加了新的查询函数:
bitmap_intersect
orthogonal_bitmap_intersect in UDAF
orthogonal_bitmap_intersect_count in UDAF
orthogonal_bitmap_union_count in UDAF
在API上我们的变化如下:
[SegmentV2] 新表的默认存储格式均为 Segment V2
[License] 修复了 Doris 目前的一些 License 问题
编译 Doris 时,默认将不试用 Mysql client 和 LZO 库。如果需要该依赖,编译时通过修改配置引入依赖。
下载地址在这里:
0.13.0版本的功能特性就介绍到这里,您可以通过点击原文、或从Doris官网下载0.13.0版本。
同时,因为Doris项目处于快速迭代中,很多迭代功能和bug修复无法及时地体现在Apache官方版本中,因此百度在github上维护了一个镜像库用于发布3位快速迭代版本。
3位快速迭代版本主要用于bug修复,建议生产环境使用。
https://github.com/baidu-doris/incubator-doris
百度数据仓库Palo
基于 Apache Doris 的企业级数据仓库托管服务
全新UI支持,更有新用户0元试用3个月优惠活动
登陆百度智能云官网搜索Palo,马上试用!
📣百度 Palo/Doris 团队,诚邀对开源软件、分布式数据库感兴趣的小伙伴们
我们虚位以待!
简历发送至:yiguolei@baidu.com
欢迎扫码关注:
Apache Doris(incubating)官方公众号
相关链接:
Apache Doris官方网站:
http://doris.incubator.apache.org
Apache Doris Github:
https://github.com/apache/incubator-doris
Apache Doris 开发者邮件组:
dev@doris.apache.org
本文分享自微信公众号 - ApacheDoris(gh_80d448709a68)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。