openGauss

开源数据库

openGauss社区官网

开源社区

openGauss 1.0.1版本正式发布

openGauss2020-10-12theme

经过社区贡献者的共同努力,10 月 12 日,openGauss 正式发布 1.0.1 版本! 新版本推出了分区表自动扩展分区、物化视图、增量备份/恢复、逻辑复制、外键等 20+亮眼的新特性。

自 6 月 30 日正式开源三个月以来,社区贡献者积极参与 openGauss 社区,累计 PR 提交数达到 1000+,累计 Commit 数达到 1500+; 同时 openGauss 迎来了 6 家合作伙伴的商业发行版,海量数据、云和恩墨、神舟通用、虚谷伟业、东华软件、人大金仓等 合作伙伴快速推动了 openGauss 的商用落地。

下载地址

赶快下载体验 openGauss 1.0.1 版本吧!

https://opengauss.org/zh/download.html

新增特性

openGauss 1.0.1 定位为 Update 版本,与原来的 1.0.0 版本特性功能保持兼容,新增特性如下:

  • XML 类型

XML 数据类型可以用于存储 XML 数据。将 XML 数据存到 text 类型中的优势在于它能够为结构良好性来检查输入值, 并且还支持函数对其进行类型安全性检查。要使用这个数据类型,编译时必须使用 configure --with-libxml。

  • 伪列 ROWNUM

ROWNUM 为查询出来的每一行记录生成一个序号,从 1 开始依次递增且不会重复。

  • 聚合函数 median

median 返回给定数值的中值,中值是在一组数值中居于中间的数值, 如果参数集合中包含偶数个数字,函数 median 将返回位于中间的两个数的平均值。

  • 全局临时表

每个数据库只需要创建一次临时表,全局临时表对象放在数据字典中。 临时表(Temporary 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.3 LTS 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 镜像, 启动镜像后,可以将单机数据库以容器化方式部署运行。

特别感谢参与 openGauss 1.0.1 版本的社区贡献者,让我们的新版本顺利和大家见面。 同时我们欢迎更多的贡献者加入进来,共同繁荣 openGauss 开源社区。

贡献者列表(Gitee 账号)

wanfang5, sqyyeah, lvmiao1229, zhang_xubo, zzzzzdb, scarbor_fair, liumin35, jia_junfeng1, chendong76, hongyehongye1, xiangxinyong, lee1002, wuyuechuan, cyw-0-ng, wanggzzs, huiu924, zhouxiongjia, zha_hw, anikikong, gongsiyi150, vastbase_yzhang, willemjiang, zhangxiaohai928, zhangzhijingMY, pan-jun, sun_xu_zong, wang-tq, y1309639, yansong_lee, emmajiang, li-jun056, liang_-123, liyang0608, llzx373, otis4631, totaj, xixicat, zhanglf-zkfr, chenxiaobin19, diagon-alley, gaojia629, gentle_hu, houjhibofa, jin_li, justbk, lys6676, xiezhipeng1, yidianjiujin, you-and-me, yunlongg, alienmoe, chenguojie, deadsec, dolphin-m, enbokang, gauss__gaoshi, giteegauss, grozazz, hillseas, hthinks, johnnyzhou, li_jianqiu, like11, nifinity, nwen_hw, pikeTWG, realzhouqingqing, reganhe_xx, struggle_hw, vinothv, weim-123, wustczx, xiong_xjun, yangyang374, ylfan96, yutang1, ywzq1161327784, zbxue, Adoube_548, RayH2020, barbedcc, bertliu, big_pig_123, bosihouzi, bowen9799, bzhaoop, catofpei, chen_chenn, chennaidong, chenzang, chunlei007, cylfsbm, dikk123, flytigerman, fss567, gwchengcheng, hemny, husan1024, initlove, jane_minjun, jcc123, jeffee, jerome-duomi, jie_lei, jimmyhujiming, jinyu_opengauss, jitao10, kamusis, karna, kivaking, lazpf, liangweii, lilexun, linxiaoxu131415, liushengxi, lizhenfeng123, ljiot, lmte3e4, luyao201, ma_xiaodi, matrix0xcc, nanmu2018, nonolili527, open__gs__2020, panchenbo, qq45068, romber, s36326, seulingfeng, stanleyren, sun_madman, templingfeng, tiantianxiangshang2020, tomas__junny, tonyhehe, toyato, trollzhao, wang_deng_yang, wangrui_rui, wei-haixu, weihan666, wenbling, wjmcat, wjzeng, wn952000, wotchin, xinmiaomiao, xue_meng_en, xzyinyong, yangkang52, yuzhenglin, yz_db, zhaorenhai, zhouzhishan, zilf, zju_hzd, zp123456, zumingjiang, zzcyd, I-am-a-robot, april01xxx, buter, chenlinfeng3, chinapenglin, code_wolf, cyqw, database_structure, ddwolf, dengxuyue, duoketang, duomibabi, ericwangpeng, gaiguoqiang12, gaoyunlong12, georgecao, gwp2464, gyt0221, hangjin2020, hljhnu, huangchengcheng1, huangzijian888, iloveuever, jiang_jianyu, jiangxiangbo, jixi_hexi, lesliexx, liheng188, lihongda12, linianA, lisa100, lishifu_db, liu_hui199828, liujunchigo, liuxu34, liyifeng-seu, looplocked, lqkitten, luo_zihao5524, luohongbins, lvhui123456, meimeidtt, minshengyunwei, mujinqiiang, opengauss_yanghaiyan, opgauss, pku__lisihao, plusvolcano, popastin, qin-wei, shaga, shenyuflying, shirley_zhengx, siven_dev, sl0915, sword-fairy-water-easy, tedlz123, thexiong7, tuohai666, victor-zhc, wang_pei_heng, wangdengke6, wangxinlian, wangzhijun2018, xiliu_h, xukunpeng, xzx666, yang558, yinzhishu, yuejiashen, yujiangaaa, yukai_k, zankyfun4, zerodefect, zhangshujie82, zhangyulong34, zheng_zelin, zhengyuhanghans, zhongjun2, zhu_jinwei

欢迎访问 openGauss 社区代码仓库提交 Issue 反馈你对新版本的建议。

openGauss 组织仓库: https://gitee.com/opengauss

openGauss 镜像仓库: https://github.com/opengauss-mirror