第 004 篇,openGauss,华为开源的一款高性能、高安全、高可靠的企业级关系型数据库 - 图1

openGauss是一款开源的关系型数据库系统,它基于PostgreSQL进行开发,在保留PostgreSQL优秀特性的同时,加入了华为自主研发的高可用、高性能、高安全等特点,成为一款适用于企业级应用的数据库系统。

一、概述

openGauss是一款全面友好开放,携手伙伴共同打造的企业级开源关系型数据库。openGauss提供面向多核架构的极致性能、全链路的业务、数据安全、基于AI的调优和高效运维的能力。openGauss深度融合华为在数据库领域多年的研发经验,结合企业级场景需求,持续构建竞争力特性。

二、特点

1. 高性能

  • 提供了面向多核架构的并发控制技术,结合鲲鹏硬件优化方案,在两路鲲鹏下,TPCC Benchmark可以达到150万tpmc的性能。
  • 针对当前硬件多核numa的架构趋势, 在内核关键结构上采用了Numa-Aware的数据结构。
  • 提供Sql-bypass智能快速引擎技术。
  • 针对数据频繁更新的场景,提供ustore存储引擎。

2. 高可用

  • 支持主备同步、异步以及级联备机多种部署模式。
  • 数据页CRC校验,损坏数据页通过备机自动修复。
  • 备机并行恢复,10秒内可升主提供服务。
  • 提供基于paxos分布式一致性协议的日志复制及选主框架。

3. 高安全

  • 支持全密态计算,访问控制、加密认证、数据库审计、动态数据脱敏等安全特性,提供全方位端到端的数据安全保护。

4. 易运维

  • 基于AI的智能参数调优和索引推荐,提供AI自动参数推荐。
  • 慢SQL诊断,多维性能自监控视图,实时掌控系统的性能表现。
  • 提供在线自学习的SQL时间预测。

5. 全开放

  • 采用木兰宽松许可证协议,允许对代码自由修改,使用,引用。
  • 数据库内核能力全开放。
  • 提供丰富的伙伴认证,培训体系和高校课程。

三、架构设计

1. 系统架构

openGauss实现了资源池化架构,首次实现计算、内存和存储三层解耦,层层池化带来更好的资源调度效率,更好的处理性能和创新的敏捷性。基于数据多模融合的趋势,实现了HTAP架构。同时在openGauss社区联合打造图数据库和时序数据库等不同模型的数据处理能力,这使得openGauss可以实现多模数据的融合处理与分析。

第 004 篇,openGauss,华为开源的一款高性能、高安全、高可靠的企业级关系型数据库 - 图2

2. 软件架构

传统的主备复制架构向资源池化架构演进,支持1主7备,主节点支持读写,备机横向扩展读能力,以满足现实世界典型负载性能要求。

第 004 篇,openGauss,华为开源的一款高性能、高安全、高可靠的企业级关系型数据库 - 图3

  • DMS

    DMS是动态库,集成在数据库内部,通过TCP/RDMA网络传输PAGE内容,将主备内存融合,提供内存池化能力,以此实现备机实时一致性读功能。

  • DSS

    DSS是独立进程,直接管理磁阵裸设备,并对外提供类似分布式文件系统的能力。通过共享内存和客户端API动态库,为数据库提供创建文件、删除文件、扩展和收缩文件、读写文件的能力。

  • Shared Storage

    支持企业级存储和分布式存储。与传统建库相比,资源池化将目录分为三种类型,每实例独占且不共享、每实例独占且共享、所有实例共享。其中需要共享的目录均需存放到共享存储上,而不共享的目录存放在本地盘上。另外备机建库只需要建隶属于自己的目录,不需要再次创建所有实例共享的目录结构。

  • OCK-RDMA

    可选通过OCK RDMA降低DMS主备页面交换时延,开启OCK RDMA,备机一致性读时延性能提升20%+。

  • SCM

    基于持久化内存的SCM加速,实现同等内存成本下性能提升30%。

四、安装部署

这里以一主一备节点安装为例。

1. 创建用户组dbgroup

  1. groupadd dbgroup

2. 创建普通用户helloworld,并设置密码

账户和密码均为 helloworld

  1. useradd -g dbgroup helloword
  2. passwd helloword

3. 解压下载的安装包

使用helloworld登录到服务器,解压openGauss压缩包到安装目录,如:/opt/software/openGauss

  1. tar -jxf openGauss-x.x.x-openEuler-64bit.tar.bz2 -C /opt/software/openGauss

4. 进入安装目录

  1. cd /opt/software/openGauss/simpleInstall

5. 执行安装

  1. sh install.sh -p 5432 -w my_password --multinode
  • 安装后,数据库的主节点名称为nodename1,备节点名称为nodename2。
  • 安装后,数据库主节点目录安装路径/opt/software/openGauss/data/master,备节点目录安装路径为/opt/software/openGauss/data/slave,其中/opt/software/openGauss为解压包路径,data/master(slave)为新创建的数据库节点目录。

6. 验证是否成功

安装执行完成后,分别使用ps和gs_ctl查看进程是否正常

  1. ps ux | grep gaussdb
  2. gs_ctl query -D /opt/software/openGauss/data/master

执行上述两个指令,如果能分别看到进程,以及数据库基本信息,则表示安装成功。

五、使用示例

以下是使用Python连接OpenGauss数据库的代码示例

  1. import psycopg2
  2. # 连接数据库
  3. conn = psycopg2.connect(database="helloworld", user="helloworld", password="helloworld", host="localhost", port="5432")
  4. # 创建游标
  5. cur = conn.cursor()
  6. # 创建表
  7. cur.execute("CREATE TABLE student(id integer,name varchar,sex varchar);")
  8. #插入数据
  9. cur.execute("INSERT INTO student(id,name,sex) VALUES(%s,%s,%s)",(1,'Aspirin','M'))
  10. cur.execute("INSERT INTO student(id,name,sex) VALUES(%s,%s,%s)",(2,'Taxol','F'))
  11. cur.execute("INSERT INTO student(id,name,sex) VALUES(%s,%s,%s)",(3,'Dixheral','M'))
  12. # 获取结果
  13. cur.execute('SELECT * FROM student')
  14. rows = cur.fetchall()
  15. # 输出结果
  16. for row in rows:
  17. print(row)
  18. # 关闭连接
  19. conn.commit()
  20. cur.close()
  21. conn.close()

六、相关资源