当前位置: 首页 > news >正文

PostgreSQL 逻辑结构

postgresql逻辑结构

image


一、总体认识

PostgreSQL 是一个典型的 对象-关系型数据库管理系统(ORDBMS)

它的逻辑结构(Logical Structure) 指的是数据库中对象的组织层级与关系。

逻辑结构决定了数据在数据库层面的组织方式,与物理结构(数据文件、表空间) 相对。

📘 PostgreSQL 的逻辑结构层级关系如下:

Cluster → Database → Schema → Object(Tables, Views, Indexes, etc.)

二、逻辑结构层级总览

层级 中文名称 说明
Cluster 数据库集群 PostgreSQL 服务器中所有数据库的集合
Database 数据库 一个逻辑的数据库单元
Schema 模式(命名空间) 用于分类、隔离数据库对象
Object 数据库对象 表、视图、索引、函数、序列等

三、Cluster(数据库集群)

1. 概念

在 PostgreSQL 中,一个 数据库集群(Database Cluster) 是指:

  • 由同一 PostgreSQL 实例(postgres 进程组)管理的 一组数据库

换句话说,一个数据库服务器运行的实例,就是一个数据库集群。

每个集群包含:

  • 全局系统数据库(如 template0, template1, postgres

  • 若干用户创建的数据库

  • 共享的系统表(如 pg_authid, pg_database

2. 特点

  • 一个集群由 initdb 初始化;

  • 集群中所有数据库共享同一组用户与权限;

  • 每个集群有独立的数据目录($PGDATA)。

3. 相关命令

初始化集群:

initdb -D /var/lib/postgresql/data

查看集群中的数据库:

\l   -- 或 \list

四、Database(数据库)

1. 概念

数据库(Database)是集群中的逻辑单元,
用于存放表、视图、索引、函数等对象。

每个用户数据库都有独立的系统目录(pg_catalog)。

2. 系统默认数据库

数据库名 说明
template0 模板数据库,初始化时生成,不能修改
template1 新建数据库的默认模板,可修改
postgres 默认交互数据库,供管理使用

3. 创建与删除数据库

CREATE DATABASE salesdb TEMPLATE template1 OWNER sales_admin;
DROP DATABASE salesdb;

连接数据库:

psql -d salesdb

五、Schema(模式 / 命名空间)

1. 概念

Schema(模式) 是数据库内部的逻辑分组机制,
用于组织、隔离数据库对象,防止命名冲突。

类似于操作系统中的“文件夹”,
在同一数据库内可以有多个 Schema,每个 Schema 下有各自的对象。

2. 默认模式

每个数据库都有一个默认模式:

public

所有未显式指定模式的对象,默认创建在 public 模式中。


3. 创建与使用 Schema

CREATE SCHEMA sales AUTHORIZATION sales_admin;CREATE TABLE sales.orders (order_id SERIAL PRIMARY KEY,customer TEXT,amount NUMERIC
);SET search_path TO sales;  -- 设置默认搜索路径

访问指定模式下对象:

SELECT * FROM sales.orders;

4. 模式搜索路径(Search Path)

PostgreSQL 查找对象的顺序由 search_path 决定:

SHOW search_path;
-- 默认值: "$user", public

修改搜索路径:

SET search_path TO sales, public;

六、Database Objects(数据库对象)

在 Schema 中存放各种 数据库对象(Objects),常见类型如下:

对象类型 说明
Table(表) 存储数据的基本结构
View(视图) 基于 SQL 查询的虚拟表
Materialized View(物化视图) 带有实际数据的缓存视图
Index(索引) 加速查询的结构
Sequence(序列) 生成自增数字
Function(函数) 自定义逻辑与计算
Trigger(触发器) 事件驱动逻辑
Type(类型) 用户自定义数据类型
Domain(域) 带约束的类型
Role(角色) 用户或用户组
Extension(扩展) 模块化功能组件(如 postgis

示例:创建常见对象

CREATE TABLE sales.customers (id SERIAL PRIMARY KEY,name TEXT,email TEXT
);CREATE VIEW sales.active_customers AS
SELECT * FROM sales.customers WHERE email IS NOT NULL;CREATE INDEX idx_email ON sales.customers (email);

七、Schema 与权限控制

Schema 是实现数据库安全隔离的关键机制。

常见权限管理语法:

-- 授予用户访问某模式
GRANT USAGE ON SCHEMA sales TO analyst;-- 授予查询权限
GRANT SELECT ON ALL TABLES IN SCHEMA sales TO analyst;-- 撤销权限
REVOKE ALL ON SCHEMA sales FROM analyst;

八、逻辑结构示意图

PostgreSQL Cluster
│
├── Database: postgres
│   ├── Schema: public
│   │   ├── Table: users
│   │   ├── View: active_users
│   │   └── Function: user_login_count()
│
├── Database: salesdb
│   ├── Schema: sales
│   │   ├── Table: orders
│   │   ├── Table: customers
│   │   └── View: monthly_sales
│   └── Schema: analytics
│       ├── Materialized View: sales_summary
│       └── Function: calc_growth_rate()
│
└── Database: template1

九、Cluster 与 Instance 的区别

名称 层级 说明
Instance(实例) 运行层 一组后台进程 + 内存结构(由 postgres 启动)
Cluster(集群) 逻辑层 一个实例管理的所有数据库集合

👉 PostgreSQL 中的 “集群” 是逻辑概念,不是多节点分布式集群。


十、总结回顾

层级 作用 举例
Cluster 管理一组数据库的整体结构 一个 PostgreSQL 实例
Database 存放业务数据的逻辑单元 salesdb, hrdb
Schema 命名空间,防止命名冲突 public, sales
Object 具体的数据对象 表、视图、索引、函数
http://www.hskmm.com/?act=detail&tid=33860

相关文章:

  • 随机数技术
  • Java学习通互评5
  • 卡车厂实习第三天
  • 第六周作业---定时器
  • 『普及』浅谈图的基础
  • 被C语言链表折磨的一天 Σ( △ |||)︴
  • 运筹学在供应链优化中的实际应用
  • P6715 [CCO 2018] Fun Palace 题解
  • WebGL学习及项目实战(第03期:绘制多个点,线,面)
  • CF 359D. Pair of Numbers
  • 2025多校CSP模拟赛6
  • Java基础——类型转换,变量、常亮、作用域,基本运算符
  • 洛谷 LGR-246 S 模拟赛
  • godot3D节点本身的偏转数值错误竟会导致空间移动穿模??!
  • 题解:qoj7938 Graph Race
  • java中的初等函数
  • 分治算法
  • 专用硬件神经网络优化技术解析
  • 学习逆向的背景知识(自用)
  • Linux-网络安全私房菜(二)
  • pycharm使用远程的ssh的解释器
  • Android SSL Pinning检测利器:SSLPinDetect技术解析
  • AI元人文:社区调解的数字剧场
  • 2025年粉末冶金制品/零件厂家推荐排行榜,专业制造与高品质服务的首选!
  • Dubbo入门-Dubbo的快速使用
  • 站位2
  • 傅里叶变换及DCT点滴
  • 【未完待续】MkDocs 部署安装教程
  • 傅里叶变换点滴
  • [PaperReading] SAIL-Embedding Technical Report: Omni-modal Embedding Foundation Model