如果说今年科技圈什么最火,我估计大家会毫不犹豫选择 ChatGPT。ChatGPT 是 2022 年 11 月 30 日由 OpenAI 发布的聊天应用。它创造了有史以来用户增长最快的纪录:自 11 月 30 日发布起,5 天就拥有了 100 万活跃用户,两个月就达到了一亿用户。对比其他热门应用,同样达到一亿用户量级,TikTok 花了九个月,而像 Instagram ,Whatsapp 等应用则超过了两年时间。
ChatGPT 的爆火,瞬间点燃了整个 AIGC 赛道。最关键的原因在于,它让大家看到了弱人工智能向强人工智能的跨越式发展。英伟达 CEO 黄仁勋对此评价:ChatGPT 相当于 AI 界的 iPhone 时刻。
现在业界统一的共识是,AIGC 会改变 IT 行业的方方面面。那 AIGC 对数据库会带来哪些变化,AIGC 和数据库又会碰撞出哪些火花,这是一个值得我们去思考和回答的问题。
在回答 AIGC 对数据库的变革和影响之前,让我们先回顾下数据库发展历史。它可以分为六个阶段。
第一阶段是上世纪五十年代。这个时候数据库还在雏形阶段,以层状数据库和网状数据库为主,基础设施以大型机为主,主要用于国防和科学研究。
第二阶段是上世纪七十年代。关系型数据库出现,硬件也变成了小型机,这也奠定了数据库发展的方向。主要应用在金融,交通等关键行业。这时的代表数据库是 Oracle 和 DB2 等。
第三阶段是上世纪九十年代。PC 机已经得到了普及,数据库除了关系型数据库,也有了 PC 单机数据库。为解决企业 BI 应用诉求,数仓开始出现。数据库的应用也更多样化起来,进一步应用到企业 BI、个人办公、娱乐等场景。
第四阶段是本世纪的前十年。随着互联网开始繁荣,数据处理的需求逐渐增加,开始出现企业数据中心。业务也变成了媒体、搜索、电子商务、社交等互联网业务。由于传统数据库如 Oracle 因为价格较贵,互联网厂商大量使用开源数据库如MySQL、Redis、MongoDB 等。整个开源数据库生态开始逐渐繁荣。数据库的种类,厂家也逐渐变多。
第五阶段就是我们今天所处的云计算时代。典型应用包括新媒体、各种移动 APP、物联网、娱乐、短视频等。典型的数据库有 RDS、Aurora 等云数据库,以及 Oceanbase、CockroachDB 等分布式数据库。百度也有对应的产品,云原生数据库 GaiaDB 以及我们自研的缓存类数据库 PegaDB 等。
第六个阶段是自 2023 年开始的 AI 时代。底层基础设施变成了 GPU 和 AI 能力。应用也变成了 AI 原生应用,如海外比较火的 Jasper、Midjourney,微软的 Copilot 等。在数据库行业我们看到至少两个方向,一个是 AI4DB,其中包括阿里的 DAS、百度的 DSC 等,主要是通过 AI 的能力去改进原有数据库的自动化能力。另外一个方向就是 DB4AI,目前主要是向量数据库。向量数据库在解决大模型幻觉等方面,有非常不错的效果,是一个有潜力的细分赛道,头部公司估值已经达到 10 亿美元。
以上就是数据库 70 年波澜壮阔的发展史。我们可以看到,每隔一段时间数据库就会在基础设施、应用场景、以及数据库本身,都有不断地变更和创新。
上面我们简单回顾了数据库发展的六个阶段。在这个过程中,我们还可以以 2000年做分界线。在 2000 年前,国内数据库基本上被 Oracle 等海外数据库主导。而从 2000 年之后,随着互联网业务的发展,国内多个互联网厂商如阿里、腾讯、百度便开始尝试使用开源数据库,实现了从最早的运维、到提交 patch、再到最后完全自研数据库的跨越式发展。
这背后从量变到质变的过程是一个典型基础软件发展过程。一个基础软件真正得到长足发展,需要一大批高素质的技术人员,也需要深度场景的使用才能不断完善产品。另外丰富的场景和不断发展的业务,也能长期养活这批技术人员,进而形成正循环。所以说数据库的发展依赖于技术和业务的双轮驱动。从 2000 年开始,我们看到三波浪潮——互联网,云计算和 AI 原生。我们接下来会分别来讲一下每一波浪潮为数据库行业带来的创新和变化,以及百度智能云数据库在这个过程中的关键技术和代表产品。
互联网业务特点是赢家通吃,所以互联网业务用户数规模通常比较大。因此天然要求数据库支持大规模、高可用、高可靠性、低成本以及高性能,这对数据库提出了非常大的挑战。
在第一波互联网业务的发展中,业务的挑战催熟了一系列开源数据库如 MySQL、Redis、MongoDB,又从中孵化出了分布式数据库。
接下来我们来看下百度在互联网时代的数据库发展历程,这里有几个关键节点:
第一个是自 2005 年开始使用 MySQL 数据库,这也是国内最早使用 MySQL 的企业之一。第二个是 2014 年百度推出公有云服务,百度数据库的能力通过百度智能云开始赋能给外部企业。第三个是 2020 年发布了云原生数据库 GaiaDB。百度也成为了国内少数几个具备自研云原生数据库云厂商之一。截至目前,百度积累了 18 年的数据库研发经验,承载着内部 PB 级数据。10 万+ 的节点至今零故障零损失。通过百度智能云输出的一站式产品,覆盖 RDS、NoSQL、OLAP、工具等领域,同时具备公共云、私有云、边缘云等软件版本多形态。
前面我们提到了互联网的一大特点,就是规模大。单点肯定处理不了,所以需要引入分布式技术,也催生了分布式数据库的诞生。
百度在该领域也有非常成熟的技术,讲两个实际的案例:第一个是百度网盘。百度网盘有 8 亿用户,整个数据库中单表最大超过 10 万亿条记录。整体集群超过 3000 台服务器,是国内最大的数据库集群之一。第二个是金融行业。大家都知道金融行业对一致性、数据准确性有非常高的要求。度小满金融有 3 亿用户,年度结算金额超过万亿,其底层使用的就是百度智能云分布式数据库 GaiaDB-X。尤其值得一提的是在 2019 年春晚红包业务中,整体交易的峰值是 12 万笔/秒。数据库的分布式能力、性能、一致性、准确性都得到了充分验证。除了度小满,百度智能云的数据库还在多家国有大行、股份制银行和城商行中稳定运行。
互联网业务除了规模外,对性能、并发等也提出了很高的要求,因此诞生了一系列 NoSQL 数据库。不同的 NoSQL 数据库从不同层面解决互联网垂直场景的问题,今天我们讲其中的代表 Redis。
百度智能云的 Redis服务经历十几年的技术积累和业务打磨。从规模上来看,节点规模超过 30w,其中单集群最大规模节点数达到 2700。从业务支持上看,百度 Redis 覆盖支撑了百度内部全场景业务,其中包括搜索广告、手百、地图、小度等一系列亿级用户体量的产品,为业务提供 4 个 9 以上高可用性以及微秒级请求时延服务,始终为客户提供稳定、高效、弹性可扩展的智能缓存服务。
Redis直接使用内存,但内存带来高性能的同时成本是比较贵的。因此一款能兼顾性能和成本的 Redis 产品是客户迫切需要的。考虑到业务中大量的数据是可以根据场景分出冷热的。比如视频直播、新闻/内容平台、电商场景中,随着时间的推移,数据的价值和使用频率都在下降。所以可以将部分数据自动迁移到磁盘中,从而降低存储的整体成本。
为了解决性能和成本的平衡问题,百度智能云自研了 PegaDB。PegaDB 是在开源基础上自研的容量型 Redis 产品,相比内存型产品最多节省超过 90% 的存储成本。在成本下降的同时,PegaDB 也兼容了 Redis 丰富的数据类型和命令,让用户做到无缝迁移,兼顾了用户体验和性能优势。除此之外,PegaDB 还有两个杀手锏功能:一是支持在线弹性伸缩,单个集群最大规模可达 PB 级别。对用户来说不用估计使用量,只要傻瓜式即开即用即可。第二个是支持 CRDT 同步的组件,支持异地多活和多节点同时访问、自动进行冲突合并等功能。这就让客户专注于实现业务逻辑,其他的都交给底层的数据库,完全不用操心可用性问题。
随着云业务的诞生,让数据库的价值进一步放大。为了赋能千行百业,全托管等形态的 RDS 顺利成章的诞生了。它解决了客户最直接的安装、运维、管理等问题,因此全托管的 RDS 就逐渐推广开来。
但单体 RDS 通常有比较明显上限,在一些对性能、成本、弹性有一定要求的复杂业务中,就需要一个更强大的数据库来解决这些问题。因此,存算分离的云原生数据库就自然而然诞生了。百度智能云的云原生数据库 GaiaDB 是其中的代表之一。
RDS全托管的产品形态代表了云计算从软件到服务的理念转变。云原生数据库极大地提高了 MySQL 数据库的上限能力,是云数据库划代的产品。
云原生数据库最早的产品是 AWS 的 Aurora。AWS Aurora 提出来的 The log is the database 的理念,通过把大量的日志操作放到后台异步处理,实现了存储独立扩展和存储计算分离,从而解决了 MySQL 数据库单库的数据量不能太大的最大痛点。
而云原生数据库在存储层面实现了扩展的同时,又保留了计算层面的不变和兼容。这种兼容 + 扩展的能力,受到了客户的极大欢迎,一下子就让云原生数据库成为各个厂商的发展重点。云数据库技术也标志着云厂商的产品能力开始和传统数据库厂商、开源产品开始拉开差距。
百度智能云的 GaiaDB 在 2020 年首次推出,除了具备云数据库的优点之外,GaiaDB 还有很多独特的技术能力,接下来我来分享其中 5 个代表能力:
第一个是共识协议。一般使用 Raft/Paxos 分布式协议的数据库,单次 I/O 需要至少两次网络往返,而且无法并行。这也就导致了分布式数据库时延很高,长尾问题更突出。
针对这个问题 GaiaDB 创新采用了 Raft 和 Quroum 结合的协议。其中 Raft 负责控制流,Quorum 负责数据流,进而减少网络往返。同时核心链路上的同步 I/O 变成异步 I/O,在保证分布式一致性的前提下,吞吐提升了 40%,时延降低了 30%。
第二个是高性能智能网络。存算分离在带来分布式和弹性的同时,也引入了网络 I/O 的消耗,因此网络 I/O 的性能和效率直接影响整个系统的表现。GaiaDB 采用高性能智能网络,这个网络有几个关键技术能力:
第三个是提供了三副本对等存储能力。由于采用了 Quorum 分布式共识协议,相比传统的 Raft 模型,每个节点都可以独立提供读写服务,没有单点故障。
第四个是多地多活。GaiaDB 是目前业界唯一可以做到多地多活的云原生数据库是。在多地部署的时候,GaiaDB 模块的自适应就近访问策略可以感知元数据的变化,并根据这些变化及时切换访问路线。这种策略可以有效地应对各种故障和异常情况,确保数据的可靠性和可用性。
第五个是使用通用硬件,对硬件要求低。GaiaDB 生于云,但同时 GaiaDB 的架构对硬件的依赖度非常低。我们和很多厂商使用高性能硬件的思路不同,我们认为云的价值是普惠,所以一定要让通用服务器能发挥专业数据库的能力。因此,不同于很多云原生数据库需要依赖底层高性能的硬件,GaiaDB 从设计初就坚持使用通用服务器。因此在私有云场景下,三个节点就可以进行部署,让我们的客户可以低价享受到云上云下一套架构。
接下来我们来看一个 GaiaDB的实际案例——百度地图。
百度地图是国民级别应用,日活用户 5.6 亿,PB 级数据。这对数据库也提出了如下的挑战:
大规模数据量、异地多活、弹性扩缩容要求,这些要求对数据库是极大的考验。在实际使用过程中,GaiaDB提供 4 个 9 的可用性,RTO 切换小于 3s,RPO=0,整体 QPS 超过百万级别,给业务实现超过 60% 的资源成本节省。总的来说,GaiaDB成功帮助百度地图实现了极致的弹性和成本。
云上数据库和线下数据库相比,一个较大差异就是生态能力强。相比传统线下软件只有 1~2 款产品,线上有多种数据库与多种使用环境,因此数据库矩阵更丰富,这带来了对数据库工具的诉求。
百度智能云有丰富的数据库工具,包括数据传输 DTS、数据库智能驾驶舱 DSC 等产品。我们先讲其中的代表 DTS。百度智能云的 DTS 采取了中间抽象的数据格式,通过中间格式的翻译和转换,可以轻松做到异构迁移能力。同时 DTS 在吞吐上可以做到每秒 15 万行,延迟做到毫秒级别,基本等于网络的延迟的性能,让客户可以放心使用 DTS 来做数据库的迁移和同步。
在 AI 原生时代,数据库和 AI 的结合主要有 DB4AI 和 AI4DB。
首先是 AI4DB,就是利用 AI 技术赋能数据库。常见场景有智能运维、智能客服、参数优化等等,刚刚提到的百度智能驾驶舱就是该领域的代表。另外一个方向是 DB4AI,通过数据库赋能 AI 产品。当前最火的就是向量数据库。向量数据库二次的翻红主要原因是向量数据库在解决大模型幻觉、知识更新不及时有很大作用,让向量数据库的想象空间一下子变大了。
AI4DB 在工业界一直有研究。相比传统机器学习算法,大模型让 AI4DB 真正走进实用时代。利用大模型的能力,百度智能云数据库发布新服务:数据库智能驾驶舱。
数据库智能驾驶舱利用最新的大模型能力,实现数据库智能化的洞察、评估和优化。根据我们的实际测试效果,优化效果非常显著:
相比传统基于规则的算法,大模型带来了更好的优化效果和更少的开发时间。大模型带来的切实提升让 AI4DB 走向真正的实用时代,也让数据库自感知、自修复、自优化、自运维成为现实。
下面我们来看下数据库智能驾驶舱内置的一个能力——智能问答。
这个功能可以帮助用户诊断产品问题并回答各种疑问,降低人工投入。这里面用到了大模型通用知识的能力,同时也利用 RAG 技术,把云产品文档、数据库的官方文档、内部积累的知识库进行向量化并存在向量数据库中。
在查询的时候,结合大模型和向量数据库的能力,可以给出相当准确有效的答案。目前数据库智能驾驶舱经过验证,对历史客户工单中真实问题进行回答然后由人工进行打分,整体回复平均超过 4 分,基本可以媲美普通售后工程师的水平。
接下来我们实际来看下智能问答的一个 demo。
左边的例子是询问知识库里面已有的例子,比如怎么购买,怎么实现一个读写分离的配置等。智能驾驶舱都总结得比较好,回答也非常准确。右边的例子是询问知识库中没有的例子。我们可以发现,智能驾驶舱利用大模型的能力,可以举一反三,把解决问题的步骤给出来。我们人工去检查也会发现,这个步骤还是相对比较合理的。所以现在智能驾驶舱的智能问答可以做到:有资料的问题准确回答,无资料的问题也可以给出相对清晰的解法。百度智能云内部已上线了该功能,大大节省了人力。
DB4AI 的典型代表就是向量数据库。向量检索并不是一个新技术,2017年 Meta 就开源了相似度检索库 FAISS,算是向量化检索的开山鼻祖。
传统数据库解决的是结构化数据的存储和检索,非结构化数据需要先用 AI 算法 Embedding 成向量数据。需要查找的时候,把需要查找的数据的向量带过来,然后在库里面进行相似度检索。
而向量数据库核心能力就是支持向量数据存储,以及支持不同的查找算法和索引实现相识度查找。当前业界有两种不同的实现方式,一种是在传统数据库中增加插件或者功能支持向量的查找,比如 PG,Redis 都支持向量索引。这种实现相对来说容易一些,但同时性价比会差一些,通常会占用更多内存。另外一种是专业的向量数据库,专门为向量重新设计的存储和索引结构,能实现更高的性价比和弹性。
传统应用也有不少向量场景。典型场景有平安城市视频检索、电商领域以图搜图等。由于传统场景比较垂直,因此一直没有一个大的向量数据库,更多的是耦合在业务系统中。而在大模型时代,万物皆可向量化。而且当前大模型主要问题有知识更新不及时、精确性问题、数据权限管理等问题,都需要向量数据库来补充。向量数据库也因此成为大模型的标配,也在大模型时代二次翻红。
百度智能云自研的专业向量数据库目前在内测阶段,根据我们内部实际测算,在成本、规模、高性能算法、内置 Embedding 模型、向量 + 标量的联合查询方面,相比业界有很大的提升。
前面我们介绍了关键的产品,最后简单回顾一下百度智能云产品矩阵。
百度智能云数据库完整支持 RDS、NoSQL、云原生数据库,OLAP 等产品。相比业界其他云厂商,百度智能云数据库有两个显著特点:
前面我们盘点了数据库在互联网、云计算,AI 原生 3 个阶段的发展。除了技术之外,我们认为云数据库未来还要坚持两个重要的理念。
第一个是体验优先。一个好的数据库不能只是性能、成本这些方面。体验好的产品,可以让用户做到自服务。体验优先这一点在海外 SaaS 产品中体现得更为明显。在国内,这一理念也逐渐取得从业者的认可。因此,在过去的半年里面,我们从文档、控制台、产品功能各个层面进行了深度优化:
我们对体验的理解就是从用户视角入手、坚持细节、系统性的进行优化,只有通过这种深度,全方位的持续改进,才能把体验做到实处。
第二个是开放生态。丰富的生态是吸引客户、解决客户多样诉求的关键。也只有开放的生态,才能让更多的厂商一起服务好客户。
生态方面,百度秉承更开放的心态和第三方厂商合作。上半年我们和工具领域知名创业公司 NineData 正式合作,接下来会马上官宣另外一个合作厂商。
相比其他厂商,我们合作的过程也不只是简单的云市场合作。我们会和合作伙伴一起进行产品共建、优先推荐合适客户给合作伙伴、首页曝光和联合的品牌活动,增加合作方的知名度。
通过一系列的手段和措施,我们希望给到合作伙伴的是切实效果。百度智能云合作的理念就是更开放,让利合作伙伴。欢迎更多的合作伙伴和百度联系,一起服务好我们的客户。
总的来说,一个体验优先,生态开放的云,一定是客户最需要的云,也是真诚服务客户的云。
站在当前看未来,数据库当前有四个关键发展趋势
技术和产业发展都很快,百度智能云数据库持续跟进最新的技术趋势,用优质的产品和真诚的服务回报我们的客户。
欢迎大家了解数据库产品