
58集团是中国互联网生活服务领域的领导者,旗下有国内 大的生活服务平台,覆盖各类业务场景,例如车业务、房产业务、本地服务、招聘业务、金融业务等等。
随着业务的高速发展,越来越多的分析需求涌现,例如:安全分析、商业智能分析、数仓报表等。这些场景的数据体量都较大,对数据分析平台提出了很高的要求。为了满足这些分析型业务的需求,DBA团队从2021年初就开始调研各类分析型数据库,其中包括DorisDB、TiFlash、ClickHouse等,评测他们的性能及功能。
总体评测下来,DorisDB表现全面,在单表/多表查询性能、物化视图及SQL支持等方面能力都契合集团业务需求。目前,我们已经落地了两套DorisDB集群,还有1-2套正在测试阶段,后续会进行进一步推广和落地更多应用。
一、评测信息
我们从两个方面来评测以上这些分析型数据库:一个是功能,一个是性能。每种数据库都有各自的特点。
1.功能方面
2.性能方面
2021年初,我们完整对比过3种数据库的性能,包括TiFlash(4.0.10)、ClickHouse(20.3.8.53)、DorisDB(1.11.0)单表及多表join的性能情况。TiDB5.0的TiFlash已经支持MPP,此处为4.0版本,无MPP。
测试使用业界流行的Star Schema Benchmark星型模型测试集。结论如下:
·单表/多表查询,DorisDB总体时间均 短。
·单表查询:DorisDB 快次数 多,ClickHouse次之。
·多表查询:DorisDB所有执行均 快。
关于TiDB/TiFlash
·TiDB/TiFlash总体时间单表/多表查询均 长。
·TiDB执行计划多数走TiKV,导致执行时间长,且数据量越多,执行时间越长。
·TiDB强制走TiFlash,单表多数提速多,多表多数变慢,但4.0.10版本的执行计划多数不走。
关于Clickhouse
·ClickHouse多表查询需要更改SQL,使类型一致才可以,且字段名、表名区分大小写。
·ClickHouse单机性能强悍,性价比较高。
·ClickHouse大单表查询方式效率好,多表关联效率降低明显。
关于DorisDB
·DorisDB单表和多表关联查询速度都非常快。
【单表查询结果】
【多表关联查询结果】
二、业务需求及应用
1.安全分析相关业务
每天,内部服务器上的各类操作和运行情况,是内部安全人员比较关心的。但是服务器上每天有大量的信息,如何能快速收集落地、统一实时分析,是这个数据分析场景面临的挑战。具体来说,安全分析业务需要应对以下情况:
·写入数据量大,每天大约几亿的数据需要落地;
·实时快速的分析支持,例如: 近15分钟,机器信息的情况是怎样的;
·需要定期进行数据清理;
·数据量不断累积,数据总量规模增长快。
综合评估后,我们选择了DorisDB来支持安全分析相关业务。在使用初期,我们使用了DorisDB的明细模型(即保留所有历史数据),20天左右,数据行数总量就800亿+了,磁盘空间占用8T左右,由于明细数据量庞大导致查询性能也受到影响。
后与内部研发人员讨论,业务分析并不需要详细的历史明细,数据按照指定时间粒度进行聚合汇总即可。便将数据模型改成聚合模型,设置日期、小时和15分钟三个时间维度,指标数据按照这个级别的时间维度进行聚合,聚合后每天新增的数据在10亿左右,数据量降低了75%,查询性能也得到大幅提升。且采用kafka+routine load的方式在DorisDB中进行导入聚合,避免了引入冗余的组件,统一了技术栈。
2.DBA内部业务
MySQL中间件,我们使用的ProxySQL,ProxySQL支持展示SQL情况。但是操作较为繁琐,每次需要重置,才重新开始统计。如何分析指定时间的SQL情况,是困扰我们的另一问题。
每个ProxySQL有自己的全日志,我们可以分析全日志来获取需要的信息。 一个架构方案,我们想到了使用ES,ProxySQL全日志–>Filebeat采集–>Kafka–>Logstash–>ES。但是实际使用中,发现虽然可以查看流水,但是分析时就比较麻烦,不如写SQL的方便。
后来架构又改成了 ProxySQL全日志–>Filebeat采集–>Kafka–>DorisDB,这样就可以进行快速分析了。
版权声明:本文为原创文章,版权归 头条123 所有,欢迎 本文,转载请保留出处!