当前位置: 首页 >  法制聚焦  >   >  正文

今日视点:ClickHouse和他的朋友们(5)存储引擎技术进化与MergeTree [ 虎哥的博客 ]

  • 2023-07-02 09:53:03 来源:个人图书馆-路途0jx67cp2fl

21 世纪的第二个 10 年,虎哥已经在存储引擎一线奋战近 10 年,由于强大的兴趣驱动,这么多年来几乎不放过 arXiv 上与存储相关的每一篇 paper。尤其是看到带有 draft 的 paper 时,有一种乞丐听到“叮当”响时的愉悦。看paper这玩意就像鉴宝,多数是“赝品”,需要你有“鉴真”的本领,否则今天是张三的算法超越xx,明儿又是王二的硬件提升了yy,让你永远跟不上节奏zz,湮灭在这些没有营养的技术垃圾中,浪费大好青春。


(相关资料图)

言归正传,接下来的3篇,跟 ClickHouse 的 MergeTree 引擎有关:上篇介绍存储引擎的技术演进史,从”远古”的 B-tree 出发推演到目前主流的技术架构。中篇会从存储结构介绍 MergeTree 原理,对 ClickHouse MergeTree 有一个深入的认识,如何合理设计来进行科学加速。下篇会从MergeTree代码出发,看看 ClickHouse MergeTree 如何实现读、写。

本文为上篇,先来个热身,相信本篇大部分内容对大家来说都比较陌生,很少人写过。

地位

存储引擎(事务型)在一个数据库(DBMS)中的地位如何呢?

MySQL 的商业成功可以说大部分来自于 InnoDB 引擎,Oracle 收购 InnoDB 比 MySQL 早好几年呢!20年前,能亲手撸一套 ARIES (Algorithms for Recovery and Isolation Exploiting Semantics) 规范引擎,实力还是相当震撼的,相信 Oracle 收购的不仅是 InnoDB 这个引擎,更重要的是人, InnoDB 作者在哪里,在干什么?!Fork 出来的 MariaDB 这么多年一直找不到自己的灵魂,在 Server 层磨磨蹭蹭可谓是江河日下,只能四处收购碰碰运气,当年 TokuDB 战斗过的 commit 依在,但这些已经是历史了。另,WiredTiger 被 MongoDB 收购并使用,对整个生态所起的作用也是无可估量的,这些发动机引擎对于一辆汽车是非常重要的。

有人问道,都已经 2020 年了,开发一个存储引擎还这么难吗?不难,但是造出来的未必有 RocksDB 好用?!如大家所见,很多的分布式存储引擎都是基于 RocksDB 研发,可谓短期内还算明智的选择。从工程角度来看,一个 ACID 引擎要打磨的东西非常之多,到处充斥着人力、钱力、耐心的消耗,一种可能是写到一半就停滞了(如 nessDB),还有一种可能是写着写着发现跟xx很像,沃茨法克。当然,这里并不是鼓励大家都去基于 RocksDB 去构建自己的产品,而是要根据自己的情况去做选择。

B-tree

首先要尊称一声大爷,这个大爷年方 50,目前支撑着数据库产业的半壁江山。

50 年来不变而且人们还没有改变它的意向,这个大爷厉害的很!鉴定一个算法的优劣,有一个学派叫 IO复杂度分析,简单推演真假便知。下面就用此法分析下 B-tree(traditional b-tree) 的 IO 复杂度,对读、写 IO 一目了然,真正明白读为什么快,写为什么慢,如何优化。为了可以愉快的阅读,本文不会做任何公式推导,复杂度分析怎么可能没有公式呢!

读IO分析

这里有一个 3-level 的 B-tree,每个方块代表一个 page,数字代表 page ID。

上图 B-tree 结构是内存的一个表现形式,如果我们要读取的记录在 leaf-8上,read-path 如蓝色箭头所示:root-9 –> branch-6 –> leaf-8

下图是 B-tree 在磁盘上的存储形式,meta page 是起点:

这样读取的随机 IO (假设内存里没有 page 缓存且 page 存储是随机的)总数就是(蓝色箭头):

1(meta-10)IO 1(root-9)IO 1(branch-6)IO 1(leaf-8)IO = 4次 IO,这里忽略一直缓存的 meta 和 root,就是 2 次随机 IO。如果磁盘 seek 是 1ms,读取延迟就是 2ms。

通过推演就会发现,B-tree 是一种读优化(Read-Optimized)的数据结构,无论 LSM-tree 还是 Fractal-tree 等在读上只能比它慢,因为读放大(Read Amplification)问题。存储引擎算法可谓日新月异,但是大部分都是在跟写优化(Write-Optimized)做斗争,那怕是一个常数项的优化那就是突破,自从 Fractal-tree 突破后再无来者了!

写IO分析

现在写一条记录到 leaf-8。

可以发现,每次写都需要先读取一遍,如上图蓝色路径所示。

假设这次写入导致 root, branch 都发生了变化,这种 in-place 的更新反映到磁盘上就是:

基本是 2 次读 IO和写 2 次写 IO WAL fsync,粗略为 4 次随机 IO。通过分析发现,B-tree 对写操作不太友好,随机 IO 次数较多,而且 in-place 更新必须增加一个 page 级的 WAL 保证失败回滚,简直是要命。

Write-Optimized B-tree

说到写优化,在机械盘的年代,大家的方向基本是把随机 IO 转换为顺序 IO,充分发挥磁盘的机械优势,于是出现一种 Append-only B-tree:

更新生成新的 page(蓝色)page 回写磁盘时 append only 到文件末尾无需 page WAL,数据不 overwrite,有写放大(Write Amplification)问题,需要做空洞重利用机制

Append-only B-tree 节省了回写时的 2 次随机 IO,转换为常数级(constant)的1次顺序 IO,写性能大幅提升,总结起来就是:随机变顺序,空间换时间LSM-tree, Fractal-tree 等写优化算法的核心思想也是这个,只不过其实现机制不同。

LSM-trees

随着 LevelDB 的问世,LSM-tree 逐渐被大家所熟知。LSM-tree 更像一种思想,模糊了 B-tree 里 tree 的严肃性,通过文件组织成一个更加松散的 tree。这里不谈一个具体的 LSM-tree 是 Leveled 还是 Size-tiered,只谈大体思想。

写入

先写入内存的 C0

后台线程根据规则(Leveled/Sized)进行 merge,C0 –> C1, C1 –> C2 … CL

写入 C0 即可返回,IO 放到后台的 Merge 过程

每次 Merge 是硬伤,动作大就抖,动作小性能不好,每次 Merge 的数据流向不明确

写放大问题

读取读取 C0读取 C1 .. CL合并记录返回读放大问题Fractal-tree

终于发展到了“终极”优化(目前最先进的索引算法),Fractal-tree。它是在 Append-only B-tree 的基础上,对每个 branch 节点增加了一个 message buffer 作为缓冲,可以看做是 LSM-tree 和 Append-only B-tree 完美合体。

相对于 LSM-tree 它的优势非常明显:Merge 更加有序,数据流向非常分明,消除了 Merge 的抖动问题,大家一直寻找的 compaction 防抖方案一直存在的!

这个高科技目前只有 TokuDB 在使用,这个算法可以开篇新介,这里不做累述,感兴趣的可以参考原型实现 nessDB。

Cache-oblivious

这个词对于大部分人都是陌生的,不过别怕。在存储引擎里,有一个数据结构非常非常重要,它负责 page 数据有序性维护,比如在一个 page 里怎么快速定位到我要的记录。在 LevelDB 里使用 skiplist,但大部分引擎使用的是一个有序数组来表示,比如 [1, 2, 3, … 100],然后使用二分查找。

大概 10 年前一位内核开发者发表了一篇 ,这个小文讲了一个很有意思的事情:数据的组织形式对性能有很大的影响,因为 CPU有 cache line。

抛开这篇文章不谈,咱们来看一张“神仙”图:

这是一个 binary-tree 的 4 种 layout 表示形式,那么哪种 layout 对 CPU cache line 最友好?

也许你已经猜对了,那就是 van Emde Boas,简称 vEB。因为它的相邻数据“扎堆”存储,point-query 和 range-query 的 cache line 可以最大化共享,skiplist 对 cache line 是非常不友好的,还可以更快!对于 cache oblivious 数据结构,这里有一个简单的原型实现: omt

B-tree优化魔力象限

写优化算法从原生的 B-tree 到 Append-only B-tree(代表作 LMDB),又到 LSM-tree(LevelDB/RocksDB 等),最后进化到目前最先进的 Fractal-tree (TokuDB)。这些算法耗费了很多年才在工程上实现并被认可,研发一款存储引擎缺的不是算法而是“鉴宝”的能力,这个“宝”可能已经躺了几十年了。

其实,”科学家”们已经总结出一个 B-tree 优化魔力象限:

横坐标是写性能,纵坐标是读性能,B-tree 和 Logging 数据结构分布在曲线的两个极端。B-tree 的读性能非常好,但是写性能差。Logging 的写性能非常好,但是读性能差(想想我们每次写都把数据追加到文件末尾,是不是很快?但是读…)。

在它们中间有一个优化曲度(Optimal Curve)。在这个曲度上,你可以通过增加/减少一个常数(1-epsilon)来做读和写优化组合,LSM-tree/Fractal-tree 都在这个曲度之上。

总结

本文主要讨论事务性引擎的技术演进,其中包含了 IO 复杂度分析,其实这个分析是基于一个 DAM(Disk Access Machine)模型,这里不再展开。这个模型要解决什么问题呢?如果工程中涉及硬件层级关系,比如 Disk / Memory / CPU,数据在Disk,读取(以 block 为单位)到 Memory,查找计算(cache-line)在 CPU,不同介质间性能差距又非常之大,我们怎么做才能让整体性能更优的问题。和当今的硬件相融合,这个模型也一样适用。

最后回到 ClickHouse 的 MergeTree 引擎,它只使用了本文中的部分优化,实现也比较简洁、高效,毕竟没有事务,撸起来也没啥心理负担。随机变顺序,空间换时间, MergeTree 原理,请听下回分解。

References

[1] Cache-Oblivious Data Structures[2] Data Structures and Algorithms for Big Databases[3] The buffer tree: A new technique for optimal I/O-algorithms[4] how the append-only btree works[5] 写优化的数据结构(1):AOF和b-tree之间[6] 写优化的数据结构(2):buffered tree[7] 存储引擎数据结构优化(1):cpu bound[8] 存储引擎数据结构优化(2):io bound[9] nessDB[10] omt

标签:

最新推荐

今日视点:ClickHouse和他的朋友们(5)存储引擎技术进化与MergeTree [ 虎哥的博客 ]

21 世纪的第二个 10 年,虎哥已经在存储引擎一线奋战近 10 年

暗黑破坏神4最新梦魇地下城重置方法攻略

今天微安卓小编整理了暗黑破坏神4最新梦魇地下城重置方法攻略分享给大

行政诉讼请律师有用吗 全球头条

行政诉讼请律师是有用的,但是在法律上并不强制要求,是否要聘请律师应

建筑专业包括哪些专业(建筑专业包括哪些) 今日热讯

建筑专业包括哪些专业,建筑专业包括哪些这个很多人还不知道,现在让我

天天观天下!因女儿考705分打折的凉菜摊关门:一家人压力太大,出远门了

6月25日,浙江高考成绩放榜。家住金华城北尖峰脚下的吴爸吴妈非常高兴

商务英语属于哪一类学科_商务英语属于什么学科门类

1、(包含外事英语,商务英语)商务英语是属于外语系的。2、(在不同学

环球新资讯:虎门公园里面有什么好玩的_虎门公园现在有什么好玩的

1、虎门公园是虎门镇最大的休闲公园。在虎门镇响应东莞创建“绿城”的

【世界独家】整体回升!合肥重磅发布

6月30日,合肥前5个月经济运行数据出炉。合肥市统计局发布的分析显示,

全球视点!弃用新生代是错误做法?马琳用人再次遭遇质疑,重用陈梦值得商榷

国乒女队在本次赛事并未派出任何主力参加,而是由00后球员钱天一担当头

天天亮点!CCTV5直播!中国女篮决战日本队争冠,韩旭发声,李梦强势表态

CCTV5直播!中国女篮决战日本队争冠,韩旭发声,李梦强势表态,周琦,亚

自然流产后几天可以洗头_产后几天可以洗头

1、产后7天可以洗头。产后因为你身体新陈代谢比较旺盛,皮肤分泌物比较

华北范围有哪些地方 华北黄淮高温范围将缩减 基本情况讲解-天天快报

1、华北范围有哪些地方2、华北黄淮高温范围将缩减3、以上就是关于【华

菲律宾欢呼雀跃,我方舰队悄然撤离,多艘拖船已离开仁爱礁海域 天天热点评

只是我国并没有如他们所想,反而是悄悄的撤离了仁爱礁,并未强制驱逐菲

厦门小学初中和中职今起放暑假 普通高中7月12日起放暑假

小学、初中和中职今起放暑假,持续至8月30日。普通高中7月11日学期结束

每日观点:新党员集中宣誓 庆祝中国共产党成立102周年

中组部最新数据显示,截至2022年底,中国共产党党员人数已达9804 1万名

选美、摔跤、剪羊毛 7月30日来四川美姑看首届非物质文化遗产节

封面新闻记者罗石芊7月1日,封面新闻记者从凉山州美姑县获悉,7月30日

每日快看:青藏铁路,进入动车时代!

来源:央视财经记者从中国铁路青藏集团有限公司获悉,7月1日起时速160

机构:上半年房企拿地大幅下降 央国企仍是重点城市拿地主力

证券时报e公司讯,中指研究院统计,2023年1-6月,TOP100企业拿地总额59

天天微头条丨醋的好处和坏处_醋的好处是什么

1、病情分析:1。2、有利于减肥:醋中含有丰富的氨基酸和有机酸,有利

迟日江山丽的全诗翻译 迟日江山丽的译文|世界速递

hello大家好,我是大学网网小航来为大家解答以上问题,迟日江山丽的全

环球今日报丨浩瀚深度(688292)6月30日主力资金净卖出277.38万元

截至2023年6月30日收盘浩瀚深度688292报收于287元下跌066换手率452成交

看热讯:过滤网上的黑网是什么_黑网是什么

1、银行黑户,指的是在人行征信系统中有严重信用污点,被银行列入黑名

淘宝每日一猜7.1答案最新 淘宝大赢家7月1日今天答案分享[多图] 全球实时

淘宝7月1日每日一猜答案是什么?今天的最新答题已经更新,大家需要了解

眼里长疱疹是怎么治疗_疱疹是怎么治疗

1、得了带状疱疹,1~3天后,发病部位的皮肤即出现绿豆粒大小、张力很

极氧001-Ichanger改色膜PET黑魅红,魅惑感十足|天天热消息

Ichanger(ICR)改变者极氧001|PET黑魅红 勇于创新|坚持品质

范虎_关于范虎的简介|每日速读

音频解说1、范虎,现任深圳市成者创想科技有限公司、大连成者科技有限

快递超期滞留什么意思 快递超期滞留啥意思_环球即时看

1、快递滞留件就是没有送出去的快件,因为某种关系导致快递员没有将快件

环球微速讯:中国吉他学会专业老师_中国吉他学会

1、没听过有中国吉他学会只听过有中国吉他协会 你可以了解一下他那个学

环球最资讯丨南宁两幅地块成功出让,凤岭北“小而精”地块竞买激烈

6月30日,南宁市举行2023年第三十五期、三十六期国有建设用地使用权公

今日观点!北京京剧院受捐京剧“第一科班”文献 多半剧目罕见舞台

京剧“第一科班”富连成社后人及传人6月30日向北京京剧院捐赠了《富连

商丘古城系列文化活动嗨翻炎炎夏季 环球新要闻

除了商丘古城广场文化演出季活动,睢阳区还从群众需求出发,创新文化活

当前消息!学渣是什么意思_科普学渣的意思

1、学渣,也叫学灰,是一个网络词汇。指的是那些平时不好好学习,到了

股票行情快报:财富趋势(688318)6月30日主力资金净买入2567.29万元-焦点短讯

截至2023年6月30日收盘,财富趋势(688318)报收于99 97元,上涨0 8%,换

河南郑州航空港区属于哪个区 郑州航空港区属于哪个区

1、郑州航空港经济综合实验区(郑州新郑综合保税区)航空港区搞保税区。2

中国什么时候使用的简体字(中国从什么时候开始使用简体字)

来为大家解答以下的问题,国什么时候使用的简体字,中国从什么时候开始

青海旅游攻略自由行最佳线路_到青海游玩必去的10个最美旅行地-当前视讯

hello大家好,我是城乡经济网小晟来为大家解答以上问题,青海旅游攻略

全球观察:基金经理跳槽历史新高 “公奔私”意外不香了

年内已有不少知名公募基金经理离职,比如孙伟、白冰洋、汤戈、陈金伟等

四环素牙如何美白牙齿_四环素牙怎么变白

1、四环素牙,是牙齿发育阶段,牙釉质遭受四环素药物影响而产生的不可

广西壮族自治区河池市2023-06-22 04:10发布暴雨橙色预警-世界最新

一、广西壮族自治区河池市天气预报1、南丹县气象台2023年6月22日4时08

全球关注:5月轿车销量投诉比排行榜:比亚迪经得起考验,埃安只有一个投诉

详解五月份的轿车销量投诉量对比排行榜,谁的未来更光明呢当今家用汽车

贝莱德:人工智能是股「巨大力量」 与一年前的元宇宙或虚拟现实不同

贝莱德:人工智能是股「巨大力量」与一年前的元宇宙或虚拟现实不同

美荷计划进一步限制半导体设备出口中国?外交部回应

据北京日报,6月30日,外交部发言人毛宁主持例行记者会。路透社记者提

夫家虚构700万债务逼女子净身出户,你会考虑签婚前协议吗?|天天最资讯

据检察日报6月29日消息,上海夫妇小李和小赵于5年前相爱结婚,由于小李

天天视讯!安徽通报济广高速六安段一起交通事故:小轿车追尾半挂车,致 4 人死亡

6月29日,安徽省应急管理厅通报G35济广高速六安段发生一起交通事故4人

北大方正人寿全面参与“7·8全国保险公众宣传日”活动 每日速读

保险业即将在7月8日迎来第十一个“7·8全国保险公众宣传日”。在中国保

统计局:中国6月官方制造业PMI为49% 比上月上升0.2个百分点 环球观天下

一中国制造业采购经理指数运行情况6月份制造业采购经理指数PMI为490比

“调查网”(大家说调查网)

来为大家解答以下的问题,调查网”,大家说调查网这个很多人还不知道,

方大集团分拆轨道门系统方大智源,产品单一,分红与补流相当

文:权衡财经iqhcj研究员钱芬芳编:许辉6月28日补充了2022年财报并更新

岳阳县发改局:全力优化营商环境 助力县域经济高质量发展

今年来,岳阳县发改局坚持“营商环境就是生产力”的理念,紧紧围绕县委

环球快看:郑州市区6所民办初中派位结束,未报满的7月3日开始补录

今天上午9点,2023年郑州市区民办初中电脑派位举行。今年,郑州市区报

X 广告
X 广告

精彩放送

复制网址在浏览器打开下载app进行注册哦_复制网址在浏览器打开 播资讯

百万医疗险站在转型十字路口 平价中高端医疗或成发展方向之一

全球关注:石家庄国际陆港中欧班列5年累计开行1161列

为什么要对银行业进行监管_为什么要对银行进行监管-全球热讯

【全球聚看点】丰田汽车5月全球销量超83万辆,同比增长10.1%

环球关注:小屏旗舰最后的荣光!华硕Zenfone 10图赏

苏州国税网上办税大厅(苏州国税网上开票)

详解上半年财政政策执行情况,下一步工作重点有哪些?|世界最资讯

聚焦夏季达沃斯论坛 论坛创始人:全世界都从中国发展中获益

慢性淋巴性甲状腺炎的症状及治疗_甲状腺炎的症状及治疗

超能世界时光精粹哪里获取怎么刷

潘松挺:传统的消费品领域仍有大量需求-世界视点

截至23:00收盘,国内期货主力合约涨多跌少-焦点资讯

疑似手球!武磊头球顶在王刚手臂上,马宁听过VAR后不判手球

每日热闻!三晋安全行|“无人作业的智慧化矿山更安全!”

【雄韬股份参评】维科杯·OFweek 2023年度储能行业卓越/优秀示范项目等奖项_环球视讯

微速讯:姜春煌在定西有关开班式上要求:真抓实干推进各项任务落实

峨眉山在哪里哪个省哪个市_峨眉山在哪

热点在线丨K11 ARTUS寓馆庆四周年-特别呈献月租礼遇

理工导航(688282):中国国际金融股份有限公司关于北京理工导航控制科技股份有限公司部分募集资金投资项目延期的核査意见

三安光电:获得政府补助

国家大剧院版经典民族歌剧《党的女儿》四度唱响 天天观点

胡锡进是炒股还是炒自己? 世界报资讯

13579质数有几个 13579

焦点热议:计算机排名大学_计算机排名

服务业务前景可期!Wedbush高喊苹果(AAPL.US)市值可达4万亿美元

焦点短讯!威士忌,酒企下一个竞争高地?

东南电子:公司微动开关不能用于减速器

焦点讯息:米游社设置默认角色的方法介绍

安图县首家农民专业合作社联合社成立

【环球快播报】Android 14新功能曝光:支持平板电脑和折叠屏手机切换任务栏模式

天天速讯:拳头老兵新工作室首款作品 小队PvP《洛基计划》首曝

变形机器人可在多种地空环境中移动

环球热头条丨三星紧追台积电,计划2025年在移动终端领域量产2纳米芯片

天天精选!切实解决经济恢复中宏观快、微观慢问题

热门:拾金不昧! 这两个孩子捡到手机第一时间交给民警

【天天快播报】哪些是夫妻的共同财产,哪些又不是夫妻共同财产呢 热讯

天天观天下!欧几里得望远镜将升空探测“暗黑”宇宙

天天快资讯丨法国首试高超声速飞行器 正式加入“高超俱乐部”

十余家公募基金下调产品费率-当前热点

焦点报道:有效发挥数字人民币职能

斗罗之开局签到女神小舞最新章节_斗罗之开局签到女神小舞

近年从切尔西转会阿森纳球员:切赫、路易斯、威廉、若鸟在列|天天播报

云南铜业(000878):6月28日北向资金减持27.75万股 实时焦点

qq怎么私发所有人_私发方法介绍

焦点快报!守株待兔的道理三年级 守株待兔的道理

今头条!宽体优雅造型+高质感内饰空间,长安启源A07官方美图正式发布

财政部会计财务评价中心:未与任何培训机构组织考试培训辅导

恒工精密(301261):首次公开发行股票并在创业板上市网上摇号中签结果

股票行情快报:中润光学(688307)6月28日主力资金净卖出84.36万元

Copyright ©  2015-2023 京津冀律师网版权所有  备案号:京ICP备2022022245号-12   联系邮箱:434 922 62 @qq.com