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可以实现多模数据的融合处理与分析。
2. 软件架构
传统的主备复制架构向资源池化架构演进,支持1主7备,主节点支持读写,备机横向扩展读能力,以满足现实世界典型负载性能要求。
DMS
DMS是动态库,集成在数据库内部,通过TCP/RDMA网络传输PAGE内容,将主备内存融合,提供内存池化能力,以此实现备机实时一致性读功能。
DSS
DSS是独立进程,直接管理磁阵裸设备,并对外提供类似分布式文件系统的能力。通过共享内存和客户端API动态库,为数据库提供创建文件、删除文件、扩展和收缩文件、读写文件的能力。
Shared Storage
支持企业级存储和分布式存储。与传统建库相比,资源池化将目录分为三种类型,每实例独占且不共享、每实例独占且共享、所有实例共享。其中需要共享的目录均需存放到共享存储上,而不共享的目录存放在本地盘上。另外备机建库只需要建隶属于自己的目录,不需要再次创建所有实例共享的目录结构。
OCK-RDMA
可选通过OCK RDMA降低DMS主备页面交换时延,开启OCK RDMA,备机一致性读时延性能提升20%+。
SCM
基于持久化内存的SCM加速,实现同等内存成本下性能提升30%。
四、安装部署
这里以一主一备节点安装为例。
1. 创建用户组dbgroup
groupadd dbgroup
2. 创建普通用户helloworld,并设置密码
账户和密码均为
helloworld
useradd -g dbgroup helloword
passwd helloword
3. 解压下载的安装包
使用helloworld
登录到服务器,解压openGauss压缩包到安装目录,如:/opt/software/openGauss
tar -jxf openGauss-x.x.x-openEuler-64bit.tar.bz2 -C /opt/software/openGauss
4. 进入安装目录
cd /opt/software/openGauss/simpleInstall
5. 执行安装
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查看进程是否正常
ps ux | grep gaussdb
gs_ctl query -D /opt/software/openGauss/data/master
执行上述两个指令,如果能分别看到进程,以及数据库基本信息,则表示安装成功。
五、使用示例
以下是使用Python连接OpenGauss数据库的代码示例
import psycopg2
# 连接数据库
conn = psycopg2.connect(database="helloworld", user="helloworld", password="helloworld", host="localhost", port="5432")
# 创建游标
cur = conn.cursor()
# 创建表
cur.execute("CREATE TABLE student(id integer,name varchar,sex varchar);")
#插入数据
cur.execute("INSERT INTO student(id,name,sex) VALUES(%s,%s,%s)",(1,'Aspirin','M'))
cur.execute("INSERT INTO student(id,name,sex) VALUES(%s,%s,%s)",(2,'Taxol','F'))
cur.execute("INSERT INTO student(id,name,sex) VALUES(%s,%s,%s)",(3,'Dixheral','M'))
# 获取结果
cur.execute('SELECT * FROM student')
rows = cur.fetchall()
# 输出结果
for row in rows:
print(row)
# 关闭连接
conn.commit()
cur.close()
conn.close()