openGauss 核心体系架构深度解析

openGauss 核心体系架构深度解析

openGauss 是一款高性能、高安全、高可靠的企业级开源关系型数据库。要掌握它的运维与调优,必须深入理解其底层的体系结构。本文将从配置文件、逻辑架构、内存结构和存储结构四个维度进行详细剖析。

在这里插入图片描述

一、关键配置文件

在启动数据库之前,我们首先要关注两个决定数据库行为的核心文件,它们通常位于数据目录下。

在这里插入图片描述

1. 核心参数配置

这是数据库的总控文件,相当于人的心脏

作用:决定了数据库的内存分配如 shared_buffers、连接限制如 max_connections、日志记录以及端口监听等全局行为

生效机制:修改此文件中的大部分参数(尤其是涉及内存和端口的)需要重启数据库才能生效,部分参数可通过 reload 在线生效

2. 客户端认证策略

这是数据库的门卫文件,全称为 Host-Based Authentication

作用:它严格定义了允许哪些客户端 IP、通过什么认证方式如 md5, sha256, trust、访问哪个数据库以及使用哪个用户名

重要性:配置错误会导致拒绝连接或产生严重的安全漏洞

二、逻辑架构与进程结构

openGauss 的逻辑架构设计非常清晰,各组件分工明确,共同支撑起庞大的数据处理请求。

在这里插入图片描述

1. OM

角色:大管家

功能:提供数据库日常运维和配置管理的接口与工具

场景:我们日常使用的 gs_om 命令就是该模块的体现,用于执行集群的启动、停止、状态查询等操作

2. Client Driver

角色:联络员

功能:负责接收来自应用层的访问请求,并向应用返回执行结果

机制:它负责与 openGauss 实例建立通信链路,发送 SQL 命令。常见的驱动包括 JDBC、ODBC 和 Python 驱动

3. Datanode

角色:核心工兵

功能:负责存储业务数据、执行数据查询任务

高可用架构:实例包含主Primary、备 Standby两种类型

部署建议:为了实现高可用,建议将主、备实例分散部署在不同的物理节点中,防止单点故障。

4. Storage

角色:仓库

功能:指服务器的本地存储资源(即物理磁盘),用于持久化存储数据。


三、内存结构:速度的桥梁

内存是数据库性能的关键瓶颈所在,它充当了慢速磁盘与快速 CPU之间的桥梁。

在这里插入图片描述

1. Shared Buffer

定义:数据库服务器的共享内存缓冲区

核心机制:数据库中的读写操作都是针对内存中的数据。磁盘中的数据必须在处理前加载到此缓冲区中

适用场景:它是加速 I/O 访问速度的核心组件,主要服务于传统的行存储表(OLTP 场景)

2. Cstore Buffer

定义:专门为列存储 (Column Store)表使用的共享缓冲区

调优策略:在以列存表为主的分析型场景(OLAP)中,几乎不用 shared buffer。此时应减少shared_buffers 的配置大小,增加cstore_buffers 的大小,以获得更好的分析性能

3. MOT

定义:一种全内存存储引擎

特点:所有数据和索引都完全驻留在内存中,而非缓存机制

优势:在高性能(极低查询和事务延迟)、高可扩展性(高吞吐量和并发量)以及高资源利用率方面拥有显著优势

四、存储结构:数据的物理家园

数据库节点负责存储数据,其逻辑结构呈现出清晰的层级关系,类似于文件系统的目录结构。

在这里插入图片描述

1. 表空间

本质:是一个目录,系统可以存在多个表空间。
作用:里面存储的是它所包含的数据库的各种物理文件。通过表空间,可以将不同库的数据映射到不同的物理磁盘上(如将热数据放在 SSD)
关系:每个表空间可以对应多个Database(多对多关系的物理承载方)

2. 数据库

作用:用于管理各类数据对象(如表、索引、视图)。
隔离性:各数据库间相互隔离,无法直接跨库访问。
分布:一个数据库管理的对象可以分布在多个Tablespace 上。

3. 数据文件

对应关系:通常每张表只对应一个数据文件。
自动切分:如果某张表的数据量大于 1GB,系统会自动将其切分为多个后缀名为 .1, .2 的数据文件进行存储,以便于操作系统管理。

4. 表

归属:每张表只能属于一个数据库。
约束:每张表只能对应到一个Tablespace。也就是说,一张表的所有数据文件必须在同一个表空间目录下。

5. 数据块

定义:是数据库管理的基本单位,也称为 Page(页)
默认大小:8KB
I/O机制:所有的磁盘 I/O 操作都不是按行读写,而是按Block进行批量读写,以提高效率。


五、练习题

1. 在 openGauss 中,负责接收应用访问请求并返回执行结果的组件是?
A. OM
B. Client Driver
C. Storage
D. Shared Buffer

2. 关于 Shared Buffer 的描述,下列哪项是正确的?
A. 专门用于存储列存表数据
B. 所有数据和索引必须永久驻留在其中
C. 充当慢速磁盘与快速 CPU 之间的桥梁
D. 在列存场景下应尽可能调大

3. 如果业务场景以列存表 (Column Store) 为主,应该如何调整内存参数?
A. 增加 shared_buffers,减少 cstore_buffers
B. 减少 shared_buffers,增加 cstore_buffers
C. 同时增加 shared_buffers 和 cstore_buffers
D. 禁用 shared_buffers

4. MOT (Memory-Optimized Table) 的主要特点是?
A. 数据存储在磁盘,索引存储在内存
B. 仅用于缓存临时数据
C. 所有数据和索引都在内存中
D. 性能低于行存表,但节省空间

5. openGauss 中数据块 (Block) 的默认大小是多少?
A. 4KB
B. 8KB
C. 16KB
D. 32KB

6. 当一张表的数据文件超过多大时,系统会自动将其切分为多个文件?
A. 512MB
B. 1GB
C. 2GB
D. 4GB

7. 关于 Database (数据库) 的描述,错误的是?
A. 数据库之间相互隔离
B. 一个数据库可以分布在多个表空间上
C. 一个表空间只能对应一个数据库
D. 用于管理各类数据对象

8. 哪个配置文件主要负责控制数据库的连接权限和认证方式?
A. postgresql.conf
B. pg_hba.conf
C. cluster_config.xml
D. backup.conf

9. OM (Operation Manager) 模块的主要功能不包括?
A. 数据库日常运维
B. 配置管理
C. 执行 SQL 数据查询
D. 提供管理接口工具

10. 为了保证高可用,建议将 openGauss 的主、备实例如何部署?
A. 部署在同一个物理节点的不同目录下
B. 部署在同一个物理节点的同一个目录下
C. 分散部署在不同的物理节点中
D. 均部署在内存中

11. Tablespace (表空间) 在文件系统层面对应的是什么?
A. 一个具体的文件
B. 一个目录
C. 一个磁盘分区
D. 一个内存区域

12. 下列关于 Table (表) 与 Tablespace 的关系,说法正确的是?
A. 一张表的数据文件可以跨越多个 Tablespace
B. 一张表对应的数据文件必须在同一个 Tablespace 中
C. 一张表可以不属于任何 Tablespace
D. 一张表可以属于多个 Database

13. postgresql.conf 文件中的参数修改后,通常需要进行什么操作才能生效?
A. 立即自动生效
B. 重启数据库或重载配置
C. 重新安装数据库
D. 修改客户端驱动

14. 在 openGauss 进程结构中,哪个组件负责持久化存储数据?
A. Storage
B. Client Driver
C. OM
D. Memory

15. 为什么说内存充当了桥梁的作用?
A. 因为内存比 CPU 慢
B. 因为磁盘 I/O 速度远低于 CPU 处理速度
C. 因为内存容量无限大
D. 因为所有数据必须永久保存在内存中


六、答案与解析

1.B. Client Driver

解析:Client Driver 负责与 openGauss 实例通信,发送 SQL 命令并接收执行结果。OM 是运维模块。

2.C. 充当慢速磁盘与快速 CPU 之间的桥梁

解析:Shared Buffer 是行存共享缓冲区,用于缓存从磁盘读取的数据页,解决 CPU 与磁盘速度不匹配的问题。

3.B. 减少 shared_buffers,增加 cstore_buffers

解析:Cstore buffer 是专门为列存表设计的。在列存场景下,几乎不使用 shared buffer,因此应减少其大小以释放内存给 cstore buffer。

4.C. 所有数据和索引都在内存中

解析:MOT 是内存优化表,其核心特征就是数据和索引完全驻留内存,以此获得高性能和低延迟。

5.B. 8KB

解析:openGauss 默认的数据块(Block/Page)大小为 8KB,这是 I/O 的基本单位。

6.B. 1GB

解析:Datafile Segment 机制规定,如果某张表的数据大于 1GB,会分为多个数据文件存储。

7.C. 一个表空间只能对应一个数据库

解析:这是错误的说法。每个表空间可以对应多个 Database,即多个数据库可以共用一个表空间。

8.B. pg_hba.conf

解析:pg_hba.conf (Host-Based Authentication) 是专门用于配置客户端认证策略(黑白名单)的文件。

9.C. 执行 SQL 数据查询

解析:执行 SQL 查询是 openGauss 实例(Datanode)的工作,OM 负责运维和配置管理(如启动、停止)。

10.C. 分散部署在不同的物理节点中

解析:为了容灾和高可用,主备实例不能在同一台物理机上,否则物理机故障会导致整个集群不可用。

11.B. 一个目录

解析:Tablespace 在物理层面就是一个目录,用于指定数据文件在文件系统中的存储路径。

12.B. 一张表对应的数据文件必须在同一个 Tablespace 中

解析:一张表只能属于一个 Database,也只能位于一个 Tablespace 中。

13.B. 重启数据库或重载配置

解析postgresql.conf 是核心参数文件,大多数参数(尤其是涉及内存和端口的)修改后需要重启 (gs_om -t stop/start) 或重载 (gs_om -t reload) 才能生效。

14.A. Storage

解析:Storage 指的是服务器的本地存储资源(磁盘),负责数据的持久化。

15.B. 因为磁盘 I/O 速度远低于 CPU 处理速度

解析:这是数据库引入缓冲区的根本原因。CPU 处理极快,磁盘 I/O 极慢,必须通过内存作为中间缓冲来加速访问。

日期:2025年12月23日
专栏:openGauss

Read more

假网站排全网第二,真官网翻五页都找不到!NanoClaw创始人破防:SEO之战,我快要输了

假网站排全网第二,真官网翻五页都找不到!NanoClaw创始人破防:SEO之战,我快要输了

整理 | 苏宓 出品 | ZEEKLOG(ID:ZEEKLOGnews) 自从 OpenClaw 爆火之后,各种“Claw”项目接连出现,其中以安全优化版 NanoClaw 最为知名。它的核心代码仅有 4000 行,却获得了 AI 大牛 Andrej Karpathy 的点赞。 可谁也没想到,这款口碑极佳的开源项目,近来竟被一个仿冒网站抢了风头。 投诉无门之下,NanoClaw 创始人 Gavriel Cohen 在 X 社交平台上无奈发文怒斥:谷歌搜索错误地将假网站排在真官网前面,不仅破坏了项目声誉,还埋下了严重的安全隐患,而他费尽心力,却只能哀叹一句——“我正在为自己的开源项目打 SEO 战,但我快要输了。” 那么,NanoClaw 究竟发生了什么?又是怎么走红的?事情还要从 OpenClaw

By Ne0inhk
曝Windows 12将于今年发布?以AI为核心、NPU成「硬件门槛」,网友吐槽:“不想要的全塞进来了”

曝Windows 12将于今年发布?以AI为核心、NPU成「硬件门槛」,网友吐槽:“不想要的全塞进来了”

整理 | 郑丽媛 出品 | ZEEKLOG(ID:ZEEKLOGnews) 当年,微软一句“Windows 10 将是最后一个版本”的表态,让不少用户以为 Windows 进入了“只更新、不换代”的时代。但几年过去,现实却完全不同。 在 Windows 11 发布之后,如今关于 Windows 12 的传闻再次密集出现。从内部代号、代码片段,到硬件厂商的暗示与 OEM 预热标签,种种线索拼在一起,勾勒出一个明显的趋势——这不会只是一次常规升级,而更像是一次围绕 AI 的平台级重构。 更关键的是,这次争议,可能远比当年 TPM 2.0 更大。 精准卡位 Windows 10 退场的时间?

By Ne0inhk
“裸奔龙虾”数量已达27万只,业内人士警告;AI浪潮下,中传“砍掉”翻译等16个专业;薪资谈判破裂,三星电子8.9万人要罢工 | 极客头条

“裸奔龙虾”数量已达27万只,业内人士警告;AI浪潮下,中传“砍掉”翻译等16个专业;薪资谈判破裂,三星电子8.9万人要罢工 | 极客头条

「极客头条」—— 技术人员的新闻圈! ZEEKLOG 的读者朋友们好,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧。(投稿或寻求报道:[email protected]) 整理 | 郑丽媛 出品 | ZEEKLOG(ID:ZEEKLOGnews) 一分钟速览新闻点! * “裸奔龙虾”已高达27万只!业内人士警告:一旦黑客入侵,敏感信息一秒搬空 * 阿里云 CTO 周靖人代管千问模型一号位,刘大一恒管理更多团队 * 中国传媒大学砍掉翻译、摄影等 16 个本科专业,直言教育要面向人机分工时代 * 雷军放话:小米将很快推出 L3、L4 的驾驶 * 消息称原理想汽车智驾一号位郎咸朋具身智能赛道创业 * vivo 前产品经理宋紫薇创业,瞄准 AI 时尚Agent,获亿元融资 * MiniMax 发布龙虾新技能,股价暴涨超 23% * 薪资谈判破裂,三星电子

By Ne0inhk
Python热度下滑、AI能取代搜索引擎?TIOBE最新榜单揭晓!

Python热度下滑、AI能取代搜索引擎?TIOBE最新榜单揭晓!

整理 | 屠敏 出品 | ZEEKLOG(ID:ZEEKLOGnews) 日前,TIOBE 发布了最新的 3 月编程语言榜单。整体来看,本月排名变化不算大,但榜单中仍然出现了一些值得关注的小波动。  AI 工具能帮大家秒懂最新编程语言趋势? 由于 2 月天数较少,3 月的榜单整体变化有限。借着这次发布,TIOBE CEO Paul Jansen 也回应了一个最近被频繁讨论的问题:为什么 TIOBE 指数仍然依赖搜索引擎统计结果?在大语言模型流行的今天,直接询问 AI 哪些编程语言最流行,是不是更简单? 对此,Jansen 的回答是否定的。 他解释称,TIOBE 指数本质上统计的是互联网上关于某种编程语言的网页数量。而大语言模型的训练数据同样来自这些网页内容,因此从信息来源来看,两者并没有本质区别。换句话说,LLM 的判断,本质上也是建立在这些网页数据之上的。 Python 活跃度仍在下降

By Ne0inhk