一、什么是openGauss
openGauss是一款开源的关系型数据库管理系统,它具有多核高性能、全链路安全性、智能运维等企业级特性。 openGauss内核早期源自开源数据库
PostgreSQL,融合了华为在数据库领域多年的内核经验,在架构、事务、存储引擎、优化器及ARM架构上进行了适配与优化。作为一个开源数据库,期
望与广泛的开发者共同构建一个多元化技术的开源数据库社区。
openGauss是一款全面友好开放,携手伙伴共同打造的企业级开源关系型数据库。openGauss提供面向多核架构的极致性能、全链路的业务、数据安全
、基于AI的调优和高效运维的能力。openGauss深度融合华为在数据库领域多年的研发经验,结合企业级场景需求,持续构建竞争力特性。openGauss
网站 (https://opengauss.org/zh/ ) 提供了有关openGauss软件的最新信息。
openGauss是一个数据库管理系统。
数据库是结构化的数据集合。它可以是任何数据,购物清单、图片库或公司网络中的大量信息。要添加、访问和处理存储在计算机数据库中的海量数据
,您需要一个数据库管理系统(DBMS)。数据库管理系统可以对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。由于计算机非常擅长
处理大量数据,因此数据库管理系统可以作为独立程序使用,也可以作为其他应用程序的一部分在计算中发挥着核心作用。
openGauss数据库是关系型的。
关系型数据库是指采用了关系模型来组织数据的数据库,其以行和列的形式存储数据。行和列被称为表,一组表组成了数据库。关系模型可以简单理解为
二维表格模型,而一个关系型数据库就是由二维表及其之间的关系组成的一个数据组织。
openGauss的SQL部分代表 “结构化查询语言”。SQL是最常用的用于访问和处理数据库的标准计算机语言。根据您的编程环境,您可以直接输入SQL、
将SQL语句嵌入到以另一种语言编写的代码中,或者使用包含SQL语法的特定语言 API。
SQL由ANSI/ISO SQL标准定义。SQL标准自1986年以来一直在发展,并且存在多个版本。本手册中,“SQL92”是指1992年发布的标准,“SQL99”是指
1999年发布的标准,“SQL2003”是指2003年发布的标准。“SQL2011”是指该标准的当前版本。openGauss支持标准的SQL92/SQL99/SQL2003/
SQL2011规范。
openGauss软件是开源的。
开源意味着任何人都可以使用和修改软件。任何人都可以下载openGauss软件并使用它,而无需支付任何费用。如果您愿意,您可以研究源代码并对其
进行更改以满足您的需要。openGauss软件使用木兰宽松许可证V2(http://license.coscl.org.cn/MulanPSL2/)来定义软件的使用范围。
二、性能特点
openGauss是关系型数据库,采用客户端/服务器,单进程多线程架构;支持单机和一主多备部署方式,同时支持备机可读、双机高可用等特性。
openGauss有如下基本功能:
1、支持标准SQL
openGauss数据库支持标准的SQL(Structured Query Language,结构化查询语言)。SQL标准是一个国际性的标准,定期会进行更新和演进。
SQL标准的定义分成核心特性以及可选特性,绝大部分的数据库都没有100%支撑SQL标准。openGauss数据库支持SQL92/SQL99/SQL2003等,同时支
持SQL2011大部分的核心特性,另外还支持部分的可选特性。
2、支持标准开发接口
openGauss数据库提供业界标准的ODBC(Open Database Connectivity,开放式数据库连接)及JDBC(Java Database Connectivity,java
数据库连接)接口,保证用户能将业务快速迁移至openGauss。目前支持标准的ODBC3.5及JDBC4.0接口,其中ODBC能够支持CentOS、openEuler、
SUSE、Win32、Win64等平台,JDBC无平台差异。
3、混合存储引擎支持
openGauss数据库支持行存储引擎、列存储引擎和内存存储引擎等。行存分为“inplace update” 和 “append update”两种模式,前者通过单独的回
滚段(undo log)来保留元组的前像以解决读写冲突,可以更自然的支持数据更新;后者将更新记录混杂在数据记录中,通过新旧版本的形式来支持数
据更新,对于旧版本需要定期做vacuum操作来支持磁盘空间的回收。列存支持数据快速分析,更适合OLAP(Online Analytical Processing,联
机分析处理)业务。内存引擎支持实时数据处理,对有极致性能要求的业务提供支撑。
4、事务支持
事务支持指的就是系统提供事务的能力,openGauss支持事务的原子性、一致性、隔离性和持久性。事务支持及数据一致性保证是绝大多数数据库的基
本功能,只有支持了事务,才能满足事务化的应用需求。
A(Atomicity):原子性。整个事务中的所有操作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节。
C(Consistency):一致性。事务需要保证从一个执行性状态转移到另一个一致性状态,不能违反数据库的一致性约束。
I(Isolation):隔离性。隔离事务的执行状态,使它们好像是系统在给定时间内执行的唯一操作。例如有两个事务并发执行,事务的隔离性将确保
每一事务在系统中认为只有该事务在使用系统。
D(Durability):持久性。在事务提交以后,该事务对数据库所作的更改便持久的保存在数据库之中,不会因掉电,进程异常故障而丢失。
openGauss数据库支持事务的隔离级别有读已提交和可重复读,默认隔离级别是读已提交,保证不会读到脏数据。
事务分为隐式事务和显式事务,显式事务的相关基础接口如下:
Start transaction:事务开启
Commit:事务提交
Rollback:事务回滚
另有用户还可以通过“Set transaction”命令设置事务的隔离级别、读写模式或可推迟模式。
5、软硬结合
openGauss数据库支持软硬件的结合,包括多核的并发访问控制、基于SSD(Solid-State Drive,固态硬盘)的IO(输入/输出Input/Output,)
优化、智能的Buffer Pool(缓冲池)数据管理。
6、智能的优化器
openGauss数据库提供了智能的代价模型、智能计划选择,可以显著提升数据库性能。openGauss的执行器包含了向量化执行和LLVM(Low Level
Virtual Machine,底层虚拟机,一种构架编译器的框架系统)编译执行,可以显著提升数据库性能。
7、AI的支持
传统数据库生态依赖于DBA(Database Administrator,数据库管理员)进行数据的管理、维护、监控、优化。但是在大量的数据库实例中,DBA难
以支持海量实例,而AI(Artificial Intelligence ,人工智能)则可以自动优化数据库,openGauss数据库的AI功能包括AI自调优、AI索引推
荐、AI慢SQL诊断等。
8、安全的支持
openGauss数据库具有非常好的安全特性,包括透明加密(即在磁盘的存储文件是加密的)、全密态(数据传输、存储、计算都是加密的)、防篡改(
用户不可篡改)、敏感数据智能发现等。
9、函数及存储过程支持
函数和存储过程是数据库中的一种重要对象,主要功能将用户特定功能的SQL语句集进行封装,并方便调用。存储过程是SQL、PL/SQL(Procedural
Language SQL,过程语言SQL)的组合。存储过程可以使执行商业规则的代码从应用程序中移动到数据库。从而代码存储一次能够被多个程序使用。
允许客户模块化程序设计,对SQL语句集进行封装,调用方便。
存储过程会进行编译缓存,可以提升用户执行SQL语句集的速度。
系统管理员通过对执行某一存储过程的权限进行限制,能够实现对相应数据访问权限的限制,避免了非授权用户对数据的访问,保证了数据的安全。
为了处理SQL语句,存储过程分配一段内存区域来保存上下文。游标是指向上下文区域的句柄或指针。借助游标,存储过程可以控制上下文区域的变化。
支持6种异常信息级别方便客户对存储过程进行调试。支持存储过程调试,存储过程调试是一种调试手段,可以在存储过程开发中,一步一步跟踪存储过
程执行的流程,根据变量的值,找到错误的原因或者程序的bug,提高问题定位效率。支持设置断点和单步调试。
openGauss支持SQL标准中的函数及存储过程,增强了存储过程的易用性。
10、PostgreSQL接口兼容
兼容PSQL客户端,兼容PostgreSQL标准接口。
11、支持SQL hint
支持SQL hint(hints是SQL语句的注释,可以指导优化器选择人为指定的执行计划。)影响执行计划生成、提升SQL查询性能。Plan Hint为用户提
供了直接影响执行计划生成的手段,用户可以通过指定Join顺序\Join、Scan方法\指定结果行数\等多个手段来进行执行计划的调优,以提升查询的
性能。
12、Copy接口支持容错机制
openGauss数据库提供用户封装好的函数来创建Copy错误表,并允许用户在使用“Copy From”指令时指定容错选项,使得“Copy From”语句在执行过
程中部分解析、数据格式、字符集等相关的报错不会报错中断事务、而是被记录至错误表中,使得在“Copy From”的目标文件即使有少量数据错误也可
以完成入库操作。用户随后可以在错误表中对相关的错误进行定位以及进一步排查。
1、高性能
openGauss突破了多核CPU的瓶颈,提供了面向多核架构的并发控制技术,结合鲲鹏硬件优化方案,实现两路鲲鹏128核150万tpmC,内存优化表(MOT)引擎达350万tpmC
针对当前硬件多核numa的架构趋势, 在内核关键结构上采用了Numa-Aware的数据结构。
提供Sql-bypass智能快速引擎技术。
针对数据频繁更新的场景,提供ustore存储引擎。
2、数据分区
内部线程共享的关键数据结构进行数据分区,减少加锁访问冲突。比如CLOG就采用分区优化,解决ClogControlLock锁瓶颈。
3、NUMA化内核数据结构
关键数据结构NUMA化分配,减少跨CPU访问。比如全局PGPROC数组按照NUMA Node的数目分为多份,分别在对应NUMA Node上申请内存。
解决ProcArrayLock锁瓶颈。
4、绑核优化
把网络中断绑核和后台业务线程绑核区分开,避免运行线程在核间迁移造成的性能不稳定。
5、ARM指令优化
结合ARM平台的原子操作lse进行优化,实现关键互斥变量原子高效操作。
6、SQL BY PASS
通过SQL BY PASS优化SQL执行流程,简化CPU执行开销。
7、高可用
正常业务负载情况下,RTO小于10秒,降低节点故障导致的业务不可用时间。
支持主备同步、异步以及级联备机多种部署模式。
数据页CRC校验,损坏数据页通过备机自动修复。
备机并行恢复,10秒内可升主提供服务。
提供基于paxos分布式一致性协议的日志复制及选主框架。
8、并行恢复
主机日志传输到备机时,备机日志落盘的同时,发送给重做恢复分发线程,分发线程根据日志类型和日志操作的数据页发给多个并行恢复线程进行日志
重做,保证备机的重做速度跟上主机日志的产生速度。这样备机实时处于ready状态,从而实现瞬间故障切换。
9、MOT引擎(Beta发布)
内存优化表(MOT)存储引擎是一个专为多核大内存优化的存储引擎,具有极高的联机事务处理(OLTP)性能和资源利用率。MOT的数据和索引完全存储
在内存中,通过NUMA感知执行,算法消除闩锁争用以及查询JIT本地编译,提供低时延数据访问及高效事务执行。
10、高安全
openGauss支持账号管理,账号认证,口令复杂度检查,账号锁定,权限管理和校验,传输加密,操作 审计等全方位的数据库安全能力,保护业务满足
安全要求。
支持全密态计算,访问控制、加密认证、数据库审计、动态数据脱敏等安全特性,提供全方位端到端的数据安全保护。
11、易运维
openGauss将AI算法集成到数据库中,减少数据库维护的负担。
• SQL预测
openGauss根据收集的历史性能数据进行编码和基于深度学习的训练及预测,支持SQL执行时间预测。
• SQL诊断器
openGauss支持SQL执行语句的诊断器,提前发现慢查询。
• 参数自动调整
openGauss通过机器学习方法自动调整数据库参数,提高调参效率,降低正确调参成本。
基于AI的智能参数调优和索引推荐,提供AI自动参数推荐。
慢SQL诊断,多维性能自监控视图,实时掌控系统的性能表现。
提供在线自学习的SQL时间预测。
12、全开放
采用木兰宽松许可证协议,允许对代码*修改,使用,引用。
数据库内核能力全开放。
提供丰富的伙伴认证,培训体系和高校课程。