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

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
简介: 带你读《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日志并进行多维度分析。
相关文章
|
5天前
|
存储 Linux Docker
centos系统清理docker日志文件
通过以上方法,可以有效清理和管理CentOS系统中的Docker日志文件,防止日志文件占用过多磁盘空间。选择合适的方法取决于具体的应用场景和需求,可以结合手动清理、logrotate和调整日志驱动等多种方式,确保系统的高效运行。
8 2
|
17天前
|
XML JSON 监控
告别简陋:Java日志系统的最佳实践
【10月更文挑战第19天】 在Java开发中,`System.out.println()` 是最基本的输出方法,但它在实际项目中往往被认为是不专业和不足够的。本文将探讨为什么在现代Java应用中应该避免使用 `System.out.println()`,并介绍几种更先进的日志解决方案。
42 1
|
24天前
|
监控 网络协议 安全
Linux系统日志管理
Linux系统日志管理
38 3
|
29天前
|
监控 应用服务中间件 网络安全
#637481#基于django和neo4j的日志分析系统
#637481#基于django和neo4j的日志分析系统
32 4
|
1月前
|
监控 Linux 测试技术
Linux系统命令与网络,磁盘和日志监控总结
Linux系统命令与网络,磁盘和日志监控总结
52 0
|
3月前
|
存储 消息中间件 Java
Apache Flink 实践问题之原生TM UI日志问题如何解决
Apache Flink 实践问题之原生TM UI日志问题如何解决
44 1
|
22天前
|
SQL Java API
Apache Flink 2.0-preview released
Apache Flink 社区正积极筹备 Flink 2.0 的发布,这是自 Flink 1.0 发布以来的首个重大更新。Flink 2.0 将引入多项激动人心的功能和改进,包括存算分离状态管理、物化表、批作业自适应执行等,同时也包含了一些不兼容的变更。目前提供的预览版旨在让用户提前尝试新功能并收集反馈,但不建议在生产环境中使用。
522 13
Apache Flink 2.0-preview released
|
27天前
|
存储 缓存 算法
分布式锁服务深度解析:以Apache Flink的Checkpointing机制为例
【10月更文挑战第7天】在分布式系统中,多个进程或节点可能需要同时访问和操作共享资源。为了确保数据的一致性和系统的稳定性,我们需要一种机制来协调这些进程或节点的访问,避免并发冲突和竞态条件。分布式锁服务正是为此而生的一种解决方案。它通过在网络环境中实现锁机制,确保同一时间只有一个进程或节点能够访问和操作共享资源。
61 3
|
2月前
|
SQL 消息中间件 关系型数据库
Apache Doris Flink Connector 24.0.0 版本正式发布
该版本新增了对 Flink 1.20 的支持,并支持通过 Arrow Flight SQL 高速读取 Doris 中数据。
|
3月前
|
消息中间件 监控 数据挖掘
基于RabbitMQ与Apache Flink构建实时分析系统
【8月更文第28天】本文将介绍如何利用RabbitMQ作为数据源,结合Apache Flink进行实时数据分析。我们将构建一个简单的实时分析系统,该系统能够接收来自不同来源的数据,对数据进行实时处理,并将结果输出到另一个队列或存储系统中。
207 2

推荐镜像

更多
下一篇
无影云桌面