目录
#1.1PostgreSQL
1.1.1简介
1.1.2特点
1.1.3优势
1.1.4架构
1.1.5应用场景
#2.1安装PostgreSQL
#3.1PostgreSQL结构
3.1.1PG的逻辑结构
3.1.2PG的物理结构
1.1PostgreSQL
1.1.1简介
PostgreSQL,作为一个功能强大且开源的对象关系型数据库管理系统,自诞生以来,便以其卓越的性能和丰富的特性赢得了全球开放者和企业的青睐。
1.1.2特点
开源与自由:PostgreSQL 完全开源,遵循 PostgreSQL 许可证,这一特性使得用户可以自由地使用、修改和分发 PostgreSQL,无需担心版权问题,同时也促进了全球开发者的积极参与和贡献。
标准符合性:PostgreSQL 高度符合 SQL 标准,支持复杂的查询语法、子查询、窗口函数、公共表表达式(CTE)等高级特性,使得开发者可以更加灵活地编写高效、易读的 SQL 代码。
数据类型丰富:PostgreSQL 提供了丰富的数据类型,包括基本类型(如整数、浮点数、字符串等)、日期和时间类型、数组、枚举、范围类型、JSON、地理空间类型等,这些类型极大地扩展了 PostgreSQL 的应用范围,使其能够处理各种复杂的数据场景。
事务与并发:PostgreSQL 采用多版本并发控制(MVCC)机制,确保了在高并发环境下的数据一致性和隔离性。同时,PostgreSQL 还支持复杂的事务处理,包括嵌套事务、保存点等,为开发者提供了强大的事务管理能力。
扩展性:PostgreSQL 支持扩展和插件机制,允许用户根据需要定义新的数据类型、函数、操作符、索引方法等。这一特性使得 PostgreSQL 能够不断适应新的业务需求和技术发展。
安全性:PostgreSQL 提供了细粒度的访问控制、加密传输、审计日志等安全特性,确保了数据库的安全性和数据的保密性。
1.1.3优势
高性能:PostgreSQL 通过优化查询计划、支持并行查询、分区表等特性,提供了卓越的性能表现。即使在处理大规模数据和高并发访问时,也能保持高效的响应速度。
高可用性:PostgreSQL 支持主从复制、流复制和逻辑复制等多种复制方式,使得数据库系统能够轻松实现高可用性和容灾备份。在发生故障时,能够快速恢复服务,确保业务的连续性。
灵活性:PostgreSQL 的丰富数据类型和高级特性使得它能够灵活应对各种复杂的业务场景。无论是处理结构化数据还是非结构化数据,PostgreSQL 都能提供强大的支持。
社区支持:PostgreSQL 拥有一个活跃的开发者社区和丰富的生态系统。社区中不仅有大量的教程、文档和插件可供使用,还有众多经验丰富的开发者愿意分享经验和解答问题。
成本效益:作为开源软件,PostgreSQL 降低了企业的成本投入。同时,其卓越的性能和广泛的应用场景也使得 PostgreSQL 成为了许多企业的首选数据库产品。
1.1.4架构
PostgreSQL 的架构设计体现了其高性能和可扩展性的特点。在逻辑层面上,PostgreSQL 包含了数据库集群、表空间、数据库、Schema、表、索引等结构;在物理层面上,则包括数据文件、日志文件、参数文件、控制文件等物理存储方式。其中,数据块(Page)作为数据读写的基本单位,在 PostgreSQL 中扮演着至关重要的角色。通过优化数据块的读写效率和布局方式,PostgreSQL 能够进一步提高其性能表现。
1.1.5应用场景
企业应用:如 ERP、CRM、HRM 等系统,需要处理复杂的事务和查询操作。PostgreSQL 凭借其高性能和事务处理能力,能够为企业应用提供稳定可靠的数据支持。
数据分析:在数据仓库和商业智能领域,PostgreSQL 凭借其丰富的数据类型和高级查询特性,能够轻松应对大规模数据分析和挖掘任务。
Web 应用:对于需要高并发访问和实时数据处理的 Web 应用来说,PostgreSQL 的 MVCC 机制和扩展性特性使得其成为了一个理想的选择。
地理信息系统(GIS):通过 PostGIS 扩展,PostgreSQL 能够支持地理空间数据的存储和分析功能,为 GIS 应用提供了强大的数据支持。
物联网与大数据:随着物联网和大数据技术的不断发展,PostgreSQL 凭借其高性能、可扩展性和丰富的数据类型特性,在物联网和大数据领域中也得到了广泛的应用。
2.1安装PostgreSQL
(1)安装编译安装所需环境

(2)编译安装
解包
配置

编译,安装 
配置环境
创建用户
useradd postgres
创建数据存储目录
mkdir /usr/local/pgsql/data
更改数据存储目录的归属用户
chown postgres /usr/local/pgsql/data
(3)配置环境变量

(4)登录数据库



3.1PostgreSQL结构
3.1.1PG的逻辑结构
PG采用了多层逻辑结构:第一层为实例,第二层为数据库,第三层为Schema。每个Schema下可以创建表,视图,索引,函数等数据库对象。

实例层:最上层是 PostgreSQL 实例,通过网络地址(xxx.xxx.xxx.x:port
形式)对外提供服务,是数据库运行的整体环境。
数据库层:实例可包含多个独立数据库(如 db1
、db2
),用于隔离不同业务数据。
Schema 层:每个数据库又可划分多个 Schema(如 public
、userschema1
),作为逻辑命名空间,进一步组织管理数据库对象,避免命名冲突。
对象层:Schema 下是具体数据库对象,像表(table1
、table2
)、视图(view1
)、函数(func1
)、序列(sequence1
)等,是实际存储和处理数据的单元,体现了 PostgreSQL 灵活的分层管理与对象组织方式 。
3.1.2PG的物理结构
数据库的文件默认保存在initdb时创建的数据目录中。在数据目录中有很多类型,功能不同的目录和文件,除了数据文件之外,还有参数文件,控制文件,数据库运行日志及预写日志等。本质上都是PG的相关一些文件。
各个目录里的内容及用途:
bin:二进制可执行文件,是PG数据库的所有相关命令所在,为方便使用需设置到环境变量中。
lib:动态库目录,PostgreSQL运行所需要的动态所在此目录下。
share:放有文档和配置模板文件,一些拓展插件的SQL文件在此目录下的extension中。
data:目录是数据库群集的物理存储核心,包含用户数据,元数据和配置文件。
include:目录则提供编译扩展和客户端程序所需的C语言头文件。
数据库目录结构

/usr/local/pgsql/data/ -- 数据目录
├── base -- 表和索引文件存放目录
├── global -- 影响全局的系统表存放目录
├── pg_commit_ts -- 事务提交时间戳数据存放目录
├── pg_dynshmem -- 被动态共享所使用的文件存放目录
├── pg_logical -- 用于逻辑复制的状态数据
├── pg_multixact -- 多事务状态的数据
└── pg_notify --LISTEN/NOTIFY 状态的数据
├── pg_replslot -- 复制槽数据存放目录
├── pg_serial -- 已提交的可序列化信息存放目录
├── pg_snapshots -- 快照
├── pg_stat -- 统计信息
├── pg_stat_tmp -- 统计信息子系统临时文件
├── pg_subtrans -- 子事务状态数据
├── pg_tblspc -- 表空间
├── pg_twophase -- 预备事务状态文件
├── pg_wal -- 事务日志(预写日志)
└── pg_xact -- 日志提交状态的数据存放目录