3个企业级最佳实践,教你ByteHouse云数仓这么用

news2024/12/22 18:36:44

随着各业务场景各行业数字化转型加快,数据量呈爆炸式增长。在拥有庞大数据的同时,业务也在分析、查询与响应层面,对数据库系统性能提出了更高要求。云原生技术推动了分布式数据库系统的迭代升级,对云数仓技术而言,“写入能力、高性能查询、高并发、架构精简、成本控制”的一系列挑战,是其在发展中亟待解决的难题。

作为火山引擎数智平台 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 作为一种数仓新范式,具备支撑实时数据分析和海量数据离线分析的能力、便捷弹性扩缩容能力、极致分析性能以及丰富的企业级特性,将在未来赋能更多业务系统。

点击跳转火山引擎ByteHouse了解更多

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1885277.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MacBook关闭谷歌浏览器双指左右移动(扫动)前进后退功能

这个功能真的很反人类,正常上下滑动页面的时候很容易误操作,尤其是当你在一个页面上做了很多的编辑工作后误触发了此手势,那真叫一个崩溃! 其实这应该是 Macbook 触控板提供的一个快捷操作,跟浏览器本身估计没关系&am…

mysql-sql-第十三周

学习目标: sql 学习内容: 37.查询各科成绩最高分、最低分和平均分: 以如下形式显示:课程 ID,课程 name,最高分,最低分,平均分,及格率,中等率,优良率,优秀率 及格为>60,中等为:70-80,优良为:80-90,优秀…

使用Comsol进行边坡稳定性分析的例子——详细步骤(第二部分)

使用Comsol进行边坡稳定性分析的例子——详细步骤 研究1方法结果书接上回 在FOS参数的帮助下,对材料强度进行参数化。在第二个研究步骤中添加 FOS 的辅助扫描。对于某些 FOS 值,解不会收敛,并且设置为最后一个 FOS 值的默认图将给出错误。禁用此研究的默认绘图以避免出现错误…

65、基于卷积神经网络的调制分类(matlab)

1、基于卷积神经网络的调制分类的原理及流程 基于卷积神经网络(CNN)的调制分类是一种常见的信号处理任务,用于识别或分类不同调制方式的信号。下面是基于CNN的调制分类的原理和流程: 原理: CNN是一种深度学习模型&a…

root密码忘了怎么办(从系统引导过程解决)

目录 1.Linux系统密码忘记 2.系统引导过程 2.1 systemd 2.2 GRUB和GRUB2 2.3 运行级别 3.修复MBR扇区故障和GRUB引导故障 3.1 MBR扇区故障 3.2 GRUB引导故障 1.Linux系统密码忘记 我们在生活中经常遇到这类困扰,就是某个账号还是账户密码忘了,这…

Llama也能做图像生成?文生图模型已开源

导读 基于next-token prediction的图像生成方法首次在ImageNet benchmark超越了LDM, DiT等扩散模型,证明了最原始的自回归模型架构同样可以实现极具竞争力的图像生成性能。 Llama也能做图像生成?文生图模型已开源 香港大学、字节跳动提出了基于自回归模…

【AI大模型】大型模型飞跃升级—文档图像识别领域迎来技术巨变_图像识别大模型

写在前面 2023年12月31日,第十九届中国图象图形学学会青年科学家会议在广州举行,由中国图象图形学学会主办。 该会议的目标是促进青年科学家之间的交流与合作,以提升我国在图像图形领域的科研水平和创新能力。 由中国图象图形学学会和上海合合…

如何将音频文件发送至摄像头

目前再很多互联互通的场景下,如AI盒子再从摄像头上取视频分析,分析出发生某个事件,需要反向通过摄像头的喇叭播放语音,发出告警提示,使用场景如下 盒子上对于此类场景的需求往往不能满足,或者为这个需求需要…

Day8: 232.用栈实现队列 225. 用队列实现栈 20. 有效的括号 1047. 删除字符串中的所有相邻重复项

题目232. 用栈实现队列 - 力扣(LeetCode) class MyQueue { public:MyQueue() {}void push(int x) { // 出栈input.push(x);}int pop() {// 如果出栈为空,把入栈元素全都转移到出栈if (output.empty()) {while (!input.empty()) {int itop i…

【WEB前端2024】3D智体编程:乔布斯3D纪念馆-第52课-语音控制机器人

【WEB前端2024】3D智体编程:乔布斯3D纪念馆-第52课-语音控制机器人 使用dtns.network德塔世界(开源的智体世界引擎),策划和设计《乔布斯超大型的开源3D纪念馆》的系列教程。dtns.network是一款主要由JavaScript编写的智体世界引擎…

彭涛 | 2024年6月小结

6月是忙碌的一个月,换办公室,买家具,群发售,新小伙伴入职等等 1、出海小报童 这个月时间主要做小报童,从刚开始设计内容大纲,到写作,后续拉新花费了大量时间。 比如我们要去调研同行&#xff0c…

新能源行业必会基础知识-----电力市场概论笔记-----中长期合约电力市场

新能源行业知识体系-------主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/139946830 目录 1. 合约市场2. 双边交易3. 集中交易4. 挂牌交易及互联网中长期电力交易平台5. 中长期交易的优势 1. 合约市场 什么是合约市场 …

从选题到定稿:软考高级系统架构设计师论文写作全攻略

一、论文考试概述 软考系统架构设计师考试的最后一门是论文写作,安排在下午进行,时长两小时,要求撰写约3000字的论文,以45分为及格线。时间紧迫,不容过多犹豫与思考,因此需迅速选定并着手撰写。论文题目通…

【数据结构】C语言实现二叉树

C语言实现二叉树 导读一、二叉树的数据类型二、二叉树的初始化2.1 补充知识点——传址传参2.2 补充知识点——指针传参 三、二叉树的创建3.1 通过添加结点创建BST3.2 通过结点序列创建二叉树3.2.1 由遍历序列手算构建二叉树3.2.1.1 构建步骤3.2.1.2 习题演练3.2.1.3 小结 3.2.2…

在C#/Net中使用Mqtt

net中MQTT的应用场景 c#常用来开发上位机程序,或者其他一些跟设备打交道比较多的系统,所以会经常作为拥有数据的终端,可以用来采集上传数据,而MQTT也是物联网常用的协议,所以下面介绍在C#开发中使用MQTT。 安装MQTTn…

yolov5实例分割跑通以及C#读取yolov5_Seg实例分割转换onnx进行检测部署

一、首先需要训练yolov5_seg的模型,可以去网上学习,或者你直接用我的, 训练环境和yolov5—7.0的环境一样,你可以直接拷过来用。 yolov5_seg算法 链接:https://pan.baidu.com/s/1m-3lFWRHwg5t8MmIOKm4FA 提取码&…

第十四届蓝桥杯省赛C++B组D题【飞机降落】题解(AC)

解题思路 这道题目要求我们判断给定的飞机是否都能在它们的油料耗尽之前降落。为了寻找是否存在合法的降落序列,我们可以使用深度优先搜索(DFS)的方法,尝试所有可能的降落顺序。 首先,我们需要理解题目中的条件。每架…

tcpdump命令详解及使用实例

1、抓所有网卡数据包,保存到指定路径 tcpdump -i any -w /oemdata/123.pcap&一、tcpdump简介 tcpdump可以将网络中传送的数据包完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来去掉无用的信…

Python中爬虫编程的常见问题及解决方案

Python中爬虫编程的常见问题及解决方案 引言: 随着互联网的发展,网络数据的重要性日益突出。爬虫编程成为大数据分析、网络安全等领域中必备的技能。然而,爬虫编程不仅需要良好的编程基础,还需要面对着各种常见的问题。本文将介绍…

Qt中文乱码如何解决

目录 一、使用建议 二、其它设置 一、使用建议 Qt对中文的支持不是很友好,使用QtCreator会出现各种乱七八糟的中文代码问题,如何处理这种问题? (1)粘贴别人的代码时,先在记事本里粘贴一遍,再…