“OLAP”这个名词最早诞生于1993年,由关系型数据库之父E.F.Codd博士提出,这也是世界范围内首次对多维数据库与多维分析有一个盖棺定论的概念定义。但可能连考特博士本人也没有预料到,在短短二十余年的时间里OLAP型数据库迅速在千亿数据库市场中站稳了脚跟,并在大数据浪潮的推动下不断拓宽着属于自己的市场版图。在当下这个时代,传输的数据即是流动的石油,而OLAP数据库则是企业从数据中获取价值最为直接的工具。
不同于OLTP领域在漫长的时间积淀下所形成的稳定技术格局,OLAP领域的数据库产品目前还处于百家争鸣、群雄割据的状态。正所谓“乱世出英豪”,2016年由俄罗斯搜索巨头Yandex开发并开源的一款OLAP型数据库产品ClickHouse在短时间内迅速蹿红。作为后起之秀,ClickHouse凭借着先天的设计优势、极致的速度性能与灵活可扩展性,受到了国内外企业的广泛关注与使用。
当然对于数据库产品而言,仅仅做到性能上的出众是远远不够的,无论是开发者看重的上手难度、学习成本,还是企业看重的产品稳定性与业务兼容性,现阶段ClickHouse都难以满足企业级用户的使用需求。2021年8月,火山引擎正式对外发布了「ByteHouse」企业级数据库产品。作为ClickHouse的企业版,ByteHouse在解决上手与试错难题的同时,还能够为企业用户提供完善的产品技术支持服务。
极限业务场景下的千锤百炼,国内最大ClickHouse“玩家”打造的ByteHouse
如果我们想为ClickHouse寻找一个完美的“压力测试场景”,那么坐拥抖音、头条、西瓜视频等一系列头部产品的字节跳动一定会榜上有名。“节点总数超过15000个、管理总数据超过600PB、最大集群规模在2400余个节点”,从数字上我们不难看出ClickHouse在字节跳动内部业务场景中的深度应用。
火山引擎是字节跳动旗下企业级技术服务平台,其基于开源的ClickHouse进行深度优化和改造后,推出了企业版产品ByteHouse。除自研表引擎、扩展数据类型、冷热数据分离等诸多自研优势以外,ByteHouse的数据实时写入能力也相较原生ClickHouse提升了两倍以上。在极限业务场景的打磨下,ByteHouse完成了由一个优秀的开源OLAP引擎向完善的商业化企业级产品的蜕变,能够为企业级用户海量数据的生产环境,提供更强的数据查询和写入服务。
这里我们为大家分享ClickHouse在字节跳动代表性业务场景的应用案例与ByteHouse的优化方案:
A/B测试下的推荐系统实时指标
2016年,字节跳动搭建了支持大规模产品实验的A/B测试平台。在完成对抖音、西瓜视频等全线业务的接入后,字节跳动每天同时进行的A/B测试达到上万场,单日新增实验数量超过1500个,覆盖400多个大大小小的业务,累计A/B测试次数已经突破70万(截至2021年4月)。随着推荐系统产生的数据量越来越大,单个节点消费能力的要求自然也水涨船高。在使用ClickHouse支持A/B测试推荐系统的实时数据时,火山引擎研发团队也遇到了诸如单次数据吞吐量大、数据落盘时延低,以及数据传输过程中不丢失且不重复等技术需求。
ByteHouse通过异步构建辅助索引的方式,及基于自研的Kafka Engine,保证写入性能在OLAP数据库中具有领先优势。同时,ByteHouse也支持exactly once语义,确保数据传输中的原子性,有效保障和满足了字节业务部门在热门活动实时数据分析上的诉求。
头部APP端的大数据分析
上线短短四年时间,字节跳动的短视频APP产品抖音的日活用户便已突破6亿。除了抖音,字节跳动也还有其他日活过亿的头部App产品,在庞大日活用户的背后产生了海量的产品使用数据分析需求。从业务的角度分析,APP端产品的数据分析具有指标计算相对复杂、数据总量较大且查询模式多变的业务特点,为此也需要具备高可用保障,以及能够应对超大数据规模下交互式实时响应的能力。
ByteHouse 提供了 PB 级数据秒级响应,通过增强的自研引擎,确保95%以上的查询均可在秒级返回,针对APP端的业务多变性,引入了新的数据类型支持动态schema。同时通过自研的HAEngine和元数据持久化等优化,ByteHouse提供了新的生产级高可用方案,能够保障其在大数据量场景下依然不会影响到查询分析体验。
“运维工具+技术支持”,齐头并进的ToB服务双头马车
“使用难度、运维成本”相信这是每一个企业级用户在选型数据库产品时,会去关注的两大衡量指标。同时,这两项指标也成为了横跨在ClickHouse“关注者”与“使用者”之间巨大的鸿沟。无论是国内还是国外的开发论坛上,ClickHouse“上手容易,用好很难”已经成为开发者共同的认知。正所谓“九层之台,起于累土”,对于企业级用户的实际应用场景而言,配套的运维能力与技术支持是企业级产品的基石,发挥的作用至关重要。
ByteHouse 提供了一个自助服务平台,针对部署和运维提供了多种工具进行集群管理。对于常规的运维操作,ByteHouse支持自动下发版本调整、节点重启和替换等运维任务,并具有自动发现和替换故障节点的能力。同时,针对系统的运行情况,ByteHouse也提供了全面的监控、负载指标,使其具备便捷、清晰的管理能力。比如说,在集群使用过程中,ByteHouse可以随时对CPU利用率与磁盘利用率的警戒水位线等关键指标进行监控,对健康度进行可视化展示。ByteHouse系统内部还可以根据企业自身需求,配置故障、服务异常等报警功能的阈值,方便企业级用户进行预处理操作。
针对数据库产品不可避免存在的慢查询问题,ByteHouse提供了强大的查询诊断功能,对负载过重的后台合并任务,也可以进行自动诊断。这些“事前”、“事中”、“事后”的运维能力,有效提升了可用性,大大降低了运维复杂度。在ByteHouse的加持下,大型企业用户或许只需七名SRE工程师就能支持上万节点的运维。
此外,火山引擎围绕ByteHouse提供了完善的产品技术支持,从产品的安装部署、业务应用与项目的0到1、端到端落地的多重维度,为企业用户提供包括架构咨询、使用优化、进阶培训等服务。从完善的自动化运维工具,到覆盖产品与项目的专业技术支持,火山引擎ByteHouse的ToB拓展之路,走的平稳且坚实。
先狭义后广义,企业级数据库产品的商业化范式
虽千行百业皆需赋能,但需求痛点个个不同。对于企业级交互式分析数据库产品而言,既要储备深度足够的技术能力,同时还要具备灵活适应不同业务场景的泛化能力。“先狭义,后广义”,这也是火山引擎在开发ByteHouse产品中贯穿始终的心路历程。
作为企业级交互式数据库产品,目前ByteHouse已经成功在金融、制造、零售、互联网等行业中逐渐落地生根,并切实地帮助企业解决其在大数据分析领域中的痛点。火山引擎向CSDN分享了ByteHouse在实际应用场景中取得的进展:
在服务传统工业制造应用场景中,客户基于工业互联网大数据平台,积累了数十万台大型设备,并以每天5亿条的速度不间断产生IoT数据,急需构建一个具有高性能、高可用、易扩展的大数据平台,以支撑千亿级数据的性能指标查询和高效的数据计算分析。ByteHouse在技术选型中脱颖而出,在实时数据写入性能、并发查询、高可用和集群稳定性、监控可视化等方面满足其核心诉求,并进一步支持了报警预测实时推送、电子围栏等场景。
作为泛互联网场景下的代表性产业,“数据驱动”正逐渐成为游戏行业发展的核心源动力。在游戏行业的实际应用场景中,客户需要根据人群包,在丰富的维度标签下洞察人群特征分布,实现快速理解用户。而现有的技术栈面临着高基维、标签数据良多,以及复杂的业务逻辑等众多难题。ByteHouse凭借高基维优化、BitmapEngine等核心优化,有效支持了用户包的运算和亚秒级查询响应,极大提升了人群画像洞察、差异分析、个体画像分析等场景下的查询体验。
在OLAP场景需求快速增长的当下,企业对于交互式分析数据库产品的需求,仍将会进一步增加。火山引擎ByteHouse利用自身场景的沉淀推出企业级“ClickHouse”服务,在CSDN看来可谓是恰逢其时。它的出现,为处在大数据浪潮中的企业级用户提供了OLAP场景下的一站式服务,有助于其打通大数据分析场景化落地的“最后一公里”。