前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SelectDB肖康:Apache Doris在日志存储与分析场景的实践

SelectDB肖康:Apache Doris在日志存储与分析场景的实践

作者头像
用户6543014
发布2023-03-02 14:43:42
1.4K0
发布2023-03-02 14:43:42
举报
文章被收录于专栏:CU技术社区CU技术社区

本文根据肖康在【第十三届中国数据库技术大会(DTCC2022)】线上演讲内容整理而成。

基于Apache Doris大数据实时MPP数据库,构建新一代云原生实时数仓,充分发挥Apache Doris高性能、易用MPP引擎能力和云计算极致弹性,解决海量日志等半结构化、非结构化数据存储成本高、分析困难的痛点。

Apache Doris基本介绍

Apache Doris是一个基于MPP架构的高性能、实时的分析型数据库,以极速易用的特点被人们所熟知,仅需亚秒级响应时间即可返回海量数据下的查询结果,不仅可以支持高并发的点查询场景,也能支持高吞吐的复杂分析场景。

基于此,Apache Doris在多维报表、即席查询、用户画像、实时大屏、日志分析、数据湖查询加速等诸多业务领域都能得到很好应用。

Apache Doris于2022年6月成功从Apache孵化器毕业,正式成为Apache顶级项目,截止目前Apache Doris社区已经聚集了来自不同行业百余家企业的超400位贡献者,每月活跃贡献者人数也接近100位。

Apache Doris如今在中国乃至全球范围内都拥有着广泛的用户群体,截止目前,Apache Doris已经在全球范围内1000家企业的生产环境中得到应用。

在中国市值或估值排行前50的互联网公司中,有超过80%长期使用Apache Doris,包括百度、美团、小米、京东、字节跳动、腾讯、快手、网易、微博、新浪、360等,同时在一些传统行业如金融、能源、制造、电信等领域也有着丰富的应用。

Apache Doris的定位是极速易用实时统一的多模分析型数据库。不同类型的数据源经过ETL,让数据进入Doris,可以进行面向企业内部或外部的BI分析、日志分析等,还可以直接对存储在湖仓中的数据进行查询。用户可以通过 Apache Doris 构建多种不同场景的数据分析服务、同时支撑在线与离线的业务负载、高吞吐的交互式分析与高并发的点查询;通过一套架构实现湖和仓的统一、在数据湖和多种异构存储之上提供无缝且极速的分析服务;也可通过对日志/文本等半结构化乃至非结构化的多模数据进行统一管理和分析、来满足更多样化数据分析的需求。

Apache Doris在易用性方面有很大特色,其跟MySQL协议高度兼容,MySQL应用可以直接对接。

典型日志存储与分析场景

在日志存储与分析场景,很多数据如用户程序、审计日志等数据都需要实时写入进行统一存储与实时分析,日志对于保障系统、业务稳定性至关重要,常用于故障排查、监控告警等。

日志存储与分析场景具有三大特点:

1, 数据写入吞吐量大,还要实时可见;

2, 数据存储量大,还要成本低;

3,交互式查询速度快,且需要支持文本检索、时间排序。

目前典型方案有两大类:一类是以ES为代表的倒排索引检索架构,另一类是以Loki为代表的元数据索引/无索引架构。

具体分析如下:ES在实时写入吞吐方面较弱,在存储规模方面ES一般采用存算一体架构,数据存在本地,扩展规模有一定限制,存储成本较高,但ES在交互式查询性能上表现更好更快;而Loki在实时写入吞吐方面更高,存储规模更大,存储成本更低,但在交互式查询性能上表现更慢。

简单对比总结:ES为代表的索引架构优化查询性能,牺牲写入性能和存储空间;Loki为代表的无索引架构优化写入性能和存储空间,牺牲查询性能。

那么问题来了:优化这个牺牲那个,是不是头痛医头脚痛医脚了?倒排索引是0-1选择吗,它是问题的全部吗?最为回顾,向量化计算成熟前,是不是都认为OLAP加速要靠预计算,而后来向量化加速是不是打破了固有认知? 在日志存储分析领域,我们也找到了突破点。

日志场景解决方案

作为 ApacheDoris的商业化公司,SelectDB团队基于 ApacheDoris内核开发了云原生版本 SelectDBCloud,并推出了面向日志分析场景的解决方案。

基于以上问题,日志场景解决方案的想法基于Doris高性能向量化引擎底座,再加上SelectDB存算分离架构、轻量级倒排索引和时序数据管理达到更好的效果。

举例:在上游写入方面,我们配置Logstash使用内置的http output plugin将数据写入SelectDB。

在下游查询方面,可观测性:Grafana中使用内置MySQL数据源,导入已有模板配置可视化日志看板、检索界面;商业智能:Superset等BI工具通过MySQL协议,即可开箱即用访问SelectDB进行可视化BI分析。

性能测试效果如下:

测试说明:

1,测试环境是3台16c 64g云主机组成的集群

2,测试数据和测试case来源于ES官方性能benchmark中http_logs,数据总量32GB,2.47亿行

3,查询时间是ES官方性能benchmark中的11个query,每个串行执行100次的总时间

4,写入速度越高越好,磁盘空间越低越好,查询时间越低越好

性能测试结果显示:在写入速度方面,SelectDB达到ES的4.2倍,存储空间只需要ES的五分之一,查询性能是ES的2倍。

关键技术解析

关键技术1:MPP查询与向量化引擎

在向量化方面,我们把行式变成了列式内存布局,向量化计算框架大幅减少虚函数调用,大幅提升cache命中率。高效利用SIMD指令。在宽表聚合场景下性能提升5-10倍。

针对MPP查询引擎,我们采用分布式MPP的查询框架,节点间和节点内都并行执行,大幅提升效率,支持大表的shuffle分布式join。

关键技术2:多重算子优化与查询优化器

在算子优化方面,采用自适应两阶段聚合算子优化,JOIN/TOPN runtime filter优化为连接列生成filter推到左表,支持in/min/max/bf等filter,filter自动穿透到最底层,SSB部分查询依赖RF有2-10倍提升。

在查询优化器方面,新一代智能优化器(Nereids)支持CBO和RBO,RBO常见规则常量折叠、子查询改写、谓词下推等,CBO支持Join Reorder。

值得一提的是,在性能方面我们取得佳绩,多项指标登顶ClickBenck,在近半数SQL在所有产品中更优,查询总耗时远低于行业竞品。

关键技术3:轻量级倒排索引

支持快速检索,支持文本检索、普通数值/日期查找,支持多条件AND OR组合;扩展数据库引擎,内置倒排索引,避免了外挂式的跨系统通信、冗余存储。

为日志场景精简优化索引结构,简化norm、score等,采用bitmap等优化倒排表;列式存储+ ZSTD高效压缩算法,本身列式存储压缩率高,zstd比gzip快5倍且压缩率更高,数据和索引都进行压缩;采用C++和向量化的高性能实现,单核吞吐>20MB/s vs ES 5MB/s。

关键技术4:存算分离云原生架构

在云服务方面的重要关键点包括,存算分离,以对象存储为主存储;共享缓存,写入即缓存提高性能;弹性扩展,利用云的弹性加速查询;负载隔离,避免业务互相影响。

这样做的好处是将存储成本大幅降低,我们认为,存储成本=存储空间*单位成本。

在存储空间方面,我们将原始数据行存变成了列式存储,将复杂倒排索引变成了专为日志简化的索引,将普通压缩算法变成了日志高压缩比;

在单位成本方面,我们将原有的冷热数据全本地盘变成了冷热分离,将存储计算同步扩容变成了存储分离独立扩容。

这样的效果实现了存储空间降至五分之一,单位成本降至三分之一,最终实现存储成本降至十五分之一,达到突破性的一个量级降低。

关键技术5:高吞吐实时写入

我们让客户端进行实时小批量写入,在SelectDB服务端进行攒批,可实现秒级flush可见,向量化索引吞吐几十GB/s,写放大更优的时序compaction。

关键技术6:快速交互式查询

快速交互式查询面临两大挑战:挑战一,如何从海量日志中全文检索关键词;挑战二:如何从时间排序取满足条件的最新N条日志。

针对挑战一,我们基于分区、主键的时间范围快速跳过,基于倒排索引的全文检索精确定位;针对挑战二,我们按时间排序的时序存储模型,动态剪枝的TopN查询算法。最终实现百亿日志检索秒级响应。

关于开源

SelectDB一直秉承开源开放的价值观,对于上面介绍的倒排索引、TopN优化、时序Compaction优化等关键技术,已经贡献到ApacheDoris社区,预计在2023年Q1的Doris 2.0版本中正式发布,2月份也会开放Doris 2.0 preview版本供大家试用,欢迎刚兴趣的朋友们参与试用和技术交流,一起繁荣ApacheDoris社区。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-02-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 SACC开源架构 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档