ClickHouse性能之巅:从架构设计解读性能之谜
上QQ阅读APP看书,第一时间看更新

Foreword序1

陈峰是我主讲的“程序设计基础”课程的学生。2021年12月,他在电话中告诉我要写一本关于ClickHouse的技术书。当时我既替他高兴,又有些许担心。高兴的是我作为陈峰的老师和朋友,从心底里希望他在参加工作后能够坚持好的学习习惯,孜孜不倦;担心的是他能否从理论、技术、方法等诸多方面驾驭这样一本技术书。

阅读本书的样章之后,我的担心消失了,萦绕在心头的是喜悦。本书不仅对ClickHouse技术进行了全面陈述,还围绕数仓的逻辑架构、底层物理实现、应用场景等分析了ClickHouse的性能优势和问题,为ClickHouse数仓产品的设计者、开发者和使用者揭下技术名词的伪装,帮助他们拨开技术迷雾并认清ClickHouse的能力范畴。

我一直希望从软件架构的角度去介绍程序设计的基本概念,这是我从学生时代学习程序设计时总结的经验。我始终认为,构筑一个大型软件程序的最大难点在于理解程序软件架构运行机理,从而控制程序设计的复杂性。如果不理解程序的逻辑架构、底层物理实现,就无法在软件技术这条路上走很远。

这样的教学执念来源于我的母亲,在我的记忆里,她在教“金属材料”这门课程时,会用一些塑料球和塑料棒代表原子和原子间的化学键,将它们构成金属微观粒子结构来说明各种金属材料的特性。这种模型让我记忆深刻,在计算机界,相比于数学符号,我更喜欢直观的模型表达。当模型盘旋于你的脑海中时,你可以很快搭建属于自己的程序世界。在这本书里,我看到陈峰也是通过构建一个直观的模型来讲解ClickHouse。这样的内容读起来轻松,并且非常容易理解。

陈峰在校期间参与了我所主导的大部分项目,这些项目有纯工程性的,也有技术探索性的,他在这些项目中表现出了超出一般学生的控制大型复杂软件系统的能力。那时的陈峰显然是学生中的技术领头人,我的一些想法总能被他以技术的方式有效落地。陈峰一直保持着对技术惊人的热爱,工作多年仍然不知倦怠。正是因为对他的了解,使我在看到这本书的时候,能够体会到他为本书付出的心血。

我认为本书的出版是很有意义的,它不仅为像陈峰这样年轻的技术工作者提供了一个表达的机会,也为广大的工程师能够快速获取ClickHouse的使用经验,提高创新效率,提供了宝贵的资料。我听说,本书的策划编辑杨福川在知乎上看到了陈峰发表的有关ClickHouse的技术帖,于是邀约陈峰撰写了本书。在此,我要特别感谢杨福川先生,是他让这本书破“土”而出。

希望这本书能够鼓励更多的年轻人投身于为祖国解决“卡脖子”技术问题的系统软件开发中。事实证明,即使拿到了像ClickHouse这样的开源代码,如果没有深入探索这类系统软件开发的精神,那么解决问题仍然任重而道远。

祝贺陈峰圆满完成写作。相信本书能够得到读者的认可。

胡昊

南京大学计算机科学与技术系副教授