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

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
云数据库 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日志并进行多维度分析。
相关文章
|
1月前
|
缓存 安全 Java
阿里云数据库 SelectDB 内核 Apache Doris 2.0.6 版本正式发布
阿里云数据库 SelectDB 内核 Apache Doris 2.0.6 版本正式发布
|
1月前
|
存储 Apache
Apache Hudi Savepoint实现分析
Apache Hudi Savepoint实现分析
34 0
|
1月前
|
Apache 索引
精进Hudi系列|Apache Hudi索引实现分析(五)之基于List的IndexFileFilter
精进Hudi系列|Apache Hudi索引实现分析(五)之基于List的IndexFileFilter
17 0
|
1月前
|
SQL 存储 JSON
阿里云数据库 SelectDB 内核 Apache Doris 2.1.0 版本发布:开箱盲测性能大幅优化,复杂查询性能提升 100%
亲爱的社区小伙伴们,Apache Doris 2.1.0 版本已于 2024 年 3 月 8 日正式发布,新版本开箱盲测性能大幅优化,在复杂查询性能方面提升100%,新增Arrow Flight接口加速数据读取千倍,支持半结构化数据类型与分析函数。异步多表物化视图优化查询并助力仓库分层建模。引入自增列、自动分区等存储优化,提升实时写入效率。Workload Group 资源隔离强化及运行时监控功能升级,保障多负载场景下的稳定性。新版本已经上线,欢迎大家下载使用!
阿里云数据库 SelectDB 内核 Apache Doris 2.1.0 版本发布:开箱盲测性能大幅优化,复杂查询性能提升 100%
|
1月前
|
存储 缓存 分布式计算
Apache Hudi数据跳过技术加速查询高达50倍
Apache Hudi数据跳过技术加速查询高达50倍
38 2
|
1月前
|
Apache
Apache Hudi Rollback实现分析
Apache Hudi Rollback实现分析
25 0
|
1月前
|
存储 SQL 数据管理
阿里云数据库 SelectDB 内核 Apache Doris 如何基于自增列满足高效字典编码等典型场景需求|Deep Dive 系列
自增列的实现,使得 Apache Doris 可以在处理大规模时展示出更高的稳定性和可靠性。通过自增列,用户能够高效进行字典编码,显著提升了字符串精确去重以及查询的性能。使用自增列作为主键来存储明细数据,可以完美的解决明细数据更新的问题。同时,基于自增列,用户可以实现高效的分页机制,轻松应对深分页场景,有效过滤掉大量非必需数据,从而减轻数据库的负载压力,为用户带来了更加流畅和高效的数据处理体验。
|
1月前
|
SQL 数据可视化 Apache
阿里云数据库内核 Apache Doris 兼容 Presto、Trino、ClickHouse、Hive 等近十种 SQL 方言,助力业务平滑迁移
阿里云数据库 SelectDB 内核 Doris 的 SQL 方言转换工具, Doris SQL Convertor 致力于提供高效、稳定的 SQL 迁移解决方案,满足用户多样化的业务需求。兼容 Presto、Trino、ClickHouse、Hive 等近十种 SQL 方言,助力业务平滑迁移。
阿里云数据库内核 Apache Doris 兼容 Presto、Trino、ClickHouse、Hive 等近十种 SQL 方言,助力业务平滑迁移
|
1月前
|
存储 SQL 消息中间件
Apache Hudi:统一批和近实时分析的存储和服务
Apache Hudi:统一批和近实时分析的存储和服务
30 0
|
1月前
|
缓存 Apache 索引
Apache Hudi索引实现分析(一)之HoodieBloomIndex
Apache Hudi索引实现分析(一)之HoodieBloomIndex
20 0

推荐镜像

更多