特性介绍
标准SQL支持
支持标准的SQL92/SQL99/SQL2003/SQL2011规范,支持GBK和UTF-8字符集,支持SQL标准函数与分析函数,支持存储过程。
数据库存储管理功能
支持表空间,可以把不同表规划到不同的存储位置。
提供主备双机
事务支持ACID特性、单节点故障恢复、双机数据同步、双机故障切换等。
应用程序接口
支持标准JDBC 4.0特性、ODBC 3.5特性。
管理工具
提供安装部署工具、实例启停工具、备份恢复工具。
安全管理
支持SSL安全网络连接、用户权限管理、密码管理、安全审计等功能,保证数据库在管理层、应用层、系统层和网络层的安全性。
新增特性
openGauss 1.0.1定位为Update版本,与原来1.0.0版本特性功能保持兼容。新增特性如下:
XML类型
XML数据类型可以用于存储XML数据。 将XML数据存到text类型中的优势在于它能够为结构良好性来检查输入值, 并且还支持函数对其进行类型安全性检查。要使用这个数据类型,编译时必须使用configure –with-libxml。
伪列ROWNUM
ROWNUM为查询出来的每一行记录生成一个序号,从1开始依次递增且不会重复。
聚合函数-median
median返回给定数值的中值,中值是在一组数值中居于中间的数值,如果参数集合中包含偶数个数字,函数 median将返回位于中间的两个数的平均值。
全局临时表
每个数据库只需要创建一次临时表,全局临时表对象放在数据字典中。临时表(Tempotary table)用于保存事务或会话期间的中间结果集,临时表中保存的数据只对当前会话可见,所有会话都看不到其他会话的数据;即使当前会话已经提交了(commit)数据,别的会话也看不到它的数据。临时表可以是会话的,临时表中的数据可以跨提交存在,即提交之后仍然存在,但是断开连接后再连接时数据就没有了。也可以是基于事务的,提交之后数据就消失。
外部表
数据不存在于数据库中的表。通过向DB提供描述外部表的元数据,可以把一个操作系统文件或者外部数据源当成数据库表,就像这些数据存储在一个普通数据库表中一样来进行访问。外部表是对数据库表的延伸。FDW(Foreign Data Wrappers)插件允许在openGauss里访问其他异构数据库的表,openGauss支持Foreign Data Wrappers for oracle (oracle_fdw),Foreign Data Wrappers for MySQL(mysql_fdw)和Foreign Data Wrappers for PostgreSQL(Postgres_fdw),从而支持在openGauss中访问异构其他数据库。使用这些插件需要安装相应数据库的客户端包,需要重新编译openGauss,在configure时配置enable_mysql_fdw和enable_oracle_fdw。数据库启动后使用create extension创建扩展组件,create server配置异构数据库连接参数,create user mapping创建异构用户映射关系,CREATE FOREIGN TABLE创建指定数据库的外表。
物化视图
物化视图是数据库查询结果数据的本地副本,存储基于数据表的数据,也可以称为快照。在关系型数据库中普通的视图是一种虚拟(virtual)表,只是存储SQL语句。而物化视图是将视图的查询结果缓存(cached)到了具体(concrete/materialized)表中,存储实际的数据。物化视图主要用于预先计算并保存表连接或聚合等耗时较多的操作的结果,这样,在执行查询时,就可以避免进行这些耗时的操作,从而快速的得到结果。物化视图使用查询重写(query rewrite)机制,不需要修改原有的查询语句,引擎自动选择合适的物化视图进行查询重写,完全对应用透明。
外键
外键表示了两个关系之间的相关联系。以另一个关系的外键作主关键字的表被称为主表,具有此外键的表被称为主表的从表,外键建立了主表和从表之间的参照完整性约束。
UPSERT(insert on conflict do)
当插入遇到约束错误时,直接返回或者改为执行UPDATE。
存储过程内commit,单独调试和调用无参数存储过程可以省去括号
在存储过程中可以调用commit,分批提交数据,保证数据的可靠性。支持设置断点和单步调试,存储过程调试是一种调试手段,可以在存储过程开发中,一步一步跟踪存储过程执行的流程,根据变量的值,找到错误的原因或者程序的bug,提高问题定位效率。
自治事务
自治事务(autonomous transaction)允许你创建一个”事务中的事务”,它能独立于其父事务提交或回滚。利用自治事务,可以开始一个新事务,完成一些工作,然后提交或回滚,所有这些都不影响当前所执行事务的状态。自治事务约束参照规格约束的自治事务部分说明。
关键字别名
关键字如name、value、type作为查询结果列别名。
逻辑复制
在逻辑复制中把主库称为源端库,备库称为目标端数据库,源端数据库根据预先指定好的逻辑解析规则对WAL文件进行解析,把DML操作解析成一定的逻辑变化信息(标准SQL语句),源端数据库把标准SQL语句发给目标端数据库,目标端数据库收到后进行应用,从而实现数据同步。逻辑复制只有DML操作。逻辑复制可以实现跨版本复制,异构数据库复制,双写数据库复制,表级别复制。
增量备份/恢复(beta)
支持对数据库进行全量备份和增量备份,支持对备份数据进行管理,查看备份状态。支持增量备份的合并,过期备份的删除。
数据库服务器动态跟踪页面更改,每当一个关系页被更新时,这个页就会被标记为需要备份。增量备份功能需要打开GUC参数 enable_cbm_tracking,一边允许服务器跟踪修改页。
恢复到指定时间点(PITR)
时间点恢复(Point In Time Recovery)基本原理是通过基础热备 + WAL预写日志 + WAL归档日志进行备份恢复。重放WAL记录的时候可以在任意点停止重放,这样就有一个在任意时间的数据库一致的快照。即可以把数据库恢复到自开始备份以来的任意时刻的状态。在恢复时可以指定恢复的停止点位置为TID,时间和LSN。
备机replay模式
主备双机同步支持remote_apply模式,在remote_apply模式下,主机需要等待备机日志redo恢复完才返回给应用。
全局分区索引(Global Partitioned Indexes)
全局索引就是在全表上创建索引,它是独立的索引。如果查询引用非分区字段时可以提升性能。
基于范围分区的自动扩展分区
INTERVAL分区是针对Range类型分区的一种功能拓展。对连续数据类型的Range分区,如果插入的新数据值与当前分区均不匹配,Interval-Partition特性可以实现自动的分区创建。分区字段必须是整型或时间类型。
并行查询(beta)
支持并行扫描算子,优化 SQL 语句的执行方式,从单一线程,最多使用单个 CPU 运算的模式,提升到多线程,协同完成工作的模式。并行查询消耗更多的硬件资源,但大大提高了任务的执行效率。当前支持顺序扫描,nestloop算子的并行查询。
OS平台
支持openEuler 20.3LTS on X86-64和麒麟V10 on ARM;支持在openEuler和CentOS的容器上运行。
支持 Alter System set语法修改数据库实例级参数
在会话内通过alter system set语句可以修改系统参数的值。根据不同参数的要求,在重新连接或者重启数据库后,可以修改成功并将参数写入postgresql.conf和postgresql.conf.bak配置文件中。
支持IPv6协议
数据库支持使用IPv6协议进行连接。
postgis插件
postgis一个空间数据库,它增加了地理对象的支持,它使用的数据类型为点、线、面,允许在SQL中进行空间关系位置查询。使用该功能前需要安装postgis插件。
支持Gin索引
gin索引,即通用倒排索引,是一个存储集合的数据结构。gin索引适合用于多值类型的元素搜索,比如数组和全文检索。
支持存储过程调试
通过安装pldebuger插件,可以对函数和存储过程的SQL语句进行调试。
支持备机扩容
支持工具对数据库集群进行扩容备机。可以从单机或者主备数据库最多扩容到一主四备。
支持WDR自动诊断分析报告
WDR(Workload Diagnosis Report)基于两次不同时间点系统的性能快照数据,生成这两个时间点之间的性能表现报表,用于诊断数据库内核的性能故障。
支持异构数据库事务级同步能力(限DML)
支持容器化部署(alpha)
提供单机数据库的容器化部署能力。先通过脚本构建数据库的docker镜像,启动镜像后,可以将单机数据库以容器化方式部署运行。