【DORIS是什么牌子 Doris是什么意思】3.5 性能解决方案
(1)Bitmap纵向切分建库
针对以上的问题,我们提出了一种正交的Bitmap计算的UDAF解决办法 。

我们对 Bitmap 进行纵向的切分建库,如右图所示,我们的出发点是减少或避免高32位的计算,并且进一步提升并发能力 。
具体来讲,首先我们按照 uid 进行数据纵向切分,以 rid 范围进行分片,降低单个 Bitmap 的 size 。这同时带来了一个好处,这种切分方式满足正交方式,无论在 tag 维度层面还是在 id 范围层面,同一个分片内是可以相互独立的 。基于这种正交关系,我们进一步优化分布式计算的实现 。
(2)分布式计算优化

首先在数据层面,我们让相同 id 范围的数据(即使不同 tag)也在相同的实例部署 。在数据的交并集计算上,我们让各个分片分别在各自的节点上完成计算,merge的是计算结果而不是原始数据 。这样可以让计算的节点数变多、实现并发,还可以在数据传输过程中不进行全量传输,网络通信的成本也降到最低 。
右图所示是进行 count 计算时,在本地完成了 local 的交并集计算之后只需要把 count 值给出去,最后将不同的 count 值 merge 就完成了整个计算过程 。
3.5 性能测试
经过以上的处理,我们的整体计算效率得到了很大的提升,小数据量的情况下得到了两个数量级的提升,在大数据量下我们由不可能变成了可能 。

从上图中可以看出,性能变得更加可用,可以在秒级完成我们的业务需求 。
3.6 标签索引应用在Doris基础实现的功能问题

(1)数据灌库、建库
目前还是基于之前的离线计算方式,这种方式效率不够高,但是引入新的解决方法——Enhanced Spark-based Load,这种方式现在还在测试,预计性能会有非常大的提升 。
(2)批量ID导出
Doris 自身的 SQL API 没有支持亿级数据导出 。结合业务场景 Doris 的同学帮我们想出了一种解决方法——通过修改现有的 select outfile 将 MysqlWriter 改写成 FileWriter,并且通过 Broker 把结果数据写到远端存储 。这样就可以实现批量原始 id 的数据导出,满足我们对细粒度用户数据的需求 。
4 业务效果
标签索引满足主要人群圈选业务场景
人群圈选时效从天/小时级提升到秒级响应
业务应用效率大幅度提升,支持更加灵活的业务应用
在广告、增长等方向取得良好的业务效果
5 应用指南
我们在今年8月已经将相关的代码和使用指南已经提交到 Apache Doris 的代码库,供大家分享使用:
http://doris.incubator.apache.org/master/zh-CN/extending-doris/udf/contrib/udaf-orthogonal-bitmap-manual.html

这里需要有一个额外的编译过程来满足UDAF的应用:
最终使用的时候只需要写一个select BITMAP_COUNT 就可以快速得到需要的数据结果 。

————————————————
版权声明:本文为CSDN博主「ApacheDoris」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明 。
原文链接:https://blog.csdn.net/ucanuup_/article/details/114976373
推荐阅读
- 敬业是什么意思 敬业是什么意思
- yes or no是什么意思
- 套路是什么意思网络用语 套路是什么意思
- 日志是什么意思啊 日志是什么意思
- 信用卡余额是什么意思啊 信用卡余额是什么意思
- sin是什么意思啊 sin是什么意思
- 拓客是什么意思网络用语 拓客是什么意思
- 移动中间号服务是什么意思
- 国产变频空调哪个牌子好
- 腾讯pcg是什么意思
