随着各业务场景各行业数字化转型加快,数据量呈爆炸式增长。在拥有庞大数据的同时,业务也在分析、查询与响应层面,对数据库系统性能提出了更高要求。云原生技术推动了分布式数据库系统的迭代升级,对云数仓技术而言,“写入能力、高性能查询、高并发、架构精简、成本控制”的一系列挑战,是其在发展中亟待解决的难题。
作为火山引擎数智平台 VeDI 旗下的新一代云原生数仓产品,ByteHouse能够支撑实时数据分析和海量数据离线分析,具备便捷的弹性扩缩容能力,极致分析性能和丰富的企业级特性。以 ClickHouse 技术路线为基础,从2017年内部立项开始,截止到2022年3月,ByteHouse 节点总数已经达到了18,000,最大的行为分析集群超过了2,400个节点,数据量超过700PB。
本文聚焦 ByteHouse 在实时数仓、企业级中台OLAP 以及广告投放三个领域最佳实践,拆解高并发点查、OLAP 引擎技术、以及圈选投放等能力在实际业务场景中的实现逻辑和效果,分享新一代云数仓的三大最佳实践。
实时数仓
在移动互联网庞大用户群体和高频访问需求的背景下,业务场景对数据处理的即时性和准确性提出了更高要求。与离线数仓不同,实时数仓以秒级延迟的数据生产为目标,从而能够更快地为商业决策、市场分析、用户行为研究等场景提供数据依据。
在目前的数据生产领域,构建实时数仓已成趋势,“如何让自己在数据洞察方面更具优势”成为倍受关注的焦点。性能是实时数仓领域的首要目标,核心性能需求则包括:高吞吐 TPS、低延时反馈响应、高并发以及实时流多维计算。
实时数仓核心需求
实时计算
实时数仓领域的关键诉求之一是实时计算。目前,实时计算有仓外、仓内计算这两个技术实现流派。
- 仓外计算
仓外计算是基于 Flink 或者Serverless Flink构建,ByteHouse 能够对此提供支持。我们自研的 BH Connector for Flink 通过攒批写的方式,可以很好地消费 Flink 投送的每秒百万级数据量,并进行去重入库。此外,表的拼接、属性补齐等带实施规则的操作,可以通过 Flink 的 LookupJoin 实现。
- 仓内计算
仓内计算主要基于 ByteHouse物化视图能力来构建,减轻数据链路上或数据管道上的计算压力。ByteHouse的优势在于计算能力,直接基于全维度数据进行实时计算,从而能够使整个数据链路变得更加轻量化。
我们的物化视图支持单表和多表物化;同步和异步刷新。在新的业务场景中,如果有实时计算层面的需求,大家可以尝试使用 ByteHouse 的物化视图方式,将一些复杂的流计算或拼接计算放入仓内,从而使整个数据架构链路更加轻量化。
以某娱乐公司的实时 BI 场景为例,通过 CDC 技术栈,ByteHouse 能够轻松同步每天 15 亿的数据,TPS 峰值达到 6 万以上。而在某款畅销游戏的数据中台构建场景中,ByteHouse 能够通过其自研的 BH Connector for Flink 所具备的写入能力,将每秒 260 万 TPS 的日志数据以 upsert方式落盘。
高并发点查
基于 ByteHouse QueryCache 功能可以很好支撑高性能、高并发的点查和复杂查询业务场景。ByteHouse 的增强型优化器参数则可以减少点查场景中生成执行计划的时间消耗,再叠加查询模板等技术能够轻松将点查提升到几十万甚至百万级的层面。ByteHouse不仅具备性能优势,还能在同等业务场景情况下实现更低的资源消耗,缓解成本压力,并有效保障系统稳定性。
目前,ByteHouse 的高并发点查能力已在游戏场景中顺利落地。以某游戏广告推荐系统为例,该系统需要快速响应大规模用户的同时搜索操作,并通过查询用户属性表、游戏属性表和广告属性表等信息,匹配并推荐用户可能感兴趣的游戏。该游戏公司日常 QPS 达到万级规模,而在高峰期,QPS 指标会随之增长数倍。这就导致该系统面临着不稳定和故障解决响应速度较慢的问题。
ByteHouse 则为这一问题提供了解决方案,在游戏推荐场景中,ByteHouse 很好地支持了 20 万 QPS 的点查场景,且时延达到 10 毫秒以内。在包括点查和复杂查询的混合查询型广告推荐场景中,面对高达 3 万的QPS,ByteHouse 也能够将时延压缩到 5 毫秒内,性能表现优异。
不止游戏领域,ByteHouse 的高并发点查能力也在舆情监测以及电商等场景中落地。仟传网络,是国内知名的内容社交平台整合营销企业,其旗下的舆情监测平台面临着数据实时性方面的挑战。舆情监控对数据实时性要求很高,但在该平台的原有技术方案中,提供舆情相似度检索能力的自建Elasticsearch并无法在性能与成本上完全满足需求。
在性能上,业务要求系统支持数万QPS的实时检索;在成本上,随着数据量不断增大,机器资源成本将愈加不可控。此外,数据写入和查询流程较为复杂,导致应用开发成本高。面对该企业的高并发点查难题,ByteHouse 采用多副本机制,将全量数据写入主节点,实时自动同步至多个副本,并通过网关查询实现自动负载均衡、一写多读,从而线性提高并发能力。
ByteHouse还支持通过SQL写入、查询来完成业务逻辑,简化数据处理流程,提升开发效率。此外在资源效率上,ByteHouse采用灵活的资源模型,可支持任意节点数量和副本数量变配。用户初始只需购买最小资源,后期则可随业务增长即时扩容,从而使成本更加可控。
数据集成
在数据集成层面,ByteHouse 可以无缝对接主流开源产品,支持 Kafka 流、MySQL、CDC 等数据的实时同步接入,保证数据的精准一次(exact once)传输,并实时分析流入的数据,适用于实时点击流分析、实时监控等场景。通过创建并执行数据集成任务,ByteHouse 能够处理每天百亿到千亿的事件量。同时,ByteHouse 在性能方面也进行了优化提升,满足用户在各个场景中性能方面诉求。
企业级 OLAP 中台
在数据平台的建设中,已有不少企业引入 OLAP 引擎,OLAP 引擎能处理大规模的数据集,并快速提供多维度的数据分析的结果,从而使营销活动数据的实时查询效率,并进一步优化精准投放表现。
在 OLAP 中台或数仓建设方面,业界目前主要有高性能、资源隔离、无损弹性、架构简洁轻快以及成本最优的五点核心诉求。而作为基于开源 ClickHouse 而构建的OLAP引擎,ByteHouse 期望通过企业级数据中台技术,以一元化架构对多元化场景的业务需求提供充分支持。
企业级OLAP中台核心需求
资源隔离
ByteHouse 通过计算组的方式来实现资源隔离,不同应用可以构建不同计算组,不同计算组之间可以做到物理级资源隔离,以此确保计算组之间的资源不会被占用。
- 读写分离
“读写分离” 适用于读写繁忙的业务系统,ByteHouse 会为其指定一个专属计算组,用于写入操作。这样一来,数据库中的所有写入操作都会自动被投放到此写入计算组中,进行后台 merge 操作。由于 ByteHouse 的架构是 HaMergeTree,如果 merge 操作过于频繁,就会直接影响到读应用的资源保障。因此对于读类型的业务,需要使用指定的专属资源组来负责查询。
- 应用隔离
在应用隔离层面,ByteHouse 为不同应用设定专属的计算组,并根据具体算力需求来构建尺寸,目前支持从 S 到 (n)XL 的各种规格。
无损弹性实现最优成本
弹性是 ByteHouse 的核心特性之一,ByteHouse 的秒级弹性扩缩能力让企业更加专注业务,不同企业能根据业务属性来定制弹性计划。目前可实现的是自定义设定时间触发型弹性计划,明年上半年将实现基于工作负载的智能感知型计划。
在弹性机制下, ByteHouse 可以实现按需计费、自动启停和自动弹性伸缩等策略,且在暂停期间不收取任何计算层费用,从而进一步帮助企业降低资源成本。
在某广告营销公司的落地实践中,ByteHouse 针对负载趋于稳态运行的应用,计算组会设定为包月模式,使得整体费用更加优惠。而对于负载具有明显波峰、波谷特征的应用,则会把计算组设定为按需模式,“自动启停”功能会在后台自动检测计算组的负载情况。如果处于负载较少且持续超过 5 分钟的低峰期,系统将自动暂停,从而最大限度地节省开支和费用,为企业带来最优成本的解决方案。
广告推荐投放
近年来,短剧日渐流行,成为广告营销公司服务的热门场景之一。大家在看短剧时,是否会想“为什么平台会给我推送这些短剧”。实际上,这个问题的答案或多或少与 OLAP 的功能有关。移动互联网的流量红利不断消退,精细化营销模式随之跃迁为主流。从数以亿计的人群中,优选出最具潜力的目标受众,是精细营销的题中之义,也是作为基础引擎的数据仓库能力所面临的挑战。
在渐趋庞大的数据体量下,广告营销公司的数据分析能力逐渐难以跟上业务诉求,一方面,投放策略的实时调整要求数据分析和更新时效性在3s内,且并发QPS达到2000。另一方面,在营销场景中,海量数据的实时更新会导致大量数据碎片的产生,这些碎片既会拉低查询性能,还会导致存储空间的浪费。
基于上述问题,广告营销公司开始引入 OLAP 引擎技术作为解决方案。作为基于开源 ClickHouse 而构建的 OLAP 引擎,ByteHouse 具有极致分析体验、弹性扩缩容等特性,从而能够提供有效解法。ByteHouse 联合连山云、巨量引擎,搭建了一套 ”一键实时同步、极简架构、低门槛技术” 的短剧行业通用解决方案,从而实现端到端地赋能短剧行业,提升广告数据处理效率与投放ROI。
ByteHouse基于连山云搭建的短剧行业通用解决方案
数据实时同步
在数据同步方面,ByteHouse 采用高性能的数据同步机制,通过 DataSail、ServerlessFlink 等将实时数据同步到 ByteHouse 中,数据入仓延迟小于1秒,极大提高数据的时效性。此外,还采用独立计算资源解决写入瓶颈,底层分布式存储(CFS)解决扩展性和成本问题。
在广告投放实时同步方面,ByteHouse 可以通过连山云 RDS 数据推送,将数据获取时效性提升到3分钟以内,极大程度地提升了广告投放效率,也使对账能力与数据准确性得到提升,减少冗余信息。
投放分析中台
高性能
查询索引优化和读写资源分离是 ByteHouse 在广告投放场景中用以提升查询效率的两大核心手段。通过多级索引,如排序键索引、分区键优化、跳跃索引等,ByteHouse 能够有效减少广告营销查询时扫描的数据量。即使在每天千万查询量的情况下,数据返回时效也能保障在秒级,较之前实现了5倍提升。
如前文所述,在庞大人群中优选出最具潜力的消费人群的“人群圈选” 能力是实现精细化营销的题中之义。以广告投放场景中的人群圈选为例,分析师通常会采用各种标签组合来选出合适人群,但人群查询在不同标签组合下会产生不同大小的结果集。因此,分析师往往需要经过多次逻辑调整,才能在一次广告投放中获得"最好"的人群包。这就带来了数据预估误差大、性能无法满足实时需求、存储空间增大所导致的成本问题。
作为ByteHouse定制的高效集合数据处理模型,BitEngine 能够通过解决集合的交并补计算,在实时分析场景中实现性能提升,有效解决痛点。BitEngine 提供的 BitMap64 类型适合表达具有特定关系的大量实体ID集合,将集合的交并补运算转化为bitmap之间的交并补运算,从而达到远超普通查询的性能指标,有效圈选出 “人群包A” 和 “人群包B” 的交集人群,完成广告精准投放。从数据表现上看,在10亿级用户测试数据下,ByteHouse的人群查询P99小于10s,呈现出优异性能。
高并发
ByteHouse 高并发点查具备响应快,性能强大的特点。同等资源规格配置和同等数据规模量级情况下,响应时间达毫秒级,ByteHouse并发性能指标优于开源OLAP产品 2-5 倍以上,256核可达到8万QPS。不仅仅具备性能优势,在同等业务场景情况下,ByteHouse能做到资源消耗更低,并有效保障系统稳定性,缓解成本压力。ByteHouse 高并发点查能力不仅具备高性能、响应快的特点,还可以帮助企业节约资源,助力数据基础建设过程中的成本优化和效率提升,夯实企业的数据底座。
应用无缝集成
ByteHouse 为域内的许多上层套件提供支持,将许多高频的场景分析函数(转化分析、路径分析、漏斗分析)进行了内置化,使用户可以开箱即用。另外,ByteHouse 支持上层营销套件高效赋能实时人群;对广告投放前人群、投放中广告计划策略进行优化;对投放后效果进行洞察与根因分析,形成数据闭环,使广告投放的 ROI能够提升至少2倍。
敏捷开发
此外,在敏捷开发能力上,ByteHouse的 BSP 模式支持在数仓内部进行 ELT 数仓分层开发,通过 Dataleap 实现可视化开发与调度,有效降低业务使用门槛。
在实际外部应用中, ByteHouse目前也已经与中国地震台网中心、海王集团、莉莉丝游戏、极客邦科技等诸多行业企业达成合作,深度助力各个行业数字化转型。
上述最佳实践也表明,ByteHouse 作为一种数仓新范式,具备支撑实时数据分析和海量数据离线分析的能力、便捷弹性扩缩容能力、极致分析性能以及丰富的企业级特性,将在未来赋能更多业务系统。