采访嘉宾 | 陈星、翟鹿渊
作者 | 蔡芳芳、王一鹏
热闹纷繁的 OLAP 赛道,又迎来一个开源新玩家 。
这几年 OLAP 赛道持续火热,国内外不少开源项目和商业公司活跃其中 。在一众玩家中,ClickHouse 凭借彪悍的性能表现、活跃的开源社区和相当快的迭代速度,市场普及率一路狂飙 。
围绕 ClickHouse,最近有两则新闻颇引人关注 :一个是阿里云官宣与 ClickHouse 商业公司合作,成为 ClickHouse 在中国独家的云服务提供商;另一个则是字节跳动 ByteHouse 与亚马逊云科技合作推出新一代云数仓服务 。两种不同的组合,背后其实是国内外市场对 ClickHouse 云原生化产品和应用的浓厚兴趣 。
作为国内极具代表性的 ClickHouse 大规模采用者,字节跳动在历经数年的 ClickHouse 云原生化改造和应用中沉淀了许多宝贵的实践经验和思考 。2021 年 8 月,字节跳动将经过多年定制化改造的 ClickHouse,沉淀为 ByteHouse 对外提供服务。自那时起,就有人猜测:ByteHouse 会不会开源?
其实字节跳动为开源准备已久 。今年,字节跳动将 ByteHouse 内核向社区开源为 ByConity,并于近日正式官宣发布 0.1.0 版本 。
ByConity 定位为开源的云原生数据仓库,采用 Apache 2.0 许可协议,基于 ClickHouse 内核,但采用了存储计算分离的全新架构,支持多个关键功能特性,如存储计算分离、弹性扩缩容、租户资源隔离和数据读写的强一致性等 。通过利用主流的 OLAP 引擎优化,如列存储、向量化执行、MPP 执行、查询优化等,ByConity 可以提供优异的读写性能 。ByConity 适合用于 Online Analytical Processing(OLAP)场景和轻载数仓场景,包括但不限于交互式分析、实时日志监控、流数据处理和分析等 。
ByConity 项目 Github 地址:
https://github.com/ByConity
用户手册:
https://byconity.github.io/zh-cn/docs/introduction/background-and-technical-architecture
借此机会,InfoQ 独家采访了 ByConity 背后的技术团队,深入了解 ByConity 开源准备过程、架构亮点、ByConity 与 ClickHouse 的差异,以及 ByConity 后续规划等问题 。这也是 ByConity 开源后团队首次接受采访 。
开源准备
![字节跳动开源ByConity:基于ClickHouse的存算分离架构云原生数仓](http://img.jiangsulong.com/230523/1J115KC-0.jpg)
文章插图
为了和早些推出的商业品牌作区分、避免用户混淆,团队为开源版本取了新名字 ByConity 。新名字由三个英文单词组合再生而来:
- By 来自 Byte,代表存储数据的基本单位,也比喻海量数据;
- Con 来自 Convert,代表改变和革新;
- Conity 也来自 Community,代表一群人,也就是开源开发者社区 。
在决定开源之前,团队也考虑过是否能将自研修改合并回 ClickHouse 社区,并围绕向社区完整贡献和联合开发,与 ClickHouse 核心研发团队、ClickHouse 创业公司负责人做了几次闭门沟通,但得到的反馈是架构差异过大、合并难度和代价大、无法联合开发 。最终按照 ClickHouse 社区给到的建议,团队决定独立开源,并跟 ClickHouse 社区进行了消息同步 。
2022 年 5 月,团队启动 ByConity 开源相关研发和准备工作 。到正式开源这期间,技术层面关键迭代主要有以下几点:
- 升级 ByConity Codebase,和社区 ClickHouse 21.8 版本代码做同步,因为最初字节跳动引入 ClickHouse 的时候用的还是早期版本,但 ClickHouse 社区在版本 19 到 22 之间做了比较大的重构,导致整个执行 model 发生了一些变化,这部分需要做不少代码重写工作,将整个代码基线提升到社区新的 LTS 版本;
- 移除公司内部依赖组件,寻找对应的开源替代方案做兼容和适配,比如 FoudationDB 适配、ClickHouse-Keeper 适配等;
- 基于 Processor Model 重构 MPP 实现,提升性能与稳定性:主要解决了 ClickHouse 对于复杂 Query 的执行支持不好,功能也比较局限(Join 只支持 broadcast join)等问题;适配 ClickHouse 新版本基于 Processor Push Mode 的执行模式;
- 优化器迭代,重点迭代了优化规则(RBO),CBO 方面重点增强统计信息自动收集等:比如当用户表有改动时,后台任务会检查统计信息表的修改行数,当达到一定阈值时触发自动收集;
推荐阅读
- 最小响应式UI框架 VanJS 开源,仅 Preact 体积1/10!
- 几行代码安装,做图无上限:Stability AI公布DreamStudio开源版本
- 开源即时通讯IM框架MobileIMSDK的Uniapp端开发快速入门
- 秒杀自动编码Copilot!「动嘴编程」神器StarChat开源,码农狂喜
- 使用开源 Python API 封装器与你的集群对话
- 几个基于CDC实时同步数据的开源组件,让你的数据同步更实时
- 七个使你的 Drupal 网站无障碍访问的开源模块
- 几个玩转2D/3D渲染的开源JS库,助你快速实现各种2D/3D动画特效
- Stable Diffusion背后团队发布开源大语言模型 可用于本地部署
- 抖音前端UI框架开源了,亮瞎我的钛合金!