带你读《Apache Doris 案例集》——07查询平均提速700% ,奇安信基于 Apache Doris 升级日志安全分析系统(2)

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 Tair(兼容Redis),内存型 2GB
简介: 带你读《Apache Doris 案例集》——07查询平均提速700% ,奇安信基于 Apache Doris 升级日志安全分析系统(2)

更多精彩内容,欢迎观看:

带你读《Apache Doris 案例集》——07查询平均提速700% ,奇安信基于 Apache   Doris 升级日志安全分析系统(1):https://developer.aliyun.com/article/1405710


存储成本降低近40%

 

在看到写入性能的大幅提升后,Apache Doris存储空间占用也给我们带来了惊喜。在开启倒排索引的前提下,存储空间比原系统不具备倒排索引还要略低,压缩比从1:4.3提高至1:5.7

 

通过对比 Apache Doris 在磁盘上存储的文件大小,同一份数据的索引文件(.idx)与数据文件(.dat)大小相差无几。换言而之,增加索引后Doris数据膨胀率大约在1倍左右,与许多数据库和检索引擎3-5倍的膨胀率相比, Doris 的数据存储空间占用相对较低。经过研究发现,ApacheDoris 采用了列式存储和ZSTD 压缩算法来优化存储空间占用。Doris 将原始数据和倒排索引都以列的形式存储,使同一列的数据被存储在相邻位置,从而实现了更高的压缩率。


ZSTD 是一个优秀的新型压缩算法,使用了智能优化算法,相较于常见的 GZIP 算法, ZSTD 

有更高的压缩率更和更快的压缩解压速度,尤其在处理日志场景时表现非常出色。

 

查询性能平均提升690%

 

对于业务最关注的查询性能,我们从线上查询日志进行去重后分析出79SQL,在同一天总数(1000亿条) 、同样规模的集群(10BE 节点)上对比测试Apache Doris与原系统的查询耗时。 

 

我们发现,与原系统相比,所有的查询语句均有明显提升,整体查询性能提升近7倍,有26SQL查询语句性能提升10倍以上,8SQL 查询提升10-20倍、14SQL 查询提升20-50倍、还有4SQL 查询提升50倍以上。最大差异的一条SQL 查询语句为Q43,在原系统中执行时间接近一分钟,在Apache Doris 中仅需不到1秒,其性能差异高达到88倍。 

 image.png 

 针对性能提升幅度高的查询,我们进行了对比分析并发现了其中几个共同点:

1.倒排索引对关键词查找的加速: Q23、Q24Q30Q31Q42Q43Q50 

  - - 例 如q43  提升88.2倍
   SELECT         count()from        table2
   WHERE(event_time     >=1693065600000    and     event_time    <1693152000000)
      AND(rule_hit_big                                MATCH'xxxx');

倒排索引的原理是在数据写入时将每一行文本切分成单词,并在索引中记录每个单词在哪些行出 现过,例如下图中的"machine"  在第127201 行出现过,当需要检索包含某个词的数据时,只需要在索引中查这个词在哪些行出现,将对应行号的数据读取出来即可。

 

这种基于倒排索引进行关键词检索的技术,相较于基本的暴力扫描后进行文本匹配具有显著的优势, 一方面极大地减少了需要读取的数据量;另一方面,在查询过程中无需进行文本匹配操作,因此查询效率往往提升一个数量级甚至更高。

image.png

 

2.NGram   BloomFilter索引对LIKE的加速:Q75、Q76、Q77、Q78  

- - 例 如q75  提升44 .  4倍
     SELECT     *FROM     tablel
     WHERE     ent_id                     ='xxxxx'
         AND  event_date  ='2023-08-27'
         AND file_level =70
         AND    rule_group_id    LIKE   'adid:%'
    ORDER       BY       event_time       LIMIT       100;

 对于要查找的非一个完整关键词的场景, LIKE 仍然是有用的查询方式, Apache Doris NGram BloomFilter 索引能对常规的 LIKE 进行加速。

 

 

NGram    BloomFilter 索引与普通 BloomFilter   索引不同,它不是将整个文本放入 BloomFilter, 而是将文本分成连续的子串,每个子串长度为 n,并将他们放入 NGram BloomFilter 中。对于cola   LIKE  '%pattern%'的查询,将'pattern     ' 按照同样的方式分成长度为 n的子串,判断每个子串在中是否存在,如果有一个子串不存在,则说明 BloomFilter   对应的数据块中没有跟'pattern '匹配的数据块,因此通过跳过数据块扫描的步骤,达到加速查询的效果。

 

3.满足条件的最新TopN  条日志明细查询优化:Q19-Q29    

 

- - 例 如q22,  提升50 .3倍
    SELECT       *FROM       table1
     where      event_date      ='2023-08-27'and      file_level      =70
        and      ent_id      ='nnnnnnn'and      file_name      ='xxx.exe'
     order  by  event_time  limit   100;

 这种 SELECT*FROM t WHERE xxx ORDER BY xx LIMITn  的查询,在查找满足某种条件的最新n 条日志时使用频率非常高,ApacheDoris 针对这种 SQL 查询模式进行了专门的优化,根据查询的中间状态确定排序字段的动态范围,并利用自动动态谓词下推的方式,避免读全部数据进行排序取TopN,从而减少需要读取的数据量(有时甚至可以减少一个数量级),进而提升了查询效率。

 

可视化运维管控和可视化查询WebUl,   最大化减少运维和探索分析成本

 为了提高日常集群维护效率,我们使用了飞轮科技免费开放的可视化集群管理工具Cluster ManagerforApacheDoris   (以下简称 Doris   Manager)Doris  Manager提供的功能可以满足日常运维中集群监控、巡检、修改配置、扩缩容、升级等操作,降低登陆机器手动操作的麻烦和误操作风险。

 

image.png

 

除了管控ApacheDoris集群之后Doris  Manager还集成了类似Kibana的可视化日志探索分

WebUl,  对于习惯 ELK 日志分析的用户非常友好,支持关键词检索、趋势图展示、趋势图拖

拽日期范围、明细日志平铺和折叠展示、字段值过滤等交互方便的探索式分析,跟日志场景探索

下钻的分析需求很契合。

 image.png

 

总结与规划 

 

在跟随Apache Doris  2.0-alpha,2.0-beta,2.0正式版本发布的节奏,我们根据业务场景进行了详细的评测,也为社区反馈了不少优化建议,得到社区的积极响应和解决。系统经历试运行一个月之后,我们将2.0.1版本正式用于生产环境,替换了原系统集群,完成架构升级改造,实现了写入性能、查询性能、存储成本、运维成本等多方面收益:

 

写入性能提升3倍以上:目前,奇安信日志分析平台每日平均有数千亿的新增安全日志数据,通过 Doris  Routine  Load   将数据实时稳定写入库,保障数据低延迟高吞吐写入。

 

查询性能平均提升7倍:查询响应时间大幅减少,与之前的查询效率相比达到平均7倍提升,其中业务特别关注的全文检索速度达到20倍以上的提升,助力日志分析与网络安全运营效率。 

 

●高效便捷的可视化管理:Cluster Managerfor Apache Doris工具提供了可视化集群监控告警平台,满足日常集群监控等一系列操作,同时WebUl  多种功能为分析人员提供了操作简 单、使用便捷的交互式分析。总而言之, Doris 的易用性、灵活性大幅降低了开发、运维、分析人员的学习与使用成本。 

 

后续我们还将在日志分析场景下探索更多Apache  Doris 的能力。我们将扩大 JSON  数据类型的 相关应用,加强系统对于半结构化数据深度分析的能力。同时,我们也非常期待 Apache    Doris 2.1版本中新增的 Variant 可变数据类型,支持存储任意结构的JSON  数据,支持字段个数与类型的变化,让业务人员灵活定义特殊字符,以更好地实现半结构数据Schema  Free分析需求。


非常感谢SelectDB 团队一直以来对我们的技术支持,助力奇安信走向体系化防御、数字化运的网络日志安全管理,帮助客户准确识别、保护和监管网络设备与各类系统,确保业务人员在任何时候都能够安全、可信、稳定地访问数据与业务。

 

最后,我们也将持续参与到 Apache Doris 社区建设中,将相关成果贡献回馈社区,希望

Apache  Doris飞速发展,越来越好!

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
1月前
|
存储 SQL Apache
Apache Doris 开源最顶级基于MPP架构的高性能实时分析数据库
Apache Doris 是一个基于 MPP 架构的高性能实时分析数据库,以其极高的速度和易用性著称。它支持高并发点查询和复杂分析场景,适用于报表分析、即席查询、数据仓库和数据湖查询加速等。最新发布的 2.0.2 版本在性能、稳定性和多租户支持方面有显著提升。社区活跃,已广泛应用于电商、广告、用户行为分析等领域。
Apache Doris 开源最顶级基于MPP架构的高性能实时分析数据库
|
2月前
|
Web App开发 存储 监控
iLogtail 开源两周年:UC 工程师分享日志查询服务建设实践案例
本文为 iLogtail 开源两周年的实践案例分享,讨论了 iLogtail 作为日志采集工具的优势,包括它在性能上超越 Filebeat 的能力,并通过一系列优化解决了在生产环境中替换 Filebeat 和 Logstash 时遇到的挑战。
129 13
|
1月前
|
监控 Cloud Native BI
8+ 典型分析场景,25+ 标杆案例,Apache Doris 和 SelectDB 精选案例集(2024版)电子版上线
飞轮科技正式推出 Apache Doris 和 SelectDB 精选案例集 ——《走向现代化的数据仓库(2024 版)》,汇聚了来自各行各业的成功案例与实践经验。该书以行业为划分标准,辅以使用场景标签,旨在为读者提供一个高度整合、全面涵盖、分类清晰且易于查阅的学习资源库。
|
2月前
|
SQL 分布式计算 NoSQL
大数据-164 Apache Kylin Cube优化 案例1 定义衍生维度与对比 超详细
大数据-164 Apache Kylin Cube优化 案例1 定义衍生维度与对比 超详细
36 1
大数据-164 Apache Kylin Cube优化 案例1 定义衍生维度与对比 超详细
|
3月前
|
存储 JSON 物联网
查询性能提升 10 倍、存储空间节省 65%,Apache Doris 半结构化数据分析方案及典型场景
本文我们将聚焦企业最普遍使用的 JSON 数据,分别介绍业界传统方案以及 Apache Doris 半结构化数据存储分析的三种方案,并通过图表直观展示这些方案的优势与不足。同时,结合具体应用场景,分享不同需求场景下的使用方式,帮助用户快速选择最合适的 JSON 数据存储及分析方案。
查询性能提升 10 倍、存储空间节省 65%,Apache Doris 半结构化数据分析方案及典型场景
|
2月前
|
消息中间件 存储 druid
大数据-156 Apache Druid 案例实战 Scala Kafka 订单统计
大数据-156 Apache Druid 案例实战 Scala Kafka 订单统计
49 3
|
2月前
|
存储 数据可视化 安全
一个简单案例,带你看懂GC日志!
一个简单案例,带你看懂GC日志!
一个简单案例,带你看懂GC日志!
|
2月前
|
存储 大数据 分布式数据库
大数据-165 Apache Kylin Cube优化 案例 2 定义衍生维度及对比 & 聚合组 & RowKeys
大数据-165 Apache Kylin Cube优化 案例 2 定义衍生维度及对比 & 聚合组 & RowKeys
47 1
|
2月前
|
消息中间件 druid 大数据
大数据-153 Apache Druid 案例 从 Kafka 中加载数据并分析(二)
大数据-153 Apache Druid 案例 从 Kafka 中加载数据并分析(二)
41 2
|
2月前
|
消息中间件 分布式计算 druid
大数据-153 Apache Druid 案例 从 Kafka 中加载数据并分析(一)
大数据-153 Apache Druid 案例 从 Kafka 中加载数据并分析(一)
60 1

推荐镜像

更多
下一篇
DataWorks