查询速度最高提升50倍!火山引擎ByteHouse在广告投放领域实践分享

news2024/11/24 13:53:03

更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群

据QuestMobile报告显示,移动互联网已经进入了下半场,在使用人数和使用时长方面已经没有明显增长,互联网已经流量趋于饱和。

作为广告投放主要阵地,由于互联网平台流量红利逐渐消退,越来越多的广告企业和从业者开始探索精细化营销的新路径,取代以往的全流量、粗放式的广告轰炸。精细化营销意味着要在数以亿计的人群中优选出那些最具潜力的目标受众,这无疑对提供基础引擎支持的数据仓库能力,提出了极大的技术挑战。

在人群圈选分析中, 分析师一般利用各种标签组合,挑选出最合适的人群,进而完成广告推送,达到精准投放的效果。但由于人群查询在不同标签组合下的结果集大小不同,在一次广告投放中,分析师需要经过多次的逻辑调整,以获得"最好"的人群包。抖音集团拥有广泛的广告投放场景,在日常实践中,我们发现以下痛点问题:

  • 首先,数据预估。广告主需要对选定的人群组合进行预估,以便判断投放情况并确定投放预算。但广告平台用户越来越多,有的平台DAU达到上亿,使得人群包数据量过大,技术上只能采用1/10抽样存储,将导致10%误差。

  • 其次,性能问题。为了保证人群圈选精准度,广告主往往会设定多样、复杂的人群圈选条件,导致底层计算逻辑复杂,比如单次计算可能包含几百,甚至上千个人群包。Hive和Elasticsearch等方案在处理大数据量时,查询速度慢。如果研发人员查询某个广告主的所有用户,该方案需要扫描整个用户库,整个过程需要几分钟甚至几个小时,无法满足广告主实时性要求。

  • 最后,存储问题。Hive和Elasticsearch等方案需要额外的索引结构,使得存储空间变大,导致成本增加。

在以往,研发团队通常使用两种方案来解决以上问题:

方案一:将每个人群包存储为一个Array类型的数据结构,每次查询需要从Array中找到某一个特定ID。

方案二:使用一个表来存储用户ID,在查询的时使用In/Join计算多个人群的交集。

经过内部长期使用经验,无论是方案一或方案二,都存在当数据量逐渐增大,查询速度无法满足实时分析需求的问题。基于高性能、分布式特点,ClickHouse可以满足大规模数据的分析和查询需求,因此研发团队以开源ClickHouse为基础,研发出火山引擎云原生数据仓库ByteHouse,并在其中定制一套处理模型——BitEngine,用于解决集合的交并补计算在实时分析场景中的性能提升问题。

据介绍,BitEngine是一个高效集合数据处理模型,底层基于MergeTree Family存储引擎,并在此基础上引入了BitMap64类型,开发了系列相关运算函数。BitEngine提供的BitMap64类型适合表达具有特定关系的大量实体ID的集合,将集合的交并补运算转化为bitmap之间的交并补运算,从而达到远超普通查询的性能指标。

那么,BitEngine如何应用在人群圈选场景中?举个例子,广告主需求为圈选出“人群包A”和“人群包B”的交集人群,完成广告精准投放。

人群包情况:

  • 人群包A = [10001, 20001,30001,40001,50001],人群包B = [10001, 20001,20002,20003,20004]

期望结果:

  • 通过BitEngine计算A&B = [10001, 20001]

首先,人群包按照一定规则划分为多个区间,任意两个区间之间的人群包没有交集,由BitEngine保障数据的读取和计算是严格按照区间进行;其次,BitEngine在数据读取时会为每一个文件构建一个读任务,由一个线程调度模块完成整个任务调度和读取;最后,BitEngine完成所有中间结果计算后,按照结果的输出要求做一次数据合并,由此完成交集计算。已上线业务的测试表明,相比普通和Array或者用户表方式,BitEngine在查询速度上有10-50倍提升。

BitEngine上线前后查询耗时监控

 

BitEngine不仅仅在抖音集团海量广告投放场景中使用,目前更是集成在火山引擎云原生数据仓库ByteHouse中对外输出。火山引擎ByteHouse主要为用户提供极速分析体验,能够支撑实时数据分析和海量数据离线分析,具备便捷的弹性扩缩容能力,极致分析性能和丰富的企业级特性,目前已经与中国地震台网中心、海王集团、莉莉丝游戏、极客邦科技等诸多行业企业达成合作,深度助力各个行业数字化转型。

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

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

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

相关文章

【升职加薪秘籍】我在服务监控方面的实践(6)-业务维度的mysql监控

大家好,我是蓝胖子,关于性能分析的视频和文章我也大大小小出了有一二十篇了,算是已经有了一个系列,之前的代码已经上传到github.com/HobbyBear/performance-analyze,接下来这段时间我将在之前内容的基础上,结合自己在公…

电脑出现msvcp120.dll丢失的解决方法,教你三招快速解决

msvcp120.dll丢失是一件很常见的问题,出现msvcp120.dll丢失会导致电脑无法在正常运行,那么应该怎么解决这个问题呢,有什么办法可以快速的解决呢,今天教你三招快速解决msvcp120.dll丢失的方法。 一.msvcp120.dll文件丢失可能导致的…

深度学习入门(五):经典网络Alexnet实现

介绍 AlexNet是一个深度卷积神经网络架构,于2010年代初在深度学习重新引起人们关注时发挥了重要作用。它因在2012年的ImageNet大规模视觉识别挑战(ILSVRC)中获胜而闻名。 实现 创建了一个AlexNet网络的实例,并将一个随机生成的…

云服务之PaaS:PaaS怎么帮助企业走向云

一、前言 企业想要平滑地向云迁移,需要选择一个适合自己的云基础框架。PaaS(平台即服务)作为云计算的重要组成部分,可以为用户提供完整的应用生命周期管理和相关资源服务。开发人员可以在PaaS框架构建和自定义应用程序,这为企业大大地节省了金…

金桥跨越相伴岁月 桂冠加冕爱意时光 GP芝柏表铭刻相爱传奇 演绎浪漫七夕

两个多世纪以前,康士坦特芝勒德 (Constant Girard) 与玛莉亚柏雷戈 (Marie Perregaux) 喜结连理,两颗心灵在爱意中交织,二人将姓氏结合,创立“Girard-Perregaux”芝柏表,成为数百年来瑞士高级制表中仅有的以夫妻双人姓…

龙迅LT7911UX TYPE-C/DP转MIPI/LVDS,内有HDCP

1. 描述 LT7911UX是一种高性能的Type-C/DP1.4a到MIPI或LVDS芯片。HDCP RX作为HDCP中继器的上游端,可以与其他芯片的HDCP TX协同工作,实现中继器的功能。 对于DP1.4a输入,LT7911UX可以配置为1/2/4车道。自适应均衡使其适用于长电缆应用&#…

设计模式(9)建造者模式

一、 1、概念:将一个复杂对象的构造与它的表示分离,使得同样的构造过程可以创建不同的表示。建造者模式主要用于创建一些复杂的对象,这些对象内部构建间的顺序通常是稳定的,但对象内部的构建通常面临着复杂的变化;建造…

FUSE简单了解

FUSE是什么? FUSE(filesystem in userspace)是一个用户态文件系统框架。由内核模块(fuse.ko)、用户态库(libfuse.*)和挂载工具组成(fusermount) fuse最重要的特性是fuse可以允许安全、非特权挂…

设计师私藏的5个设计网站,你一定要知道。

这5个网站设计师都在用,找素材、找灵感一步到位,赶紧收藏~ 菜鸟图库 https://www.sucai999.com/?vNTYxMjky 菜鸟图库是一个非常大的素材库,站内包含设计、办公、自媒体、图片、电商等各行业素材。网站还为新手设计师提供免费的素材&#xf…

【C语言进阶(4)】指针和数组笔试题

文章目录 Ⅰ 一维数组Ⅱ 字符数组题型 1题型 2题型 3 Ⅲ 二维数组 数组名的意义 sizeof(数组名),这里的数组名表示整个数组,计算的是整个数组的大小。&数组名,这里的数组名表示的是整个数组,取出的是整个数组的地址。除了上述…

*****独立看门狗总结实验

1、看门狗定时计算 看门狗的喂狗时间(也就是看门狗溢 出时间)的计算方式为: Tout((42^prer) rlr) /32 其中 Tout 为看门狗溢出时间(单位为 ms)。 prer 为看门狗时钟预分频值(IWDG_PR 值)&#…

OpenGL —— 2.3、绘制第一个三角形(附源码,glfw+glad)(更新!)

源码效果 C源码 vertexShader.glsl #version 330 corelayout(location 0) in vec3 aPos; layout(location 1) in vec3 aColor;out vec4 outColor;void main() {gl_Position vec4(aPos.x, aPos.y, aPos.z, 1.0);outColor vec4(aColor, 1.0); };fragmentShader.glsl #versi…

离散Fourier变换的一种理解方法

1. 离散Fourier变换的定义 一个信号 x 的离散Fourier变换(Discrete Fourier Transform,简记为DFT)定义为 , 其逆(inverse) Fourier变换(简记为 IDFT)定义为 。 (译注:符号“≜”表示“根据定义,左边等于右边”。) 其中&#x…

电脑连接手机热点无法访问 GitHub

电脑连接手机热点无法访问 GitHub 解决方案 修改本地请求配置 修改 Windows 中 hosts 文件,路径: C:\Windows\System32\drivers\etc 添加内容: 140.82.112.4 www.github.com 140.82.112.4 github.com 提示:Windows 有权限限制&am…

智慧班牌云平台源码 (人脸识别、信息发布、校园风采、家校互通、教务管理、考勤管理)

电子班牌是一款智慧校园的管理工具,也是校园的多媒体展示平台,智慧电子班牌系统是专为学校智慧教育设计的一款智慧校园的管理工具,融合了多媒体信息发布、校园风采、家校互通、教务管理、考勤管理、日常办公等一系列应用。具备智慧教育功能和…

Mybatis的动态SQL及关键属性和标识的区别(对SQL更灵活的使用)

( 虽然文章中有大多文本内容,想了解更深需要耐心看完,必定大有受益 ) 目录 一、动态SQL ( 1 ) 是什么 ( 2 ) 作用 ( 3 ) 优点 ( 4 ) 特殊标签 ( 5 ) 演示 二、#和$的区别 2.1 #使用 ( 1 ) #占位符语法 ( 2 ) #优点 2.…

Mac Flutter web环境搭建

获取 Flutter SDK 下载以下安装包来获取最新的 stable Flutter SDK将文件解压到目标路径, 比如: cd ~/development $ unzip ~/Downloads/flutter_macos_3.13.0-stable.zip 配置 flutter 的 PATH 环境变量: export PATH"$PATH:pwd/flutter/bin" // 这个命…

java版数字藏品深色UI仿鲸探数藏盲盒合成短视频卡牌模式支持高并发

此版本为JAVA开发的版本 系统稳定 数据库MYSQL 前端uniapp 支持百万级用户,急速搭建 主要功能介绍 艺术品发售 藏品发售用户可以购买 后台藏品可设置不同稀有度 二级市场 用户的藏品可以直接挂售到二级市场商城 其他用户可以购买自己的藏品 合成 可以通过…

STM32 F103C8T6学习笔记12:红外遥控—红外解码-位带操作

今日学习一下红外遥控的解码使用,红外遥控在日常生活必不可少,它的解码与使用也是学习单片机的一个小过程,我们将通过实践来实现它。 文章提供源码、测试工程下载、测试效果图。 目录 红外遥控原理: 红外遥控特点: …

MyBatis进阶:掌握MyBatis动态SQL与模糊查询、结果映射,让你在面试中脱颖而出!!

目录 一、引言 二、MyBatis动态SQL 2.1.if元素使用 2.2.foreach元素使用 三、MyBatis模糊查询 ①使用#{字段名} ②使用${字段名} ③使用concat{%,#{字段名},%} 总结 四、MyBatis结果映射 4.1.案例演示 4.1.1.resultType进行结果映射 4.1.2.resultMap进行结果映射 …