58集团 x DorisDB:全面升级数据分析能力,满足多场景业务分析需求?
58集团是中国互联网生活服务领域的领导者,拥有国内最大的生活服务平台,复盖汽车业务、房地产业务、当地服务、招聘业务、金融业务等各种业务场景。随着业务的快速发展,越来越多的分析需求出现,如安全分析、商业智能分析、数仓报告等。这些场景的数据体很大,对数据分析平台提出了很高的要求。为了满足这些分析业务的需求,DBA团队从2021年初开始调查各种分析数据库,包括DorisDB、TiFlash、ClickHouse等,评价其性能和功能。
总体评价,DorisDB全面,在单表/多表查询性能、物化视图、SQL支持等方面能力符合集团业务需求。目前,我们已经落地了两套DorisDB集群,还有1-2套正在测试阶段,后续会进行进一步推广和落地更多应用。
一、评价信息
我们从两个方面评价以上分析型数据库。一个是功能,另一个是性能。每个数据库都有自己的特点。
1.功能方面
<.性能方面2021年初,我们完全比较了3个数据库的性能,包括TiFlash(4.0.10)、ClickHouse(20.3.53)、DorisDB(1.1)、多个数据库的性能。TiDB5.0的TiFlash已经支持MPP里4.0版本,无MPP。
测试使用行业流行的StarSchema、Benchmark星模测试集。结论如下:
单表/多表查询,DorisDB整体时间最短。
单表查询:DorisDB速度最快,ClickHouse次。
多表查询:DorisDB的所有执行都最快。
TiDB/TiFlash
TiDB/TiFlash整体时间表/多表查询最长。TiDB执行计划多走TiKV,执行时间长,数据量多,执行时间长。
TiDB强制执行TiFlash,单表多加快速度,多表慢,但4.0.10版本的执行计划多不去。
关于Clickhouse
Clickhouse多表查询,需要更改SQL,使类型一致,区分段名、表名的大小写。ClickHouse单体性能强,性价比高。
ClickHouse大表查询方式效率好,多表相关效率明显降低。
关于DorisDB
DorisDB表相关查询速度非常快。
【单表查询结果】
【多表关联查询结果】
二、业务需求及应用
1.安开发者_StackOverflow社区全分析相关业务
每天,内部服务器上的各类操作和运行情况,是内部安全人员比较关心的。然而,服务器上每天都有大量的信息。如何快速收集和统一实时分析是这个数据分析场景的挑战。具体来说,安全分析业务应对
数据量大,每天需要数亿数据落地
实时快速分析支持。例如,最近15分钟,机械信息的情况如何
需要定期整理数据
数据量不断累积,数据总量规模增加快。
综合评价后,选择DorisDB支持安全分析相关业务。在使用初期,我们使用了DorisDB的详细模型(即保留所有历史数据),20天左右,数据行数总量为800亿人,磁盘空间占有8T左右,详细数据量庞大,查询性能也受到影响。
后与内部研发人员讨论,业务分析不需要详细的历史细节,数据可以根据指定时间的粒度汇总。便将数据模型改成聚合模型,设置日期、小时和15分钟三个时间维度,指标数据按照这个级别的时间维度进行聚合,聚合后每天新增的数据在10亿左右,数据量降低了75%,查询性能也得到大幅提升。且采用kafka routine load的方式在DorisDB中进行导入聚合,避免了引入冗余的组件,统一了技术栈。
2.DBA内部业务
MySQL中间我们使用的ProxySQL,ProxySQL支持展示SQL。但是,操作很麻烦,每次重置都要重新开始统计。如何分析指定时间的SQL情况,是困扰我们的另一个问题。
每个ProxySQL都有自己的全日志,我们可以分析全日志来获取所需的信息。第一个结构方案是使用ES、ProxySQL全日志ndashgtfilebeat采集ndashgtkafkandashgtlogstashndashgtess。但是,在实际使用中,可以看到流水,但是分析的时候很麻烦,写SQL比较方便。
之后,结构变更为ProxySQL全日志ndashgtfilebeat采集ndashgtkafkandashgtdorisDB,可以迅速分析。
另一个问题,因为线上的ProxySQL的日志量特别大,不能所有集群都开,我们设置了可以选择开启,这样有需要的集群才进行分析。降低存储的压力。
举例:分析某30分钟某集群的SQL执行情况,按照次数排序,查询很快。
除了上述两个场景之外,DorisDB还被用在了销售使用的报表系统等场景中,包含实时数据分析等业务场景,共50 张表,占用约100T存储空间,查询并发量100-500 。
三、系统运维
1.数据接入
DorisDB支持的数据导入方式很丰富,例如本地文件、HDFS、Kafka(支持csv、json格式)、外表、批量SQL等。数据访问时需要注意的问题如下:
HDFS导入需要提供Namenode的信息,如果提供不方便就无法支持。
外表模式,创建外表后,可以使用insert into select的方式,循环导入到DorisDB的本地表,能比较方便的从MySQL、TiDB导入数据。
日常最常用的是KafkaJson格式的数据,需要开发提供
表格段、段落类型和模型(详细模型、聚合模型和更新模型)。
kafka信息:kafka_broker_list、kafka_topic、client.id等。
Kafka的方式,DBA制作表和导入任务可以导入数据,日常需要注意的是写小工具,看Kafka的数据信息,指出字段,保证成功率。
查看导入任务:SHOWW-ROUTINE-LOADG;关注Statistic、ErrorLogUrls。
2.集群结构
目前为单集群,3个FE、3个BE、Broker按需设置,建立1套监视PrometheusGrafana),建议使用kafka访问数据。
3.运输和自动化
因为DorisDB标准版没有管理部件,所以DBA自己需要制定
标准。例如,运输标准、开发访问标准等
自动配置
自动扩张容量
自动升级
展示、登录构筑开源监视自动配置的
自动配置警报、性能警报、
自动配置的
相关运输情况、磁盘状况、集体状况、集体状况等
目前,我们自己已经实现了一些运输规范的制定。例如群端口、目录、开拓结构等,开发了开拓工具:qdorisdb,可以看到所有集群、指定集群、注册、监视节点信息等。
后期我们开发相关的自动化管理工具,整合到我们内部的CDB平台,开发相关报表、工单等,开发人员使用方便。
【看指定集群拓扑】:
【看所有集群】:
4.服务器
现在我们使用以下机器进行配置,后期考虑使用虚拟机配置FE节点。
四、发现的问题和注意事项
如果想混合配置的话,需要事先计划好端口,集团之间需要一定的间隔
DorisDB升级速度快,如果遇到bug,可以咨询官方,及时升级回避
查询报告错误:2021-05-0911:38:56-WARN/p>
mysql.jdbetc.p>
<但还有不少业务场景需要用其他数据库来服务,目前58DBA提供了多种数据库,方便业务方根据自身的场景进行选择。
总结
目前,我们已经落地了两套DorisDB集群,还有1-2套正在测试阶段,后续会进行进一步推广和落地更多应用。最后,十分感谢DorisDB鼎石科技团队专业的支持服务,希望我们能一起把DorisDB建设得更好。(作者:刘春雷 负责58同城MySQL、TiDB数据库、DorisDB的运维工作,主要从事数据库自动化、平台化的建设)
精彩评论