最近更新时间:2023.05.24 10:27:52
首次发布时间:2022.10.28 16:28:01
ByteHouse 是火山引擎基于开源 ClickHouse 进行了深度优化和改造的版本,提供海量数据上更强的查询服务和数据写入性能,应用包括海量数据多维分析、机器学习模型评估、微服务监控和统计等。
想理解 ByteHouse,要从 ClickHouse 社区版本说起。
ClickHouse 是 Yandex 开源的一款用于联机分析(OLAP)的列式数据库管理系统(DBMS)。它的核心特性有:
快如闪电的性能: ClickHouse 在设计表引擎时将提升查询性能作为最高优先级。因此,它比 Hadoop 生态以及其他数据库管理软件快上 100 倍。
基于 SQL,特性丰富: ClickHouse 支持相对标准的SQL语法(ClickHouse SQL),用户的熟悉成本很低。支持的查询包括 GROUP BY
,ORDER BY
,IN
,JOIN
以及非相关子查询。同时,ClickHouse 原生支持多种数据类型,多种表引擎,以及多种函数,让开发者可以开箱即用。
可扩展性与可靠性: ClickHouse采用了大规模并行处理(Massively Parallel Processing,MPP)以及无共享(shared-nothing,SN)的架构,使它拥有线性扩展的能力,从 1 个节点的单机模式可以扩展到数千台服务器的集群模式。此外,ClickHouse 的架构支持多主节点的副本模式,避免单点故障。
ByteHouse 基于字节的丰富场景,以及 ClickHouse 开源版的痛点进行了深度定制。以下列举了部分深度定制功能:
多场景表引擎:
高可用引擎:解决开源版 ReplicaMergeTree 引擎对于 zookeeper 不适当的使用带来集群不稳定的问题。
实时数据引擎:支持 at-least once 语义,可自动切换主备写入,稳定高可用。
Unique 引擎:支持 upsert 功能,数据同步插入去重。
扩展数据类型:
Map:适合业务经常变化场景。 通过优化可以保持几乎等同于正常列的写入和查询性能。
Bitmap:支持大量数据进行复杂计算(交集、并集、补集等),适合表达具有特定关系的,大量实体 ID 集合的运算,例如千万甚至亿级别 user_id 的用户标签表,人群圈选可以秒级返回结果。
优化器: 为业界目前唯一的 ClickHouse 优化器方案。ByteHouse 自研优化器基于四个大的优化方向:RBO(基于规则的优化能力),CBO(基于代价的优化能力),分布式计划优化,高阶优化能力。
多级存储: 通过将热数据自动转存到冷存储(S3 / HDFS)的方式,牺牲冷数据部分查询性能来缓解业务存储空间持续增长的问题。