openGauss数据库是华为深度融合在数据库领域多年经验,结合企业级场景要求推出的新一代企业级开源数据库。此前,Gauss松鼠会已经发布了openGauss数据库核心技术系列文章,介绍了openGauss的技术原理。从本期开始,Gauss松鼠会将陆续推出openGauss数据库源码解析系列文章,带你解析openGauss各功能模块的源代码逻辑和实现原理。该系列文章主要面向openGauss内核开发者及研究人员。
接下来会先向大家概要介绍openGauss。本篇将从openGauss概述、应用场景、系统结构、代码结构四个方面对openGauss进行介绍。
一、openGauss概述
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标准中的函数及存储过程,增强了存储过程的易用性。
原文链接:https://blog.csdn.net/GaussDB/article/details/116132257
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




