唐刘:TiDB 的 2024 - Cloud、SaaS 与 AI

news2025/1/17 23:01:05

2024 年已经过去,在去年我也写过两篇类似的文章,TiDB in 2023 - 一次简单的回顾和 TiDB Cloud in 2023 - 一次简单的回顾,这一次,我准备将 TiDB 和 cloud 一起写,一方面原因是我懒了,另外一个更重要的原因在于 TiDB 跟 cloud 一直是非常密切的绑定的,我们大多数的迭代和改进都是基于 cloud 的,cloud 已经成为了 TiDB 的一部分了。

在 2024 年,TiDB 也取得了非常瞩目的成绩,在全球知名的数据库排行榜 - DB-Engines Ranking 上面 ,我们在关系型数据库领域,在 2025 年 1 月 1 日这天,已经排在了第 38 名,这已经是一个非常了不起的成绩了,也表明 TiDB 在全球正在逐渐得到越来越多的企业和开发者的关注。

- TiDB DB-Engines Ranking

我们也非常开心的看到,TiDB 也给越来越多的客户带来了成功,譬如在这篇文章 TiDB Adoption at Pinterest 里面,Pinterest 提到从 HBase 迁移到 TiDB,他们平均节省了 50% 的成本,在有一些业务系统,甚至能节省 80% 的成本,同时业务的稳定性和性能也有非常大的提升

要取得上面的成绩并不容易,在 2024 年我们也经历了很多,下面,我会简单的梳理回顾下,我们在 2024 主要做的一些有意思的事情。

Cloud First

在贵司内部,我们一直坚信,未来的数据库一定是一款 cloud -native 的数据库,而且也一定是依托于 cloud 的基础设施进行构建的。这里尤其提一下 S3 以及其他 cloud 的 blob storage,最近我愈发的看到,基于 S3 来构建数据库的趋势,甚至在 OLTP 领域,譬如 Neon,还包括 TiDB 自身等等。

在 2024 年,在 cloud 上面,一方面我们仍然在快速的迭代改进,大家可以看 TiDB Cloud Release Notes in 2024,另外一方面,我们在不断地修炼内功,应对客户在 TiDB Cloud 上面大规模增长的挑战。

下图是最近两年在 TiDB Cloud 上面客户的数据量,大家可以看斜率,可以发现在 2024 年,客户的数据量几乎是成倍数的增长,这个对我们在 cloud 上面的运维以及 TiDB Cloud 这个产品都提出来非常大的挑战。毕竟很多问题真的只有在规模化下才会发生的。

最近两年在 TiDB Cloud 上面客户的数据量

我们在云上面,因为规模化,遇到了非常多的问题,有些都是之前很难想象的,这里说几个有意思的:

IO 抖动。 我在 2024 年的 AWS r e:I nvent 见到了 AWS EBS 的研发老大,问了他一个问题,你们 EBS 盘 IO 抖动的 outlier 是多少,他回答道,『如果超过 500ms,我们会认为是异常』。我表示: 『我们遇到过 20s 的,甚至在你们最好的 IO2 的机型上面』,我完全能看到他眼睛里面的震惊。 他也承认,不要指望 EBS 团队能解决所有问题,所以我们自己在 TiDB 也做了非常多的优化(这个有机会后面再说),来确保遇到 IO 抖动的时候,对业务影响降到最低。

除开 IO 抖动,当然另一个抖动就是 网络抖动 。有一次,我们某客户遇到了不规律的,非常随机的,时不时某一个请求超过数百 ms 的情况,而这个请求通常的延迟量级在几 ms 范围内。我们排查了半天,最终定位到可能跟网络有关系,后来云厂商也直接承认,那段时间在做网络改造,升级交换机的时候,影响了网络。

再就是 云厂商的资源并不是无限的 ,并不是你想申请就能申请到,尤其是大规模的申请的时候。我们某客户,在某云厂商的新加坡 region 要买一大批机器,结果云厂商告诉我们,这客户已经把新加坡 region 相关机型的机器都买完了,再买得等一段时间了,而且这并不是单个云厂商的特例。解决办法一方面是我们自己进行资源优化,另外就是提前跟云厂商打招呼,提前备货了,不过对于一些快速增长的业务,这个挑战和压力就很大了。

当然,还有非常多的挑战,包括但不限于云厂商给我们算错账,某机房失火烧掉整个 AZ 等等,这里就不一一列举了,不过每次遇到新的问题的时候,我总会跟自己安慰一下,『数据库是用出来的,坑是踩出来的』, 我们能做的,就是尽量的确保系统的稳定,提前做充分的 chaos 测试,确保 chaos 真的发生的时候,我们能很好的应对

关注 SaaS

熟悉了解 TiDB 的同学应该知道,TiDB 一开始最关注于互联网场景,也就是俗称的数据量大,并发规模大这种,后来我们开始做传统行业之后,就开始发力去攀登一个珠穆朗玛峰,也就是银行的交易核心场景。这些都有了不错的成绩,在 2024 年,我们开始关注于 SaaS 场景。

为什么要做 SaaS?一方面的原因是来自客户,譬如 Databricks,去年我们为了支持好他们的业务,解决大小租户隔离的问题,就开始做 resource control 的功能。而今年,我们有了更多的 SaaS 客户,自然 SaaS 的需求就提上了优先级。

而另一个原因则是,我们发现,在 SaaS 场景里面,对于很多产品的需求其实在其他的场景,譬如银行核心对于稳定性的需求,都是共通的。SaaS 里面,因为涉及到资源共享,而在共享的环境下,对于大租户来说,稳定性尤其重要。所以我们认为,做好了 SaaS 场景,也能让其他我们想要打的场景收益,而事实也正是如此。

在 SaaS 场景,我们真的做了非常多的工作,其中最好玩的一个项目,我们内部代号叫做 1M Tables,也就是要在 TiDB 里面支持一百万张表。这个对于系统的挑战还是非常大的,这里提几个:

  • Schema Cache 的处理 ,之前 TiDB 是全部将 schema 缓存到内存里面的,显然百万这个级别,是要做更多的优化处理了。而如果一个 schema 没在缓存里面,租户访问的时候就可能出现临时加载引起性能抖动。所以我们重点优化了这块,引入了新的 Schema Cache 算法。
  • 统计信息的收集 ,百万的表,到底哪一些表要快速的做统计信息收集,哪一些不需要做,也是很有讲究的。如果统计信息收集慢了,就会导致查询计划生成不准确。所以我们引入了优先级队列,以及只收集 predicate column 等优化,确保快速的收集需要的统计信息。
  • 租户很多都是相同的 query pattern,只不过是访问的不同的表,而这些表也有几乎一模一样的表结构,所以如果要给一个 query 加上 hint,我们在其他的类似 query 都要加,这个对于人来说几乎就是不可能的事情了。所以我们引入了 global binding 功能,能给具有相同 pattern 的 query 统一加上 hint。
  • ……

实际,我们还做了更多的东西,所以当 TiDB 8.5 发布之后,我真的相信,TiDB 已经成为了客户在 SaaS 场景首选(之一)的云原生分布式数据库了。我们也给很多客户带来了价值,譬如 Atlassian(没错,就是做 Jira 的那家公司),对我们表示:『这就是 TiDB 的价值』——这是一个非常高的评价。

AI 是未来

都 2024 年了,不聊 AI,显然有点落伍了。不少朋友都问我,在当前 AI 这个大潮流下面,你们就不做点啥?而几乎每次,我都会先强调,『我们是一家数据库公司』。

是的,因为我们是一家数据库公司,所以我们最高的优先级,仍然是考虑的是如何给客户做一个高质量、高性能、易使用的数据库。 所以在 AI 领域,我们更多的关注,仍然是让更多的 AI 客户,如何更好的通过 TiDB,来让他们的业务进行增长。

我们在 2024 年,发布了 vector search 功能。这里再做个广告,我们在明年,也会发布 full text search。我们相信,TiDB 能给 AI 客户相比于传统的 vector 或者 search 的数据库,提供更大的价值。包括但不限于:

  • 可扩展的 OLTP 的能力,让客户对自己的业务增长有更多的信心,毕竟 TiDB 能搞定。
  • 多数据格式的支持,无论是 graph(在 TiDB 可以用 table 来模拟),还是 vector 以及 search,TiDB 都能让客户在一个地方方便的使用。
  • TiDB 特有的 HTAP 能力,能让客户进行非常复杂的混合查询,譬如能做到 vector 和 TP 数据的 join 等。
  • ……

总之,TiDB 的目标就是给客户提供一站式的 AI 处理服务。而我们也看到了成功的案例,知名的 AI 厂商 Dify 已经将租户数据迁移到 TiDB Cloud 上面,进行 AI 数据的处理了。

总结

最后再说下产品,在今年,我们发布了 TiDB 8.1 和 8.5 两个版本。在 2025 年,我们会有一个重大的改变,就是会持续的投入到 8.5 版本的质量加固,同时收敛新功能的开发,只会在 2025 年发布一个有更高质量的 LTS 版本。关于 TiDB 8 系列,我后面再写一篇文章详细的介绍一下吧。

在 2024 年,我们交付了非常不错的成果,当然,能取得这样的成绩,来自于我们不断地交付优异的产品,满足客户的需求,赢得客户的信任。我们也希望,在 2025 年,我们能做的更好,支持好更多客户的业务增长,帮助客户成功。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Web端实时播放RTSP视频流(监控)

一、安装ffmpeg: 1、官网下载FFmpeg: Download FFmpeg 2、点击Windows图标,选第一个:Windows builds from gyan.dev 3、跳转到下载页面: 4、下载后放到合适的位置,不用安装,解压即可: 5、配置path 复制解压后的\bin路径,配置环境变量如图: <

Excel 技巧10 - 如何检查输入重复数据(★★)

本文讲了如何在Excel中通过COUNTIF来检查输入重复数据。 当输入重复数据时&#xff0c;显示错误提示。 1&#xff0c;通过COUNTIF来检查输入重复数据 比如下面是想检查不要输入重复的学号。 选中C列&#xff0c;点 Menu > 数据 > 数据验证 在数据验证页面&#xff0c…

IEC103 转 ModbusTCP 网关

一、产品概述 IEC103 转 ModbusTCP 网关型号 SG-TCP-IEC103 &#xff0c;是三格电子推出的工业级网关&#xff08;以下简 称网关&#xff09;&#xff0c;主要用于 IEC103 数据采集、 DLT645-1997/2007 数据采集&#xff0c; IEC103 支持遥测和遥 信&#xff0c;可接…

Unity3d 实时天气系统基于UniStorm插件和xx天气API实现(含源码)

前言 实时天气在Unity3d三维数字沙盘中的作用非常重要&#xff0c;它能够增强虚拟环境的真实感和互动性&#xff0c;实时天气数据的应用可以提供更为精准和直观的天气信息支持&#xff0c;如果真实的数据加上特效、声音和模型反馈会提高产品档次&#xff0c;提高真实感。 目前…

Linux命令行工具-使用方法

参考资料 Linux网络命令&#xff1a;网络工具socat详解-CSDN博客 arm-linux-gnueabihf、aarch64-linux-gnu等ARM交叉编译GCC的区别_aarch64-elf-gcc aarch64-linux-gnu-CSDN博客 解决Linux内核问题实用技巧之-dev/mem的新玩法-腾讯云开发者社区-腾讯云 热爱学习地派大星-CS…

【Flink系列】9. Flink容错机制

9. 容错机制 在Flink中&#xff0c;有一套完整的容错机制来保证故障后的恢复&#xff0c;其中最重要的就是检查点。 9.1 检查点&#xff08;Checkpoint&#xff09; 9.1.1 检查点的保存 1&#xff09;周期性的触发保存 “随时存档”确实恢复起来方便&#xff0c;可是需要我…

【深度学习】关键技术-激活函数(Activation Functions)

激活函数&#xff08;Activation Functions&#xff09; 激活函数是神经网络的重要组成部分&#xff0c;它的作用是将神经元的输入信号映射到输出信号&#xff0c;同时引入非线性特性&#xff0c;使神经网络能够处理复杂问题。以下是常见激活函数的种类、公式、图形特点及其应…

20.<Spring图书管理系统①(登录+添加图书)>

PS&#xff1a;关于接口定义 接口定义&#xff0c;通常由服务器提供方来定义。 1.路径&#xff1a;自己定义 2.参数&#xff1a;根据需求考虑&#xff0c;我们这个接口功能完成需要哪些信息。 3.返回结果&#xff1a;考虑我们能为对方提供什么。站在对方角度考虑。 我们使用到的…

【Sql递归查询】Mysql、Oracle、SQL Server、PostgreSQL 实现递归查询的区别与案例(详解)

文章目录 Mysql 5.7 递归查询Mysql 8 实现递归查询Oracle递归示例SQL Server 递归查询示例PostgreSQL 递归查询示例 更多相关内容可查看 Mysql 5.7 递归查询 MySQL 5.7 本身不直接支持标准 SQL 中的递归查询语法&#xff08;如 WITH RECURSIVE 这种常见的递归查询方式&#xf…

vue2修改表单只提交被修改的数据的字段传给后端接口

效果&#xff1a; 步骤一、 vue2修改表单提交的时候&#xff0c;只将修改的数据的字段传给后端接口&#xff0c;没有修改得数据不传参给接口。 在 data 对象中添加一个新的属性&#xff0c;用于存储初始表单数据的副本&#xff0c;与当前表单数据进行比较&#xff0c;找出哪些…

「刘一哥GIS」系列专栏《GRASS GIS零基础入门实验教程(配套案例数据)》专栏上线了

「刘一哥GIS」系列专栏《GRASS GIS零基础入门实验教程》全新上线了&#xff0c;欢迎广大GISer朋友关注&#xff0c;一起探索GIS奥秘&#xff0c;分享GIS价值&#xff01; 本专栏以实战案例的形式&#xff0c;深入浅出地介绍了GRASS GIS的基本使用方法&#xff0c;用一个个实例讲…

纯命令 git使用

首先我们到一个新的公司 要添加一个新的git仓库的权限 我们应该现拉去代码 配置git的仓库信息 第一 先添加权限 第二 如果不是自己电脑 需要配置信息 配置基础信息 查看本地git账号git config --global user.name git config --global user.email修改本地账号git co…

Linux系统编程:深入理解计算机软硬件体系和架构

一、硬件体系 首先我们要知道&#xff0c;我们最常见的计算机&#xff08;笔记本&#xff09;以及我们不常见的计算机&#xff08;服务器&#xff09;其实本质上都是一堆硬件的结合&#xff1a;cpu、网卡、显卡、内存、磁盘、显示器、键盘…… 但他们并不是毫无章法地放在一起…

微信小程序-Docker+Nginx环境配置业务域名验证文件

在实际开发或运维工作中&#xff0c;我们时常需要在 Nginx 部署的服务器上提供一个特定的静态文件&#xff0c;用于域名验证或第三方平台验证。若此时使用 Docker 容器部署了 Nginx&#xff0c;就需要将该验证文件正确地映射&#xff08;挂载&#xff09;到容器中&#xff0c;并…

HarmonyOS NEXT应用开发边学边玩系列:从零实现一影视APP (五、电影详情页的设计实现)

在上一篇文章中&#xff0c;完成了电影列表页的开发。接下来&#xff0c;将进入电影详情页的设计实现阶段。这个页面将展示电影的详细信息&#xff0c;包括电影海报、评分、简介以及相关影人等。将使用 HarmonyOS 提供的常用组件&#xff0c;并结合第三方库 nutpi/axios 来实现…

在 macOS 上,用命令行连接 MySQL(/usr/local/mysql/bin/mysql -u root -p)

根据你提供的文件内容&#xff0c;MySQL 的安装路径是 /usr/local/mysql。要直接使用 mysql 命令&#xff0c;你需要找到 mysql 可执行文件的路径。 在 macOS 上&#xff0c;mysql 客户端通常位于 MySQL 安装目录的 bin 子目录中。因此&#xff0c;完整的路径应该是&#xff1…

使用docker-compose安装ELK(elasticsearch,logstash,kibana)并简单使用

首先服务器上需要安装docker已经docker-compose&#xff0c;如果没有&#xff0c;可以参考我之前写的文章进行安装。 https://blog.csdn.net/a_lllk/article/details/143382884?spm1001.2014.3001.5502 1.下载并启动elk容器 先创建一个网关&#xff0c;让所有的容器共用此网…

解决“无法定位程序输入点 av_buffer_create 于动态链接库 XXX\Obsidian.exe 上”问题

解决“无法定位程序输入点 av_buffer_create 于动态链接库 XXX\Obsidian.exe 上”问题 问题描述 本人在使用zotero中的zotero one&#xff08;青柠学术插件&#xff09;的时候&#xff0c;使用插件跳转obsidian中的对应笔记&#xff0c;出现上图情况。&#xff08;错误中提到的…

《小迪安全》学习笔记05

目录 读取&#xff1a; 写入&#xff1a; &#xff08;其中的读取和写入时我认为比较重要的&#xff0c;所以单独做成了目录&#xff0c;这里的读取和写入是指在进行sql注入的时候与本地文件进行的交互&#xff09; 好久没发博客了。。。从这篇开始的小迪安全学习笔记就开始…

Jupyter notebook中运行dos指令运行方法

Jupyter notebook中运行dos指令运行方法 目录 Jupyter notebook中运行dos指令运行方法一、DOS(磁盘操作系统&#xff09;指令介绍1.1 DOS介绍1.2 DOS指令1.2.1 DIR - 显示当前目录下的文件和子目录列表。1.2.2 CD 或 CHDIR - 改变当前目录1.2.3 使用 CD .. 可以返回上一级目录1…