数据价值在线化丨TiDB 在企查查数据中台的应用及 v7.1 版本升级体验

本文介绍了企查查在数据中台建设中使用 TiDB 的经验和应用。通过从 MySQL 到 TiDB 的迁移,企查查构建了基于 TiDB+ Flink 的实时数仓框架 ,充分利用了 TiDB 的分布式架构、MySQL 兼容性和完善的周边工具等特性,实现了数据的在线化处理。2023 年 9 月,企查查的 TiDB 数据库已升级至 v7.1.1 版本。文章还分享了企查查在使用 TiDB 过程中的一些好用特性和版本升级经验,包括 TiDB 开源社区的活跃以及 TiDB 的稳定性对其决策的重要性。

本文作者赵河、王云鹤, 企查查大数据架构部 DBA 团队。


企查查是一家专注于企业信用信息服务的科技公司,依托大数据、人工智能等技术,为企业提供全面、准确、及时的企业信用信息,助力企业降本增效、风险防控。2023 年 5 月,企查查正式发布全球首款商查大模型——“知彼阿尔法”。该模型基于企查查覆盖的全球企业信用数据进行训练,可以为司法、金融、风控、政务等人士提供多维度数据服务。

从 MySQL 到 TiDB 的升级之路

数据是企查查业务的核心,需要对海量数据进行清洗、分析、挖掘,才能充分释放数据价值。在引入 TiDB 之前,企查查使用 MySQL 数据库。MySQL 是一款受欢迎的开源关系型数据库,但存在单机性能瓶颈。当数据量达到一定规模后,垂直扩容只能有限提升性能,在高并发写入和复杂 SQL 查询等场景下,性能会受到单机性能的限制。

由于 MySQL 是单机数据库,在业务不中断的情况下,只能采用热备。但是,随着数据量的增长,MySQL 的热备操作会变得越来越慢,对数据库的性能产生较大影响。此外,热备数据的恢复速度也较慢。在企查查的数据流向中,爬虫采集到的数据需要先存储到数据库中,然后再由 Flink 进行清洗。由于 MySQL 不支持将数据直接投递到 Flink,因此需要通过 Flink 来读写数据库,这对 MySQL 库产生了较大的压力。

2019 年底,我们通过 TiDB 社区接触到 TiDB,并对其产生了浓厚的兴趣。经过对比选型测试,我们选择了 TiDB 数据库,结合 Flink 场景的需求,构建了 Flink+TiDB 的实时数仓框架,应用于企查查数据中台。我们选择 TiDB 的主要原因有:

 切换到 TiDB 几乎无任何学习成本

因为 MySQL 存在的诸多问题,我们迫切需要寻找一种兼容 MySQL 协议、且能解决上述问题的数据库。TiDB 在 MySQL 兼容性方面表现出色,能够兼容绝大多数 MySQL 语法和函数,包括 MySQL 生态的相关工具也都默认支持。此外,TiDB 在使用体验上与 MySQL 几乎没有差异,对于我们这些 MySQL 基础的 DBA 来说,切换到 TiDB 几乎不需要学习成本,非常亲切。

 原生分布式架构带来明显优势

在兼容 MySQL 协议的前提下,我们需要一款能灵活水平扩展的分布式数据库满足业务发展的要求。我们当时对分库分表类的分布式数据库进行了对比测试,发现对应用的开发侵入很大,且扩展性受限。TiDB 采用原生分布式数据库架构,基于 Spanner 和 F1 的论文设计。TiDB 的存储和计算分离,无中心化节点,支持任意扩缩容,支持分布式事务。此外,TiDB 的数据存储基于 Raft 共识算法,数据分片无需业务事先规划分片键,默认 3 个副本,保证了数据的高可用。TiDB 集群中的每个组件都做到了高可用设计,保证了服务的高可用。

 周边工具完善

TiDB 的周边工具非常优秀,尤其是监控体系。TiDB 的监控体系采用了 Prometheus + Grafana + Alertmanager 等通用组件设计,这使得 TiDB 的监控体系能够无缝融入到我们企业的监控告警体系中,非常方便。此外,TiDB 的监控体系非常全面,覆盖了系统运行中的各个环节,便于排查问题。TiDB 的上下游数据迁移和同步工具也比较成熟,特别是 TiCDC 工具。TiCDC 支持将 TiDB 中的数据同步到 Kafka 中,且支持 commitTS 的特性,保证了数据的一致性。TiDB 的备份和恢复工具也比较全面,支持逻辑备份(dumpling)和物理备份(BR),且不需要中断业务。在备份过程中,TiDB 可根据分布式节点的能力并行执行备份任务,效率相较 MySQL 单机备份大幅提升。

 开源社区活跃

TiDB 的社区论坛非常的活跃,我们提的问题很快就会得到其他成员的回复。社区每隔几分钟就有人提出问题或回复问题。此外,还有许多技术爱好者撰写了博客和技术文章,这对我们日常解决 TiDB 技术问题非常有帮助。我们还参加了 TiDB 社区的线下活动。大家踊跃发言,分享使用 TiDB 过程中的经验和遇到的问题。TiDB 社区组织者也能很好地记录问题并采纳开发者的建议。这种开放透明的社区互动,让我们感到使用 TiDB 很放心。

 大数据生态友好

业务写入到数据库中的数据需要经过 Flink 进行清洗。TiDB 大数据的开源生态协同比较好,这也为我们使用 TiCDC 提供了便利。通过 TiCDC 将 TiDB 的数据同步到 kafka 中,一方面方便 Flink 进行清洗;另一方面,其他下游的数据平台可以从 kafka 中消费数据,方便灵活。

TiDB 在数据中台系统的应用

TiDB 应用于企查查数据中台系统,覆盖了从数据采集到数据清洗整个流程,提供数据的存储和查询。我们将原来的 20 多套 MySQL 数据库,替换成现在的 2 套 TiDB 集群。在数据清洗流程中,我们使用 TiDB 自带的数据同步工具 TiCDC 将数据同步到下游其他的数据库和 kafka 中。目前,同步的表累计近千张。数据采集到数据清洗的数据流转,则是通过 TiCDC 捕捉变更数据同步到 Kafka 中实现的。此外,我们使用了 TiCDC 中的 CommitTs 特性,通过数据在下游更新前的乐观锁控制,保证数据的一致性。

企查查数据中台系统逻辑示意图

TiDB 数据入湖使用了自研的 Flink Hybird Source。全量分片数据通过查询 TiDB 获取,增量数据通过消费 TiCDC 推送到 Kafka 的 Changelog 获取,准实时(分钟级)写入到 数据湖 Iceberg 中。Flink Hybird Source 支持全量、增量、和全增量一体三种数据同步模式。

我们将 TiDB 的部分数据同步到 ES 系统中,为 ES 系统提供数据来源,供一些检索场景的应用使用。对于离线数据,我们使用 Chunjun/Seatunnel 同步工具将其同步到 Hive 离线数据平台中,供下游的离线数据平台跑批。目前,我们正在调研 TiFlash 的功能,计划今年将部分复杂的离线查询从 Hive 迁移到 TiDB 中,直接从 TiDB 中查询,以减少数据在多个数据栈中流转,进一步提升数据的实时性。

应用价值

1 数据价值在线化

TiDB 集群的分布式读写能力远超 MySQL,无论是从源端的爬虫写入 TiDB,还是 Flink 清洗后的数据写入,TiDB 都能够满足业务需求。结合 Flink 的实时计算能力,TiDB 可以保证数据的实时性。此外,TiDB 各节点并行读取数据的能力,大大提升了数据的分发查询能力,让数据价值得以在线化。

2 数据流转效率提升

TiDB 与上下游的数据生态兼容性良好,在接入端支持标准的 JDBC 写入,源端的数据可以直接写入到 TiDB,就像写 MySQL 一样简单。在出口端,TiDB 既可以通过 TiCDC 将数据分发到下游的 Kafka,并通过 CommitTS 特性保证业务数据的一致性,也可以通过标准接口将数据同步到下游的大数据平台,提高了企业数据的流转效率,盘活了数据资产。

使用心得

1 分享几个好用的特性

 Resource Control 满足不同业务的多租户需求

TiDB 7.1 版本引入了 Resource Control(资源管控)特性,我们迅速升级到该版本。在升级后,我们对查询平台中的正常程序账号不进行资源管控,以保证其资源得到保障;非程序账号进行部分资源管控,以防止其过多的消耗资源影响正常程序账号的查询效率。这样,我们将不同类型的业务整合到一个 TiDB 集群中,提升了资源利用率,降低了 30% 的投入成本。此外,TiDB 的资源管控功能提供了多视角的监控,可以清晰地了解各个业务模块的资源使用情况。

 gc 任意时间点内恢复

我们将 TiDB 的 GC 时间设置为 28 小时,可以读取过去 28 小时的历史数据。同时,如果发生误删除操作,我们可以将 28 小时内的数据进行闪回恢复。与 MySQL binlog 恢复相比,这种方式的恢复效率更高。

 热点自动调度

在 TiDB 3.0 和 4.0 版本中,当遇到热点问题时,TiDB 的处理能力不足,无法自动调度,需要人工干预。升级到 TiDB 7.1 版本后,热点调度能力得到了大幅提升,可以自动调度热点数据,有效解决了热点问题。

2 版本升级有感

2020 年 9 月,我们将 TiDB 升级到 v4.0.6,后续升级到 v4.0.15。在 v4.0 版本中,我们遇到了一些问题,包括:删除大量数据后引发的 TiDB 重启、DDL 阻塞以及 TiCDC 不太成熟出现的问题。在该阶段,我们遇到问题时,优先在 TiDB 社区寻求答案。社区中很多经验丰富的用户和开发者提供了帮助。我们也积极参与社区的讨论,分享自己的经验,为社区做出贡献。2023 年 8 月,我们跨大版本升级到 v6.5.3。在 v6.5 版本中,上述问题均得到了解决。感受最深的是 TiCDC 的稳定性和 TiDB 重启问题得到了改进,性能也得到了很大提升。

2023 年 9 月,我们跨大版本升级到 TiDB v7.1.1。升级后,系统性能得到了大幅提升,QPS 峰值达到 50-60K,95 线响应时间从之前的 60ms 以上降低至 10-30ms。同时,我们也使用上了 v7.1 的资源管控功能,很好地满足了业务需求。在 v7.1 版本中,我们遇到了两个问题。

 由于 TiDB 的内存控制参数由会话级别调整为 SQL 级别,导致超过内存阈值引起访问阻塞的问题。我们正在积极寻求解决方案。

 TiCDC partition_num 参数无效的问题(参考:Tidb7.1.1 的 Ticdc 参数 partition-num 无效 ( https://asktug.com/t/topic/1014870 ) ),我们已经将该问题反馈给 TiDB 社区,并很快得到反馈,在 issue : 9955 ( https://github.com/pingcap/tiflow/pull/9955 ) 得到修复。

这些问题的解决,充分体现了 TiDB 开源模式的优势,即社区的力量。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/407386.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

svn客户端下载、安装、使用

下载、使用 打开360软件管家,选怎宝库,搜索svn,点击安装 可以修改安装路径 使用 在桌面右键弹出菜单,点击 输入地址,点击ok 输入用户名、密码 ,等待检出完成

Java智慧工地管理云平台源码 带AI识别、桌面管理+大屏指挥+手机APP

目录 智慧工地云系统技术说明 1.什么是 AI 危险源识别 2.什么是标养室监测 3.什么是塔机监测 4.什么是塔机黑匣子 5.什么是升降机监测 6.什么是升降机黑匣子 7.什么是标养箱 8.什么是吊钩可视化 9.什么是吊钩追踪控制设备 10.什么是扬尘监测 11.什么是扬尘监测设备…

基于SpringBoot的停车场管理系统

基于SpringBootVue的停车场管理系统的设计与实现~ 开发语言:Java数据库:MySQL技术:SpringBootMyBatis工具:IDEA/Ecilpse、Navicat、Maven 系统展示 前台首页 停车位 个人中心 管理员界面 摘要 摘要:随着城市化进程的…

测绘测量行业CRM功能大揭秘:哪家才是最佳选择?

测绘测量行业面临着处理及管理海量数据的难题。办公软件进行数据记录是非常繁琐的,往往需要花费大量的时间来查找所需的信息,甚至造成内容丢失。测绘测量企业运用CRM管理系统至关重要。本文将向您介绍测绘测量行业CRM功能、哪家好? CRM软件的…

03 表数据基本操作

文章目录 插入(insert)查询(select)where子句更新表记录(update)删除表记录(delete)表字段的操作(alter)时间类型数据 插入(insert) insert into 表名 values(值1,值2...),(值1,值2...),...; insert into 表名 (字段1,...) value…

【办公类-16-10-02】“2023下学期 6个中班 自主游戏观察记录(python 排班表系列)

背景需求: 已经制作了本学期的中4班自主游戏观察记录表 【办公类-16-10-01】“2023下学期 中4班 自主游戏观察记录(python 排班表系列)-CSDN博客文章浏览阅读398次,点赞10次,收藏3次。【办公类-16-10-01】“2023下学…

Python零基础安装教程(包含各种安装方案)以及PyCharm安装步骤

文章目录 安装方案介绍安装Python解释器安装Pycharm安装Anaconda方案参考 安装方案介绍 方案1:只安装Python解释器(适合小型开发) 方案2:安装集成开发环境Anaconda(集成了Spyder,JupyterNotebook等编辑器&…

代码随想录算法训练营Day27 || leetCode 93.复原IP地址 || 78.子集 || 90.子集II

93.复原IP地址 与分割回文串的代码相近&#xff0c;先写出判断函数&#xff0c;之后以判断结果为标准&#xff0c;执行回溯的代码。此题中使用点的个数来决定回溯的终止&#xff0c;需要学习一下。 class Solution { private:vector<string> result;bool isValid(const …

从事游戏开发类职业岗位的任职资格

游戏开发工程师主要是指致力于游戏总体设计&#xff0c;负责游戏开发和维护工具的设计与开发工作。并配合主程序完成游戏架构的设计&#xff0c;与其他技术支持的工作。从事这项工作&#xff0c;需要掌握的知识和技能非常多&#xff0c;下面就跟着小编来一起了解一下吧。 1、任…

高级RAG:使用RAGAs + LlamaIndex进行RAG评估,包括原理、图和代码

原文地址&#xff1a;Using RAGAs LlamaIndex for RAG evaluation 2024 年 2 月 5 日 如果您已经为实际的业务系统开发了检索增强生成&#xff08;Retrieval Augmented Generation, RAG&#xff09;应用程序&#xff0c;那么您可能会关心它的有效性。换句话说&#xff0c;您…

Vulhub 靶场训练 DC-8解析

一、环境搭建 kali的IP地址&#xff1a;192.168.200.14 DC-8的IP地址&#xff1a;192.168.200.13&#xff08;一个flag&#xff09; 靶机和攻击机处于同一个网络方式&#xff1a;nat或桥接 若出现开机错误&#xff0c;适当将dc的兼容版本改低&#xff0c;我的vmware workst…

【黑马程序员】1、TypeScript介绍_黑马程序员前端TypeScript教程,TypeScript零基础入门到实战全套教程

课程地址&#xff1a;【黑马程序员前端TypeScript教程&#xff0c;TypeScript零基础入门到实战全套教程】 https://www.bilibili.com/video/BV14Z4y1u7pi/?share_sourcecopy_web&vd_sourceb1cb921b73fe3808550eaf2224d1c155 目录 1、TypeScript介绍 1.1 TypeScript是什…

Dear ImGui的UE5.3集成实践

Dear ImGui一直较为火热&#xff0c;这是一个调试使用并且可以响应快速迭代的Gui库&#xff0c;甚至可以做到在任何代码块中调用API即显示。如果你想更多的了解一下可访问其官方网站&#xff1a;https://www.dearimgui.org/ 那么本文就来在UE5中尝试踩坑使用它。 UE4.26版本 …

什么是抖音视频下载软件|视频批量下载|爬虫工具

抖音视频抓取软件是一款方便用户获取抖音平台上视频内容的工具。它具备以下主要功能&#xff1a; 批量视频提取&#xff1a;用户可以输入关键词&#xff0c;软件将自动搜索抖音平台上与关键词相关的视频&#xff0c;并将它们列出供用户选择和下载。用户可以随时停止搜索和下载过…

猫头虎分享已解决Bug || 语法错误:SyntaxError: Unexpected token < in JSON at position 0

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

一文看懂大模型 Sora 技术推演

sora 一出&#xff0c;引起社会各界广泛关注。中美AI的差距进一步扩大&#xff0c;中美人才培养体系的差距等等言论&#xff0c;甚嚣尘上。 其实文生视频领域&#xff0c;华人学者和产业界的参与度还是非常高的。 那么 Sora 到底是谁做的&#xff0c;怎么做的&#xff0c;本篇…

前端工程化面试题 | 16.精选前端工程化高频面试题

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

Matlab/simulink基于MPPT风光储微电网建模仿真(持续更新)

​ 2.Matlab/simulink基于MPPT风光储微电网建模仿真&#xff08;持续更新&#xff09; 1.Matlab/simulink基于vsg的风光储调频系统建模仿真&#xff08;持续更新&#xff09;

maven的聚合和生命周期

什么是maven的聚合呢?就是父类直接将子类项目一起统一打包安装统一maven的生命周期 1.maven的生命周期 2.在父亲类pom文件指定需要打包的项目 实例代码: <!--maven的聚合 通过modules指定需要打包的maven项目--> <modules><module>../ithema-jopo</m…

【2024.02.22】定时执行专家 V7.0 发布 - TimingExecutor V7.0 Release - 龙年春节重大更新版本

目录 ▉ 新版本 V7.0 下载地址 ▉ V7.0 新功能 ▼2024-02-21 V7.0 - 更新日志▼ ▉ V7.0 新UI设计 ▉ 新版本 V7.0 下载地址 BoomWorks软件的最新版本-CSDN博客文章浏览阅读10w次&#xff0c;点赞9次&#xff0c;收藏41次。▉定时执行专家—毫秒精度、专业级的定时任务执行…