您当前的位置:首页 > 电脑百科 > 数据库 > 百科

内核创新,这才是国产数据库该有的样子

时间:2022-07-25 09:53:27  来源:  作者:IT168企业级

缺乏自主的关键技术是国产数据库被诟病最多的痛点。

众所周之,国产数据库中,绝大多数是基于开源数据库改造的,尤其是基MySQL或 PostgreSQL改造的居多,这本身无可厚非。

自研,并非只有从0开始完全自研一条路,基于开源数据库做半自研,然后逐渐深入关键核心模块,直至最终完全掌控开源数据库,也是自研。但是,这绝不是在开源数据库上穿个“衣”带个“帽”。毫无疑问,在数据库市场中,自研、内核创新、核心业务系统等词被滥用了。

那么,基于开源数据库的国产数据库中,到底有没有,具有自己的技术创新,甚至内核级创新的产品呢?答案,当然是有的。

今天,老鱼就想来聊一聊openGauss的技术创新,为此,老鱼采访了openGauss 技术委员会主席李国良,openGauss开源数据库首席架构师黄凯耀,听他们说一说openGauss内核与架构技术创新的故事。

李国良,清华大学计算机系副主任、教授、博士生导师。在数据库会议和期刊上发表论文150余篇,他引10000余次。获得了VLDB 2017 Early Career Research Contributions Award(亚洲首位)、IEEE TCDE Early Career Award(亚洲首位)。SIGMOD 2021大会主席,VLDB 2021 Demo 主席,ICDE 2022 Industry ChAIr,获国家科技进步二等奖、江苏省科技进步一等奖。

黄凯耀,openGauss开源数据库首席架构师,负责openGauss的技术规划与产品设计工作,在数据库高性能架构、高可用架构、OLTP性能优化、OLAP性能优化、一体化架构、软硬协同等领域有丰富的理论、工程与实践经验。

什么是数据库内核?学过数据库的都知道,内核通常指数据库最核心的部分,比如:优化器、解析器、执行器、存储引擎等。

openGauss对内核如何界定?老鱼找到一张官方图:

如上图,粉色的部分就是openGauss界定的内核部分,包括线程管理、通信管理、SQL引擎、存储引擎、安全管理、AI。那么,openGauss在内核上都有哪些创新?其实,上图已经能看出一部分东西。

众所周之,openGauss内核早期衍生自PostgreSQL-XC,但如今,openGauss与PostgreSQL-在架构和内核上,已经有了极大的差异。

如上图,openGauss执行模型,采用线程池模型。而PostgreSQL是进程模型。这么改有什么好处?进程模型,数据库进程通过共享内存实现通讯和数据共享,每个进程对应一个并发连接,这就存在高并发下,进程切换性能损耗,导致多核扩展性问题。而线程池技术的整体设计思想是线程资源池化、并且在不同连接之间复用,因此,高并发连接切换代价小,内存损耗小,执行效率高。

李国良说,openGauss尤其在核心的优化器、执行器、存储引擎方面,做了很多的改进和优化,与传统的关系型数据库,有了本质区别。

存储引擎方面,openGauss实现存储引擎融合,即一套架构支持多种存储模式。openGauss支持多引擎(行存储引擎、列存储引擎、内存引擎),而PostgreSQL仅支持行存储引擎。看起来只是多支持了2个引擎,但其中涉及很多关键技术。比如:openGauss行存储引擎采用原地更新(in-place update)设计(又名:Ustore存储引擎),追加写引擎(HEAP),支持MVCC(Multi-Version Concurrency Control,多版本并发控制),同时支持本地存储和存储、计算分离部署方式。

原地更新相比非原地更新有什么好处?李国良给老鱼打了个比方,简单的说,非原地更新是一张表一直往上加,有删有增,维护这张表代价非常大。openGauss 内核此前的版本使用的行存储引擎是Append Update(追加更新)模式,追加更新对于业务中的增、删以及HOT(Heap Only Tuple) Update(即同一页面内更新)有很好的表现,但对于跨数据页面的非HOT UPDATE场景,垃圾回收不够高效,因此,Ustore存储引擎应运而生。

众所周知,优化器的好坏会直接决定关系型数据库的强弱,优化器一般分为RBO(Rule-Based Optimizer)基于规则的优化器和CBO(Cost-Based Optimizer)基于代价的优化器,PostgreSQL支持CBO,openGauss支持CBO,SQL by pass。

虽然都支持CBO,但对复杂场景的优化能力是完全不同的。李国良说,openGauss在优化器的CBO上做了很多技术创新。首先,openGauss添加了很多查询重写规则,查询重写优化;其次,openGauss做了很多CBO代价的调优模型,适应不同场景;最后,openGauss加了基于机器学习的代价估计方法和优化算法,使得优化器更智能,适用于更多、更全面的复杂场景。

Sql-bypass是openGauss针对OLTP场景开发的一个轻量化执行器,它解决的是什么问题?在典型的OLTP场景中,简单SQL查询占了很大部分比例。试想一下,如果一个简单的SQL查询因为复杂的CBO逻辑,而消耗不必要的CPU资源浪费执行时间,那肯定是不行的。SQL by pass就是为了加速这类查询设计的,可以极大地缩短执行器通用框架处理逻辑,极大地提升执行的性能。

执行器方面,为了提高SQL的执行速度,解决传统数据处理引擎条件逻辑冗余的问题,openGauss执行器引入了自适应实时编译(Codegen)技术,其核心思想是为具体的查询生成定制化的机器码代替通用的函数实现,并尽可能地将数据存储在CPU寄存器中。

总的来说,openGauss内核创新围绕“四高”原则,即:高性能、高可用、高安全、高智能。比如:高性能,openGauss聚焦了很多新型技术,包括NUMA-Aware技术、智能优化技术、内核并行执行的技术,这些都是在内核创新方面引领的一些新型技术。

高智能,在数据库内核方面涉及到很多优化技术,包括很多优化NP问题,以及代价估算技术。传统方式都是基于一些独立性假设、均匀分布假设,这导致估算结果非常不准确,而openGauss通过众多智能技术(智能索引技术、智能数据化分析技术、智能优化内核技术)提升准确性、提升数据库内核优化效率,提高可复制性。

(密态数据库总体架构)

高安全,是openGauss非常重视的一个特性,openGauss引领了防篡改、全密态数据库发展,也得到了一些POC的测试。此后,openGauss会持续构筑这些能力,打造安全、稳定的数据库密态内核,达到商用产品化标准,保护用户敏感、隐私数据的全生命周期的安全。

黄凯耀则给老鱼分享了4个架构创新,工具创新的故事,分别是插件化架构、可观测内核架构、资源池化架构、数据安全架构,而这四个架构创新是基于用户场景驱动的,解决的是易迁移、易运维、易开发、易扩展的刚需问题。

篇幅所限,本文只解析插件化架构及可观测内核架构。

黄凯耀告诉老鱼,插件化架构的提出,是为了易迁移的目标,也就是为了实现方便简单的把其它数据库往openGauss迁移。为了达成这个目标,openGauss设计了数据库的插件化架构。首先,在计算引擎这一层上面,定义了数据库的扩展点。数据库内核开发者可以基于这些扩展点,去实现其它数据库语法的兼容插件。

同时,为了更方便支持应用开发者把原有的数据库迁移到openGauss上,在内核层面,openGauss实现了SQL兼容性评估插件。基于应用提供的SQL语句,去调用相应的数据库插件,基于该插件的能力,对SQL语句进行评估并得出可读性很强的评估报告,为什么说可读性很强?因为,它是从其它数据库迁移到openGauss的迁移建议的中文提示,而非模糊化的英文提示。

第二个故事,是可观测架构。可观测与可运维是社区开发者对openGauss提出的另外一项重大诉求,并不亚于迁移方面的呼声。黄凯耀说,解决的问题是怎样对openGauss进行更加全面系统地性能监控和故障诊断。

搞过数据库运维的人都知道一个棘手的场景,就是业务部门反馈系统慢,但DBA从有限的数据库监控指标上却看不出任何问题。因此,加强数据库可观测性是降低数据库使用成本一个非常重要的手段。

相较而言,要实现全栈的可观测、可跟踪架构,技术难度很高。因为,这不仅涉及到数据库内核,数据库运维,还涉及操作系统内核等,黄凯耀说。

openGauss通过资源消耗链的角度,把整个系统的资源消耗分为三类:

存储资源消耗链

网络资源消耗链

CPU内存资源消耗链

在每一个资源消耗链上,可以通过上钻下探的方法,去实现系统性能问题的优化或者故障问题的定位。通过这种全面系统的上钻下探,就可以实现一个良好的可观测架构。

而这背后,需要对数据库内核代码做更多的增强,并且仅数据库内核增强还不够,还需要借助操作系统最先进的eBPF技术,才可能提供更全面、更丰富的可观测数据。而有了丰富的数据,诊断系统就可以基于这些数据做基于专家模型的推理或AI诊断。

通常,从一个业务指标,关联到数据库等待时间指标,再关联到操作系统的资源消耗指标,是目前主流数据库所提供的可观测能力。但openGauss更进了一步,直接把数据库内核中的热点函数也追踪起来,这样,实现了在等待事件之下的进一步的观测与诊断。

因此,openGauss可观测架构实现了从观测数据到诊断定位的全链条打通。

实际上,openGauss内核与架构技术创新的故事远不止这些,本文也只是管中窥豹,无法一一列举。比如:在Oracle 21c中才出现的区块链表 ,在openGauss 2.0中就已经被实现 。当然,即便如此,openGauss依然还需要持续提升和完善,创新之路上还有很长的路要走。但本文想表达的是,无论是内核创新,还是架构创新,事实上,无论是那种架构的创新,最终都与内核息息相关,只有完全掌握消化内核并在此基础上持续创新,才算是真正的自主可控。

数据库发展了半个多世纪,在旧的数据库技术上,中国与西方差距其实不大,大家都知道怎么去做。李国良说,但在软件工程能力上,我们与国外是有差距的,这需要我们努力,而超越机会更大的是创新性,我们要去引领创新,而不是跟随别人创新。

因为,你走别人的路,一直跟别人学,是永远不可能成功的。



Tags:国产数据库   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
孟晚舟现身上海!华为“根技术”发力国产数据库
《科创板日报》6月7日讯(记者 黄心怡)今日(6月7日),华为全球智慧金融峰会2023在上海开幕。华为副董事长、轮值董事长、CFO孟晚舟在会上表示,当前,技术的奇点正在临近,生成式AI、云、...【详细内容】
2023-06-08  Search: 国产数据库  点击:(92)  评论:(0)  加入收藏
内核创新,这才是国产数据库该有的样子
缺乏自主的关键技术是国产数据库被诟病最多的痛点。众所周之,国产数据库中,绝大多数是基于开源数据库改造的,尤其是基MySQL或 PostgreSQL改造的居多,这本身无可厚非。自研,并非只...【详细内容】
2022-07-25  Search: 国产数据库  点击:(327)  评论:(0)  加入收藏
三年内收入翻倍,净利润超3亿元,国产数据库这么赚钱?
文丨刘雨琦马云曾说,数据是当下“最贵”的资产,若阿里巴巴不搞云计算,可能就会死掉。而数据库作为整个数据行业的基础软件,正在迎来它的春天。国产数据库的接连上市,为信创风口...【详细内容】
2022-07-05  Search: 国产数据库  点击:(281)  评论:(0)  加入收藏
国产数据库的崛起
得数据者得天下。数据,是未来企业发展的基石。在全民都高喊数字化转型的大背景下,不管是企业的运营,还是民生,整个社会无时无刻不在产生数据。而关于如何更好地存储和运用这些...【详细内容】
2022-04-26  Search: 国产数据库  点击:(463)  评论:(0)  加入收藏
从RDS算不算国产数据库谈起
RDS算不算数据库这个争论在几年前有过,DB-ENGINE把RDS收录为数据库产品后,这种争论少了很多。实际上RDS是关系型数据库服务的简称,本身RDS不是数据库,而RDS使用一些开源的数据库...【详细内容】
2022-03-29  Search: 国产数据库  点击:(418)  评论:(0)  加入收藏
▌简易百科推荐
向量数据库落地实践
本文基于京东内部向量数据库vearch进行实践。Vearch 是对大规模深度学习向量进行高性能相似搜索的弹性分布式系统。详见: https://github.com/vearch/zh_docs/blob/v3.3.X/do...【详细内容】
2024-04-03  京东云开发者    Tags:向量数据库   点击:(9)  评论:(0)  加入收藏
原来 SQL 函数是可以内联的!
介绍在某些情况下,SQL 函数(即指定LANGUAGE SQL)会将其函数体内联到调用它的查询中,而不是直接调用。这可以带来显著的性能提升,因为函数体可以暴露给调用查询的规划器,从而规划器...【详细内容】
2024-04-03  红石PG  微信公众号  Tags:SQL 函数   点击:(7)  评论:(0)  加入收藏
如何正确选择NoSQL数据库
译者 | 陈峻审校 | 重楼Allied Market Research最近发布的一份报告指出,业界对于NoSQL数据库的需求正在持续上升。2022年,全球NoSQL市场的销售额已达73亿美元,预计到2032年将达...【详细内容】
2024-03-28    51CTO  Tags:NoSQL   点击:(19)  评论:(0)  加入收藏
为什么数据库连接池不采用 IO 多路复用?
这是一个非常好的问题。IO多路复用被视为是非常好的性能助力器。但是一般我们在使用DB时,还是经常性采用c3p0,tomcat connection pool等技术来与DB连接,哪怕整个程序已经变成以...【详细内容】
2024-03-27  dbaplus社群    Tags:数据库连接池   点击:(20)  评论:(0)  加入收藏
八个常见的数据可视化错误以及如何避免它们
在当今以数据驱动为主导的世界里,清晰且具有洞察力的数据可视化至关重要。然而,在创建数据可视化时很容易犯错误,这可能导致对数据的错误解读。本文将探讨一些常见的糟糕数据可...【详细内容】
2024-03-26  DeepHub IMBA  微信公众号  Tags:数据可视化   点击:(11)  评论:(0)  加入收藏
到底有没有必要分库分表,如何考量的
关于是否需要进行分库分表,可以根据以下考量因素来决定: 数据量和负载:如果数据量巨大且负载压力较大,单一库单一表可能无法满足性能需求,考虑分库分表。 数据增长:预估数据增长...【详细内容】
2024-03-20  码上遇见你  微信公众号  Tags:分库分表   点击:(17)  评论:(0)  加入收藏
在 SQL 中写了 in 和 not in,技术总监说要炒了我……
WHY?IN 和 NOT IN 是比较常用的关键字,为什么要尽量避免呢?1、效率低项目中遇到这么个情况:t1表 和 t2表 都是150w条数据,600M的样子,都不算大。但是这样一句查询 ↓select *...【详细内容】
2024-03-18  dbaplus社群    Tags:SQL   点击:(13)  评论:(0)  加入收藏
应对慢SQL的致胜法宝:7大实例剖析+优化原则
大促备战,最大的隐患项之一就是慢SQL,对于服务平稳运行带来的破坏性最大,也是日常工作中经常带来整个应用抖动的最大隐患,在日常开发中如何避免出现慢SQL,出现了慢SQL应该按照什...【详细内容】
2024-03-14  京东云开发者    Tags:慢SQL   点击:(13)  评论:(0)  加入收藏
过去一年,我看到了数据库领域的十大发展趋势
作者 | 朱洁策划 | 李冬梅过去一年,行业信心跌至冰点2022 年中,红衫的一篇《适应与忍耐》的报告,对公司经营提出了预警,让各个公司保持现金流,重整团队,想办法增加盈利。这篇报告...【详细内容】
2024-03-12    InfoQ  Tags:数据库   点击:(37)  评论:(0)  加入收藏
SQL优化的七个方法,你会哪个?
一、插入数据优化 普通插入:在平时我们执行insert语句的时候,可能都是一条一条数据插入进去的,就像下面这样。INSERT INTO `department` VALUES(1, '研发部(RD)', &#39...【详细内容】
2024-03-07  程序员恰恰  微信公众号  Tags:SQL优化   点击:(24)  评论:(0)  加入收藏
站内最新
站内热门
站内头条