GaussDB为什么选择PostgreSQL

GaussDB并非是一个产品,而是一系列产品的统称,目前GaussDB产品线主要包括GaussDB T (OLTP)和GaussDB A (OLAP)。其中GaussDB T的前身是GaussDB 100,是华为自2007年开始在自研内存数据库基础上全面改造而来的一款分布式数据库,此前华为由于在电信计费领域的需求而自主研发了一款内存数据库。GaussDB A的前身是GaussDB 200,是华为自2011年开始基于PostgreSQL 9.2.4自主研发的一款具备多模分析及混合负载能力的大规模并行处理分布式数据库,支持行列混合存储以及线程化,支持高达2048节点的集群规模,提供PB(Petabyte)级数据分析能力、多模分析能力和实时处理能力。

openGauss内核虽然源于PostgreSQL,但华为在开发过程中结合企业级场景需求,通过C++语言(PostgreSQL是用C语言写的)对80+%的数据库内核代码进行了重构,修改和新增了70万行核心代码。着重在整体架构、数据库内核三大引擎 (优化器、执行引擎、存储引擎)、事务、以及鲲鹏芯片等方面做了大量的深度优化。

例如,通过引入向量化引擎和编译执行引擎等从多个维度重构了执行引擎,通过列存及自适应压缩等全新重构了存储引擎。除了数据库内核,在高可用、数据库安全和AI特性方面,openGauss数据库也做了极大的增强。PG11.3版本数据库中共有290个数据库参数,而openGauss目前有500多个数据库参数,每个参数对应一个数据库内核功能,所以可以看到华为对PG的内核做了非常大的改造和增强。

做数据库内核开发的技术难度很大,哪怕开发团队对内核架构与机制的制定上出现了丝毫的问题,上线后都极有可能会出现后果严重。有时一旦确定项目无法进行下去,甚至可能需要推倒重来。所以基于一款已经成熟的开源数据库进行自主研发就是一个很好的选择。那为什么选择PG而不是在互联网公司已经得到广泛使用的MySQL,可能是华为在调研分析后看中了PG各方面优秀的特性:

代码质量高:作为学院派的代表,PG的代码简洁、规范、结构清晰,非常适合从源码级进行二次研发。相比之下,修改MySQL的代码会困难很多。

功能完善强大:PG支持的数据类型丰富(多模能力),SQL语法完善(高级SQL特性),查询优化性能强。以JSON支持为例,PG从2012年的9.2版本就已经添加了对JSON数据类型的支持,相比之下Oracle从2014年发布12c才开始支持JSON,而MySQL直到2015年发布5.7.8版本才开始原生支持JSON。以join算法为例,PG几乎支持所有的多表连接算法;以SQL为例,PG支持大多数SQL语法,相比之下MySQL支持较弱;此外PG的查询优化处理能力,例如复杂子查询等都要强于MySQL。

技术先进:PG号称是世界最先进的开源数据库,其先进性不仅体现在基本的存储、事务、查询处理等方面,更多的是体现在其新技术上,比如JIT查询计划的即时编译和外部表技术等。

扩展性强:良好的扩展性使得PG非常适合进行二次开发,例如在PG基础架构之上引入MPP框架可以构建分布式数据仓库GreenPlum(MySQL基本不适合做数据仓库);在PG上引入OpenCypher可以构建具备图数据存储和查询能力的多模数据库AgensGraph;在PG架构上通过将数据自动按时间和空间分片可以构建时序数据库Timescale

原文链接:https://blog.csdn.net/Auspicious_air/article/details/129301469

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值