之前看到CCF数据库专委会发布的《“十四五”数据库发展趋势与挑战》,文中提到未来数据库发展的几个主要方向点。
1、多模形态数据库 实现一库多用
什么叫多模?我的简单理解,就是同一个数据库能够同时处理多种形态的数据类型,比如Json,文档、视频、Kv甚至时序类型;同时满足应用端对于结构化、半结构化和非结构化等数据类型的支持。对开发者来讲是极为友好的,实际上这几年大家可以看到,不少国产数据库在这方面都在不断发力。
2、统一框架支持交易与分析场景(HTAP)
对于HTAP就不多说了,这个概念已经出了好几年了,前2年还是非常之火热的,目前主流的分布式数据库应该说大都是HTAP场景了,只不过实际上,不少数据库还在偏重在某个场景性能更好一些,毕竟架构摆在这里。
3、数据库自治(AI4DB)
自从去年chatgpt横空出世之后,AI和大模型就更火了,所以就数据库来讲,未来这一定是一个非常重要的方向。在这方面,大家知道数据库龙头Oracle在2020年左右就引入了自动驾驶(Autonomous Database)的概念,其中有不少非常不错的特性功能,比如Auto Index Advise。
说到这里,未来数据库对于DBA的要求会更高,因为大部分初级工作可能都被数据库自身的AI功能给替代了,我相信,不久的将来会看到这一天。
4、软硬一体,充分利用硬件技术(NVME、持久化内存、FPGA等)
5、与云基础设施深度结合(即云原生数据库)
根据之前Gartner的预测,截止到2027年,预计将有75%的数据库的部署形态在云上(包括公有云、私有云、混合云);其中云与数据库的融合,减少了数据库参数的重复配置,具有快速部署、高扩展性、高可用性、可迁移性、易运维性和资源隔离等特点。这就是我们讲的云原生,充分利用云的特点和优势。
对于云原生数据库来讲,有两种部署形态,一种是基于云资源部署的传统数据库,即数据库云服务(Database as a service);另一种是基于容器化、微服务、Serverless等理念设计的存算分离架构的云原生数据库。
既然未来数据库大部分都是基于云的形态,那么云原生数据库,无疑就是当前最为重要的之一了。因此前几天国际权威调研机构沙利文联合头豹研究院,正式发布《2023年中国云原生数据库十大厂商推荐-市场综合力表现》报告,腾讯云原生数据库TDSQL-C综合得分28.96分(总分30分),位居国内厂商第一位,入选中国云原生数据库解决方案市场“领导者”阵营。
如下插图来自腾讯云数据库公众号:
我们来看看沙利文报告的原版内容,具体是从哪几个维度来进行评价的:
从原文我们可以看到,沙利文此次评测主要是从几个主要的维度:云原生及创新功能与技术、基础功能与技术、运维与管理、安全保障、生态建设、服务与市场 等六大方面。具体的评分标准大致如下:
从评测规则和分数来看,要达到28分以上,必须是处于Leader象限才行。由于这份报告我看到的是简版(全文版应该要收费),那么究竟如何呢,我这里围绕TDSQL数据库,重点从架构和技术层面来简单分析分析。
首先报告中提到的是TDSQL-C,我们知道TDSQL本身一个大的统称,实际上TDSQL-C还有2个细分版本,分别为for MySQL和for PostgreSQL。
TDSQL-C for MySQL:100%兼容MySQL5.7/8.0,支持百万级QPS和最大PB级数据存储。
TDSQL-C for PostgreSQL:100%兼容PostgreSQL,支持百万级QPS和最大PB级数据存储,其中充分利用了SPDK(Storage Performance Development Kit)和 RDMA(Remote Direct Memory Access)等软硬结合技术。
就数据库本身设计来讲,从公开的资料查询显示TDSQL-C 遵循了如下几个原则:
Cloud Native 应 “ 云 ” 而生 —— 云原生数据库面向服务架构TDSQL-C MySQL 版数据库是搭建在腾讯云现有的高效稳定的云服务之上,能快速地搭建出高性能、高可用、高可靠的一套云数据库。
Creative “ 分 ” 而 治之 —— 计算与存储分离,日志即数据库TDSQL-C MySQL 版实现了“日志即数据库”的架构,将计算(CPU、内存)与存储分离,通过对 MySQL 内核的深度改造,卸载了不必要的功能模块,实现无状态计算节点,使得计算资源可以在秒级的时间内完成弹性扩展和故障恢复,并将其构建在腾讯云分布式云存储之上实现了存储资源的池化。
Comprehensive “ 兼 ” 容并包 —— 全面兼容新版开源数据库100%兼容开源数据库引擎 MySQL,还会定期实现对新版本的支持,几乎无需改动代码,即可完成现有数据库的查询、应用和工具平滑迁移,为用户大大降低数据迁移的成本和风险。
Cohesive 相 “ 辅 ” 相成 —— 极简的软件优化释放硬件红利TDSQL-C MySQL 版通过数据库内核、系统架构等软件优化,有效提升了数据库性能和稳定性,较传统架构的数据库产品有了大幅提升。在相同硬件条件下性能更为出众,先释放硬件红利,并完美适配新硬件的发展趋势,最大程度上提升数据库服务效能。
Cost Effective 事半功 “ 倍 ” —— 性能成倍提升,按量计费我们需要一个在性能上能超过传统数据库的云数据库,并且可以给用户减少成本压力,因为云计算的本身其实是要给客户一个很实惠的服务,所以 TDSQL-C MySQL 版,可实现真正的按量计费和弹性的扩缩容。
那么其架构纠结是怎样的呢?我们进一步来看看。
插图来自腾讯云官方文档:
从上述架构来看,TDSQL-C是典型的存算分离架构,同时在计算层和存储层都做了加速处理,中间利用了RDMA高速网络来降低IO延迟。该架构是一写多读模型,最大可以支持15个只读节点(单节点实现10万级QPS,那么16个节点应该可以轻松实现百万级QPS性能了),同时存储层可以实现弹性扩容,实现超大容量存储,可达百TB。底层数据使用Raft进行多副本一致性保证,看上去实现99.99%的计算层高可用是没有任何问题的。
另外从功能、安全、性能方面细看,我查看了相关资料,发现目前TDSQL-C for MySQL还有不少自研实用的特性,我比较关注的有如下几个:
空闲事务会话自动kill - 类似Oracle Profile资源控制
Instant DDL(超大表快速加列) - Oracle 12c也有类似功能
动态线程池 -thread_pool和per-thread 可以动态切换不需要重启,OLTP下很优化
闪回查询 - 目前暂时仅支持InnoDB
执行计划缓存点优化 - 相当于去掉了解析、准备节点,类似Oracle soft parse
计算下推 -可以降低server层和存储引擎层之间的延迟
Invisable Index -这实际上最早是Oracle 11g推出的技术,没想到国产都有了
执行计划固定Outline - 固定SQL执行计划的利器
热点更新保护 - 这主要是针对高并发、秒杀等场景,Oracle 23c也引入了类似技术
个人感觉这些小的功能点都非常不错,不过部分功能还有一些限制,比如计算下推,还不支持group by、having等操作,但是确实也看到一些非常前沿的功能特性,希望以后能不断增强。
同时TDSQL-C 还有Serverless版本,有人曾经说未来云数据库的终极形态可能就是Serverless,实际上Serverless最近1年确实非常🔥。话不多说,我们来看TDSQL-C Serverless版本的部署形态架构是怎样的。
插图来自腾讯云官方文档:
从上面这个架构图我们大概知道,所谓的Serverless,本质上就是要实现一种状态:让开发或应用系统像使用自来水一样使用云数据库,随关随停,按需按具体使用情况付费;同时计算层和存储层弹性无感扩容,前端应用无感知。除此之外,今年TDSQL-C还发布了全球首创的可释放存储架构,可以进一步压缩用户的成本,真正做到不使用不付费。另外其在弹性稳定性上也做出了很强的优化能力,保证在弹性过程中0抖动。据悉,TDSQL-C Serverless已经逐步在多家电商、证券、游戏、教育等超大流量企业中投产使用。
至于生态等其他方面暂时不提,虽然自己是拥有10多年运维经验的数据库老司机,实际上个人对TDSQL的运维体验很缺乏,那么多其运维管理到底如何呢,用户用起来到底爽不爽呢?我想最有发言权的一定还是实实在在的用户,刚好我们之前团队一位兄弟去了某银行,该银行目前使用了TDSQL承载核心业务,我随便问了几句使用体验,总的来看感觉是非常不错的,使用起来比较丝滑,知识库也不错。
从前同事的回复来看,其使用感受要比另外一款分布式数据库的体验好很多。来自用户的评价应该是最真实的,因为他们是实实在在的在深入使用,我想这或许就是TDSQL能够在各大银行攻城略地的原因吧。
因此对于数据库而言,我认为除了要对开发者友好之外,我们还需要对运维友好,要让大家用起来更简单、更便捷!尤其是分布式数据库,这一点尤为重要。
最后我想说说最后一个维度的服务与市场,这方面其中一个非常重要的部分就是数据库文档、产品文档;实话实说TDSQL 这方面我认为还做得不够,希望能进一步完善加强。实际上,不仅是TDSQL,其他国产数据库的文档我基本上都翻过,我感觉下大家在这方面的功夫都不够,跟Oracle、MySQL的文档比起来还是有一定差距。
不管怎么样讲,希望我们国产数据库越来越好,从全面替代到引领数据库行业发展,我想,不久的将来,我们一定会看到这一天。