关于数据库:版本通告|Apache-Doris-11-Release-版本正式发布

50次阅读

共计 6209 个字符,预计需要花费 16 分钟才能阅读完成。

以下内容源自 Apache Doris 官网(https://doris.apache.org/),复制到浏览器关上。

敬爱的社区小伙伴们,咱们很快乐地发表,Apache Doris 在 2022 年 7 月 14 日迎来 1.1 Release 版本的正式公布!这是 Apache Doris 正式从 Apache 孵化器毕业后并成为 Apache 顶级我的项目后公布的第一个 Release 版本。

在 1.1 版本中,有 90 位 Contributor 为 Apache Doris 提交了超过 450 项优化和修复,感激每一个让 Apache Doris 变得更好的你!

在 1.1 版本中,咱们实现了计算层和存储层的全面向量化、正式将向量化执行引擎作为稳固性能进行全面启用,所有查问默认通过向量化执行引擎来执行,性能较之前版本有 3-5 倍的微小晋升。

在 1.1 版本中,减少了间接拜访 Apache Iceberg 内部表的能力,反对对 Doris 和 Iceberg 中的数据进行联邦查问,扩大了 Apache Doris 在数据湖上的剖析能力;在原有的 LZ4 根底上减少了 ZSTD 压缩算法,进一步晋升了数据压缩率;修复了诸多之前版本存在的性能与稳定性问题,使零碎稳定性失去大幅晋升。

欢送大家下载应用!

代码仓库:

https://github.com/apache/inc…

下载地址:

https://doris.apache.org/down…

源码地址:

https://github.com/apache/dor…

降级阐明

向量化执行引擎默认开启

在 Apache Doris 1.0 版本中,咱们引入了向量化执行引擎作为试验性功能。用户须要在执行 SQL 查问手工开启,通过 set batch_size = 4096 和 set enable_vectorized_engine = true 配置 session 变量来开启向量化执行引擎。

在 1.1 版本中,咱们 正式将向量化执行引擎作为稳固性能进行了全面启用 ,session 变量enable_vectorized_engine 默认设置为 true,无需用户手工开启,所有查问默认通过向量化执行引擎来执行。

BE 二进制文件更名

BE 二进制文件从原有的 palo_be 更名为 doris_be,如果您以前依赖过程名称进行集群治理和其余操作,请留神批改相干脚本。

Segment 存储格局降级

Apache Doris 晚期版本的存储格局为 Segment V1,在 0.12 版本中咱们实现了新的存储格局 Segment V2,引入了 Bitmap 索引、内存表、Page Cache、字典压缩以及提早物化等诸多个性。从 0.13 版本开始,新建表的默认存储格局为 Segment V2,与此同时也保留了对 Segment V1 格局的兼容。

为了保障代码构造的可维护性、升高冗余历史代码带来的额定学习及开发成本,咱们决定从 下一个版本起不再反对 Segment v1 存储格局,预计在 Apache Doris 1.2 版本中将删除这部分代码,还请所有仍在应用 Segment V1 存储格局的用户务必在 1.1 版本中实现数据格式的转换。

操作手册请参考:

https://doris.apache.org/zh-C…

失常降级

依照官网上的 集群降级文档 进行滚动降级,可参考:

https://doris.apache.org/zh-C…

重要性能

反对数据随机散布 [试验性功能]

Issue/PR:#8259 #8041

在某些场景中(例如日志剖析类场景),用户可能无奈找到一个适合的分桶键来防止数据歪斜,因而须要由零碎提供额定的散布形式来解决数据歪斜的问题。

因而通过在建表时能够不指定具体分桶键,抉择应用随机散布对数据进行分桶 DISTRIBUTED BY random BUCKET number,数据导入时将会随机写入单个 Tablet,以 缩小加载过程中的数据扇出,并缩小资源开销、晋升零碎稳定性。

反对创立 Iceberg 内部表 [试验性功能]

Issue/PR:#7391 #7981 #8179

Iceberg 内部表为 Apache Doris 提供了间接拜访存储在 Iceberg 数据的能力。通过 Iceberg 内部表能够实现对本地存储和 Iceberg 存储的数据进行联邦查问,省去繁琐的数据加载工作、简化数据分析的零碎架构,并进行更简单的剖析操作。

在 1.1 版本中,Apache Doris 反对了创立 Iceberg 内部表并查问数据,并反对通过 REFRESH 命令实现 Iceberg 数据库中所有表 Schema 的主动同步。

减少 ZSTD 压缩算法

Issue/PR:#8923 #9747

目前 Apache Doris 中数据压缩办法是零碎对立指定的,默认为 LZ4。针对局部对数据存储老本敏感的场景,例如日志类场景,原有的数据压缩率需要无奈失去满足。

在 1.1 版本中,用户建表时能够在表属性中设置 "compression"="zstd" 将压缩办法指定为 ZSTD。在 25GB 1.1 亿行的文本日志测试数据中,最高取得了近 10 倍的压缩率、较原有压缩率晋升了 53%,从磁盘读取数据并进行解压缩的速度晋升了 30%

性能优化

更全面的向量化反对

在 1.1 版本中,咱们实现了 计算层和存储层的全面向量化,包含:

  • 实现了所有内置函数的向量化。
  • 存储层实现向量化,并反对了低基数字符串列的字典优化。
  • 优化并解决了向量化引擎的大量性能和稳定性问题。

咱们对 Apache Doris 1.1 版本与 0.15 版本别离在 SSB 和 TPC-H 规范测试数据集上进行了性能测试

  • 在 SSB 测试数据集的全副 13 个 SQL 上,1.1 版本均优于 0.15 版本,整体性能约晋升了 3 倍,解决了 1.0 版本中存在的局部场景性能劣化问题;
  • 在 TPC-H 测试数据集的全副 22 个 SQL 上,1.1 版本均优于 0.15 版本,整体性能约晋升了 4.5 倍,局部场景性能达到了 10 余倍 的晋升;

图 1 SSB 测试数据集

图 2 TPC-H 测试数据集

性能测试报告:

  • https://doris.apache.org/zh-C…
  • https://doris.apache.org/zh-C…

Compaction 逻辑优化与实时性保障

Issue/PR:#10153

在 Apache Doris 中每次 Commit 都会产生一个数据版本,在高并发写入场景下,容易呈现因数据版本过多且 Compaction 不及时而导致的 -235 谬误,同时查问性能也会随之降落。

在 1.1 版本中咱们引入了 QuickCompaction,减少了被动触发式的 Compaction 查看,在数据版本减少的时候被动触发 Compaction,同时通过晋升分片元信息扫描的能力,疾速发现数据版本过多的分片并触发 Compaction。通过主动式触发加被动式扫描的形式,彻底解决数据合并的实时性问题。

同时,针对高频的小文件 Cumulative Compaction,实现了 Compaction 工作的调度隔离,避免重量级的 Base Compaction 对新增数据的合并造成影响。

最初,针对小文件合并,优化了小文件合并的策略,采纳梯度合并的形式,每次参加合并的文件都属于同一个数据量级,避免大小差异很大的版本进行合并,逐步有档次的合并,缩小单个文件参加合并的次数,可能大幅地节俭零碎的 CPU 耗费。

在数据上游维持每秒 10w 的写入频率时(20 个并发写入工作、每个作业 5000 行、Checkpoint 距离 1s),1.1 版本体现如下:

  • 数据疾速合并:Tablet 数据版本维持在 50 以下,Compaction Score 稳固。相较于之前版本高并发写入时频繁呈现的 -235 问题,Compaction 合并效率有 10 倍以上的晋升。
  • CPU 资源耗费显著升高 针对小文件 Compaction 进行了策略优化,在上述高并发写入场景下,CPU 资源耗费 升高 25%
  • 查问耗时稳固:晋升了数据整体有序性,大幅升高查问耗时的波动性,高并发写入时的查问耗时与仅查问时持平,查问性能较之前版本有 3-4 倍晋升。

Parquet 和 ORC 文件的读取效率优化

Issue/PR:\#9472

通过调整 Arrow 参数,利用 Arrow 的多线程读取能力来减速 Arrow 对每个 row_group 的读取,并批改成 SPSC 模型,通过预取来升高期待网络的代价。优化前后对 Parquet 文件导入的性能有 4~5 倍 的晋升。

更平安的元数据 Checkpoint

Issue/PR:#9180 #9192

通过对元数据检查点后生成的 image 文件进行双重检查和保留历史 image 文件的性能,解决了 image 文件谬误导致的元数据损坏问题。

BUG 修复

修复因为短少数据版本而无奈查问数据的问题

Issue/PR[重大]:#9267 #9266

问题形容:failed to initialize storage reader. tablet=924991.xxxx, res=-214, backend=xxxx

该问题是在版本 1.0 中引入的,可能会导致多个正本的数据版本失落。

解决了资源隔离对加载工作的资源应用限度有效的问题

Issue/PR[中等]:#9492

在 1.1 版本中,Broker Load 和 Routine Load 将应用具备指定资源标记的 BE 节点进行加载。

修复应用 HTTP BRPC 超过 2GB 传输网络数据包导致数据传输谬误的问题

Issue/PR[中等]:#9770

在以前的版本中,当通过 BRPC 在后端之间传输的数据超过 2GB 时,可能会导致数据传输谬误。

其余

禁用 Mini Load

Mini Load 与 Stream Load 的导入实现形式完全一致,都是通过 HTTP 协定提交和传输数据,在导入性能反对上 Stream Load 更加齐备。

在 1.1 版本中,默认状况下 Mini Load 接口 /_load 将处于禁用状态,请 对立应用 Stream Load 来替换 Mini Load。您也能够通过敞开 FE 配置项 disable_mini_load 来从新启用 Mini Load 接口。在版本 1.2 中,将彻底删除 Mini Load。

齐全禁用 SegmentV1 存储格局

在 1.1 版本中将不再容许新创建 SegmentV1 存储格局的数据,现有数据仍能够持续失常拜访。

您能够应用 ADMIN SHOW TABLET STORAGE FORMAT 语句查看集群中是否依然存在 SegmentV1 格局的数据,如果存在 请务必通过数据转换命令转换为 SegmentV2。

在 Apache Doris 1.2 版本中不再反对对 Segment V1 数据的拜访,同时 Segment V1 代码将被彻底删除。

限度 String 类型的最大长度

Issue/PR:#8567

String 类型是 Apache Doris 在 0.15 版本中引入的新数据类型,在过来 String 类型的最大长度容许为 2GB。

在 1.1 版本中,咱们将 String 类型的最大长度限度为 1 MB,超过此长度的字符串无奈再写入,同时不再反对将 String 类型用作表的 Key 列、分区列以及分桶列。已写入的字符串类型能够失常拜访。

修复 fastjson 相干破绽

Issue/PR:#9763

对 Canal 版本进行更新以修复 fastjson 安全漏洞

增加了 ADMIN DIAGNOSE TABLET 命令

Issue/PR:#8839

通过 ADMIN DIAGNOSE TABLET tablet_id 命令能够疾速诊断指定 Tablet 的问题。

下载应用

下载链接

http://doris.apache.org/zh-CN…

降级阐明

您能够从 Apache Doris 1.0 Release 版本和 1.0.x 发行版本升级到 1.1 Release 版本,降级过程请官网参考文档。如果您以后是 0.15 Release 版本或 0.15.x 发行版本,可跳过 1.0 版本间接降级至 1.1。

降级文档:

http://doris.apache.org/zh-CN…

更新日志

具体 Release Note 请查看链接:

https://github.com/apache/dor…

意见反馈

如果您遇到任何应用上的问题,欢送随时通过 GitHub Discussion 论坛或者 Dev 邮件组与咱们取得联系。

GitHub 论坛:

https://github.com/apache/inc…

Dev 邮件组:

dev@doris.apache.org

致谢

Apache Doris 1.1 Release 版本的公布离不开所有社区用户的反对,在此 向所有参加版本设计、开发、测试、探讨的社区贡献者们表示感谢,他们别离是:

贡献者名单

@adonis0147

@airborne12

@amosbird

@aopangzi

@arthuryangcs

@awakeljw

@BePPPower

@BiteTheDDDDt

@bridgeDream

@caiconghui

@cambyzju

@ccoffline

@chenlinzhong

@daikon12

@DarvenDuan

@dataalive

@dataroaring

@deardeng

@Doris-Extras

@emerkfu

@EmmyMiao87

@englefly

@Gabriel39

@GoGoWen

@gtchaos

@HappenLee

@hello-stephen

@Henry2SS

@hewei-nju

@hf200012

@jacktengg

@jackwener

@Jibing-Li

@JNSimba

@kangshisen

@Kikyou1997

@kylinmac

@Lchangliang

@leo65535

@liaoxin01

@liutang123

@lovingfeel

@luozenglin

@luwei16

@luzhijing

@mklzl

@morningman

@morrySnow

@nextdreamblue

@Nivane

@pengxiangyu

@qidaye

@qzsee

@SaintBacchus

@SleepyBear96

@smallhibiscus

@spaces-X

@stalary

@starocean999

@steadyBoy

@SWJTU-ZhangLei

@Tanya-W

@tarepanda1024

@tianhui5

@Userwhite

@wangbo

@wangyf0555

@weizuo93

@whutpencil

@wsjz

@wunan1210

@xiaokang

@xinyiZzz

@xlwh

@xy720

@yangzhg

@Yankee24

@yiguolei

@yinzhijian

@yixiutt

@zbtzbtzbt

@zenoyang

@zhangstar333

@zhangyifan27

@zhannngchen

@zhengshengjun

@zhengshiJ

@zingdle

@zuochunwei

@zy-kkk

SelectDB 是一家开源技术公司,致力于为 Apache Doris 社区提供一个由全职工程师、产品经理和反对工程师组成的团队,凋敝开源社区生态,打造实时剖析型数据库畛域的国内工业界规范。基于 Apache Doris 研发的新一代云原生实时数仓 SelectDB,运行于多家云上,为用户和客户提供开箱即用的能力。

相干链接:

SelectDB 官方网站:

https://selectdb.com

Apache Doris 官方网站:

http://doris.apache.org

Apache Doris Github:

https://github.com/apache/doris

Apache Doris 开发者邮件组:

dev@doris.apache.org

正文完
 0