前言 Preface
为何写作本书
在参与了Apache Doris与Yandex ClickHouse的项目实践后,我深刻认识到了Doris极简架构的优点。相较于ClickHouse,Doris有以下几方面优势。
❑Doris依赖FE节点管理元数据,可用性高,不依赖外部组件;ClickHouse依赖ZooKeeper管理元数据,容易出现数据不同步的情况。
❑Doris按照“Bucket+副本”来分布数据,灵活度更高;ClickHouse只支持全节点分布数据或者每个节点分布一份数据,灵活度不高。
❑在多表关联上,ClickHouse仅完整支持Broadcast Join、Colocate Join,并未实现完整意义上的Shuffle Join;Doris支持Shuffle Join和Bucket Shuffle Join,可以满足更多的Join场景需求。
❑ClickHouse的函数、字段类型、字段名严格区分大小写,为开发增加了难度;Doris语法完全兼容MySQL,对大小写不敏感,开发简单。
❑ClickHouse集群分布式表的创建和删除都需要分别操作本地表和分布式表引擎,比较麻烦;Doris默认创建分布式表,建表过程和MySQL的建表过程一致,只是建表语句多一些分布式参数。
❑ClickHouse物理表中数据的删除和更新是异步执行的,命令执行完以后数据的清理时间不确定,对开发人员非常不友好;Doris支持按照Key字段删除和更新数据,执行完SQL命令后数据即时更新。
目前,Apache Doris已经进入开源的第六年,并于2022年6月成功从Apache孵化器“毕业”,成为Apache顶级项目。据公开资料显示,Apache Doris在美团、小米、京东、百度、网易、字节跳动、快手、腾讯、华为、新浪、知乎、360等大型互联网企业有深入的应用和稳定的生产运行,全球范围内的企业用户规模已超过1000家。
同时,飞轮数据科技(SelectDB)提供了基于开源Doris的云原生实时数据仓库SelectDB Cloud,百度智能云、腾讯云、阿里云、火山引擎等知名云厂商也提供了基于开源Doris的云上托管服务。无论私有化部署,还是云化服务,Apache Doris吸引了越来越多的用户和开发者的关注。
但是截至目前,Apache Doris的学习资料主要依靠社区的技术分享和官方文档(https://doris.apache.org),很少有系统化介绍Doris使用的书籍。作为Doris的早期用户和企业数据仓库架构师,我觉得我有义务为Doris的推广做出一点贡献。所以,我结合数据仓库开发和系统运维过程中积累的一些实战经验,编辑成书,分享给各位读者。与此同时,我也希望将这款优秀的开源软件介绍给更多的朋友,相信Doris一定可以给更多的企业带来价值,帮助企业在数字化转型之路上走得更轻松。
本书主要内容
这是一本全方位介绍Doris数据库的技术书,主要内容分为四部分。
第一部分 基础(第1~4章):介绍Doris数据库的入门知识,以及编译、安装、建表等基础操作。
第二部分 进阶(第5~7章):包括数据导入、数据查询和查询优化,内容层层递进。
第三部分 拓展(第8~10章):结合目前流行的Flink框架和各种常用外部表,拓展Doris的应用场景。
第四部分 实战(第11~14章):从具体应用角度介绍了离线数据仓库和实时数据仓库搭建的痛点和难点,结合Doris实现离线数据仓库和实时数据仓库搭建项目。
读者对象
本书适合以下读者阅读。
❑大数据架构师。
❑数据仓库工程师。
❑数据平台研发工程师。
❑计算机专业的高校学生。
内容特色
本书全面、翔实地介绍了Doris数据库架构设计、安装、常用操作和运维管理,并结合数据仓库的应用场景分享了两个项目实战,帮助读者更好地使用Doris。本书的特点在于实战性强,并配有丰富的案例和图片,能帮助读者更好地理解Doris原理和应用Doris数据库进行开发。
资源和勘误
由于水平有限,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。为此,我特意创建了一个提供在线支持与应急方案的站点,网址为https://gitee.com/SQLWang/doris-book。你可以将书中的错误发布在Bug勘误表中,也可以将遇到的任何问题发布在Q&A页面,我将尽量在线上提供令你满意的解答。如果你有更多宝贵意见,也欢迎发送邮件至524427858@qq.com。期待得到你的真挚反馈。同时,你也可以关注我的微信公众号“数据中台研习社”(BigData_Club),我会在这里定期分享Doris和数据仓库开发的最新资讯、技术总结、使用经验等。
致谢
首先,感谢Doris社区的小伙伴,是陈明雨、鲁志敬、张家锋、缪翎、李昊鹏、赵纯等技术功底深厚的开发者一场一场的关于Doris的分享和普及,让我能够快速入门和掌握Doris数据库的使用要领。为了让本书的内容更有深度,在编写过程中,我多次重复学习他们分享的课程,例如鲁志敬的“百度数据仓库Palo技术特性解读与实践应用”、陈明雨的“建表语句的执行过程”、缪翎的“查询优化器讲解”和“一条SQL的执行过程”、李昊鹏的“Doris向量化的设计与实现”等。
其次,感谢我的领导杨宏武和我的家人,是他们的鼓励和支持,促使我坚持完成了本书。
最后,希望Doris生态圈发展得越来越好,代表国产开源软件发挥世界级的影响力。