1. 首页 > PostgreSQL教程 > 正文

PostgreSQL教程FG001-什么是PostgreSQL:核心特性与应用场景

PostgreSQL教程FG001-PostgreSQL入门:行业前景、学习准备与运行环境

本文为PostgreSQL初学者提供全面入门指南,包括行业前景、学习准备、运行环境知识(硬件、存储、网络、云平台、容器等)以及国产PG分支介绍,帮助新人快速了解PostgreSQL并做好入行准备。风哥教程参考PostgreSQL官方文档Tutorial, Server Administration内容,适合DBA人员在学习和测试中使用,如果要应用于生产环境则需要自行确认。

Part01-基础概念与理论知识

1.1 PostgreSQL数据库概述

PostgreSQL是一个功能强大的开源关系型数据库管理系统(RDBMS),以其稳定性、扩展性和标准合规性而闻名。它支持SQL标准并提供了许多现代特性,学习交流加群风哥微信: itpux-com

1.2 PostgreSQL发展简史

PostgreSQL起源于1986年的POSTGRES项目,由加州大学伯克利分校开发,经过多年的发展,现已成为最先进的开源数据库之一。

# 查看PostgreSQL版本历史信息
$ curl -s https://www.postgresql.org/docs/current/release.html | grep -E “PostgreSQL [0-9]+\.[0-9]+” | head
-5
PostgreSQL 18.3
PostgreSQL 18.2
PostgreSQL 18.1
PostgreSQL 18
PostgreSQL 17.9

Part02-行业前景与学习准备

2.1 PostgreSQL行业前景

PostgreSQL作为功能最强大的开源关系型数据库,近年来在全球范围内得到了快速发展。根据DB-Engines排行榜,PostgreSQL的受欢迎度持续上升,已成为仅次于Oracle和MySQL的全球第三大数据库。

在国内,随着信创政策的推进和企业数字化转型的加速,PostgreSQL凭借其开源、稳定、可扩展的特性,成为国产数据库替代方案中的重要选择。越来越多的企业开始采用PostgreSQL作为核心业务数据库,尤其是在金融、电信、政府、互联网等关键领域。

从就业市场来看,PostgreSQL相关岗位需求持续增长,薪资水平也高于平均水平。掌握PostgreSQL技术的数据库管理员、开发工程师和架构师成为企业争抢的人才资源。

2.2 学习准备与技能要求

作为PostgreSQL初学者,建议做好以下学习准备:

1. 基础技能:具备SQL基础、Linux操作系统知识、计算机网络基础是学习PostgreSQL的前提。

2. 学习资源:官方文档是最权威的学习资料,此外还可以参考在线教程、书籍和视频课程。

3. 实践环境:搭建自己的PostgreSQL学习环境,通过实际操作加深理解。

4. 社区参与:加入PostgreSQL社区,参与讨论和交流,获取最新技术动态。

学习PostgreSQL需要掌握的核心技能包括:数据库安装配置、SQL查询优化、性能调优、备份恢复、高可用架构设计等。

Part03-软硬件设备与运行环境

3.1 硬件环境要求

PostgreSQL的硬件要求取决于具体的应用场景和数据量大小。一般来说,风哥教程针对风哥教程针对风哥教程针对生产环境建议使用以下配置:

1. CPU:推荐使用多核处理器,如Intel Xeon或AMD EPYC系列,核心数量根据并发用户数和查询复杂度确定。

2. 内存:建议内存大小为数据库大小的25%-50%,至少8GB以上,对于大型数据库可以配置数百GB内存。

3. 存储:选择高性能的存储设备,如SSD或NVMe,以提高数据库的读写性能。

4. 网络:稳定的网络连接,对于分布式部署需要考虑网络延迟和带宽。

3.2 存储环境知识

PostgreSQL对存储系统有以下要求和最佳实践:

1. 文件系统:推荐使用ext4、XFS或ZFS等成熟的文件系统,避免使用NTFS等非Linux原生文件系统。

2. RAID配置:风哥教程针对风哥教程针对风哥教程针对生产环境建议使用RAID 10,提供良好的性能和数据冗余。

3. 存储分区:将数据文件、日志文件和临时文件分别存放在不同的存储设备上,以提高IO性能。

4. 存储性能:关注存储的IOPS、吞吐量和延迟指标,确保满足应用的性能需求。

from oracle:www.itpux.com

3.3 网络环境配置

PostgreSQL的网络配置需要考虑以下几个方面:

1. 网络安全:配置防火墙规则,限制数据库的访问IP和端口,启用SSL加密通信。

2. 连接池:使用连接池技术(如PgBouncer、Pgpool-II)管理数据库连接,提高连接效率。

3. 网络延迟:对于分布式部署,尽量减少节点之间的网络延迟,确保数据同步的及时性。

4. 带宽:根据数据传输量和并发用户数,配置足够的网络带宽。

Part04-部署平台与技术

4.1 云平台部署

各大云平台都提供了PostgreSQL服务,包括:

1. AWS RDS for PostgreSQL:提供完全托管的PostgreSQL服务,支持自动备份、扩展和高可用。

2. Azure Database for PostgreSQL:微软Azure提供的PostgreSQL托管服务,支持多种部署模式。

3. Google Cloud SQL for PostgreSQL:谷歌云平台提供的PostgreSQL服务,支持全球分布和自动故障转移。

4. 国内云厂商:阿里云RDS PostgreSQL、腾讯云PostgreSQL、华为云GaussDB(for PostgreSQL)等。

云平台部署的优势是简化了数据库的管理和维护,降低了运维成本,但需要考虑数据安全和 vendor lock-in 问题。

4.2 虚拟机环境

在虚拟机上部署PostgreSQL是一种常见的方式,主流的虚拟化平台包括VMware vSphere、KVM、Hyper-V等。

虚拟机部署的优势是可以充分利用硬件资源,实现服务器的虚拟化和资源隔离,但需要注意虚拟机的性能开销和资源分配。

在虚拟机上部署PostgreSQL时,建议:

1. 为PostgreSQL分配足够的CPU和内存资源。

2. 使用高性能的虚拟磁盘存储。

3. 配置适当的虚拟网络参数。

4.3 PC服务器部署

在物理PC服务器上部署PostgreSQL是传统的部署方式,适合对性能要求较高的应用场景。

物理服务器部署的优势是可以获得最佳的性能,没有虚拟化的性能开销,但硬件资源利用率较低,维护成本较高。

在选择PC服务器时,需要考虑服务器的扩展性、可靠性和散热性能等因素。

4.4 一体机解决方案

PostgreSQL一体机是将数据库软件、硬件和存储集成在一起的解决方案,如阿里云飞天专有云、华为云Stack等。

一体机解决方案的优势是预配置、易部署、性能优化,适合快速构建数据库系统,但价格较高,灵活性相对较低。

4.5 超融合架构

超融合架构是将计算、存储和网络资源集成在一台服务器中的解决方案,通过软件定义实现资源的池化和管理。

在超融合架构上部署PostgreSQL,可以实现资源的灵活分配和扩展,提高资源利用率,适合云原生和微服务架构。

主流的超融合平台包括VMware vSAN、Nutanix、深信服超融合等。

4.6 Docker容器化部署

Docker容器化技术可以将PostgreSQL打包成容器镜像,实现快速部署和环境一致性。

使用Docker部署PostgreSQL的优势:

1. 环境隔离:每个容器拥有独立的运行环境,避免依赖冲突。

2. 快速部署:通过镜像快速启动PostgreSQL实例。

3. 版本管理:支持不同版本的PostgreSQL镜像并行运行。

4. 资源限制:可以精确控制容器的CPU、内存和存储资源。

# 使用Docker运行PostgreSQL示例
$ docker run –name postgres18 -e POSTGRES_PASSWORD=password -p 5432:5432 -d pgsql: 18

4.7 Kubernetes编排

Kubernetes(K8s)是容器编排平台,可以管理和调度大规模的容器集群。

在Kubernetes上部署PostgreSQL可以实现:

1. 自动扩缩容:根据负载自动调整PostgreSQL实例数量。

2. 高可用性:通过副本集和自动故障转移确保服务连续性。

3. 持久化存储:使用Persistent Volume存储数据库数据。

4. 服务发现:通过Service实现PostgreSQL实例的访问。

常用的PostgreSQL Kubernetes部署工具包括Helm Charts、Crunchy Data Postgres Operator等。

Part05-核心特性分析

5.1 ACID事务支持

PostgreSQL完全支持ACID(原子性、一致性、隔离性、持久性)事务,确保数据的完整性和可靠性。

5.2 丰富的数据类型

PostgreSQL支持多种数据类型,包括基本类型、复合类型、JSON/JSONB、数组类型等。

5.3 高度可扩展性

用户可以自定义数据类型、函数、操作符和索引,满足特定业务需求。

5.4 强大的安全特性

支持行级安全、SSL加密、细粒度权限控制等安全机制。

风哥教程针对风哥教程针对风哥教程针对生产环境建议:PostgreSQL的可扩展性使其能够适应从简单应用到复杂企业级系统的各种场景,学习交流加群风哥QQ113257174

Part06-快速安装与验证

6.1 操作系统检查

本文以Oracle Linux 9.3为例,展示PostgreSQL 18的安装过程。

# 检查操作系统版本
# cat /etc/oracle-release
Oracle Linux Server release 9.3

# 检查内核版本
# uname -r
5.15.0-97.87.1.el9uek.x86_64

# 检查系统架构
# uname -m
x86_64

# 检查内存大小
# free -h
total used free shared buff/cache available
Mem: 31Gi 1.2Gi 28Gi 10Mi 1.7Gi 29Gi
Swap: 15Gi 0B 15Gi

# 检查磁盘空间
# df -h /
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 50G 12G 39G 24% /

6.2 安装步骤

使用PostgreSQL官方yum源安装PostgreSQL 18。

# 安装PostgreSQL yum源
# dnf install -y
https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm

# 禁用默认PostgreSQL模块
# dnf -qy module disable postgresql

# 安装PostgreSQL 18服务器
# dnf install -y postgresql18-server postgresql18-contrib

# 初始化数据库
# /postgresql/fgapp/bin/postgresql-18-setup initdb
Initializing fgedudb … OK

# 启动PostgreSQL服务并设置开机自启
# systemctl enable –now postgresql-18
Created symlink /etc/systemd/system/multi-fgedu.target.wants/postgresql-18.service →
/usr/lib/systemd/system/postgresql-18.service.

# 检查服务状态
# systemctl status postgresql-18
● postgresql-18.service – PostgreSQL 18 fgedudb server
Loaded: loaded (/usr/lib/systemd/system/postgresql-18.service; enabled; preset: disabled)
Active: active (running) since Thu 2026-04-02 10:00:00 CST; 1min ago
Docs: https://www.postgresql.org/docs/18/
Process: 12345 ExecStartPre=/postgresql/fgapp/bin/postgresql-18-check-db-dir ${PGDATA} (code=exited,
status=0/SUCCESS)
Main PID: 12346 (postmaster)
Tasks: 8 (limit: 4915)
Memory: 155.1M
CGroup: /system.slice/postgresql-18.service
├─12346 /postgresql/fgapp/bin/postmaster -D /postgresql/data18/
├─12347 pgsql: logger
├─12349 pgsql: checkpointer
├─12350 pgsql: background writer
├─12351 pgsql: walwriter
├─12352 pgsql: autovacuum launcher
├─12353 pgsql: stats collector
└─12354 pgsql: logical replication launcher

Apr 02 10:00:00 fgedu.net.cn systemd[1]: Starting PostgreSQL 18 fgedudb server…
Apr 02 10:00:00 fgedu.net.cn postmaster[12346]: 2026-04-02 10:00:00.123 CST [12346] LOG: redirecting log
output to logging collector process
Apr 02 10:00:00 fgedu.net.cn postmaster[12346]: 2026-04-02 10:00:00.123 CST [12346] HINT: Future log output
will fgappear in directory “/var/log/postgresql”.
Apr 02 10:00:00 fgedu.net.cn systemd[1]: Started PostgreSQL 18 fgedudb server.

6.3 安装验证

验证PostgreSQL安装是否成功。

# 切换到postgres用户
# su – pgsql # 检查PostgreSQL版本
$ psql –version
psql (PostgreSQL) 18.3

# 登录PostgreSQL
$ psql
psql (18.3)
Type “help” for help.

postgres=#

# 查看数据库列表
postgres=# \l
List of fgedudbs
Name | Owner | Encoding | Collate | Ctype | Access privileges
———–+———-+———-+———+———+———————–
pgsql | pgsql | UTF8 | C.UTF-8 | C.UTF-8 |
template0 | pgsql | UTF8 | C.UTF-8 | C.UTF-8 | =c/pgsql +
| | | | | postgres=CTc/pgsql template1 | pgsql | UTF8 | C.UTF-8 | C.UTF-8 | =c/pgsql +
| | | | | postgres=CTc/pgsql (3 rows)

# 退出PostgreSQL
postgres=# \q
$ exit

Part07-实战操作与示例

7.1 基础数据库操作

创建用户和数据库,进行基本操作。

# 切换到postgres用户
# su – pgsql # 创建fgedu用户
$ createfgedu -P fgedu
Enter password for new role:
Enter it again:

# 创建fgedudb数据库
$ createdb -O fgedu fgedudb

# 验证数据库创建
$ psql -l
List of fgedudbs
Name | Owner | Encoding | Collate | Ctype | Access privileges
———–+———-+———-+———+———+———————–
fgedudb | fgedu | UTF8 | C.UTF-8 | C.UTF-8 |
pgsql | pgsql | UTF8 | C.UTF-8 | C.UTF-8 |
template0 | pgsql | UTF8 | C.UTF-8 | C.UTF-8 | =c/pgsql +
| | | | | postgres=CTc/pgsql template1 | pgsql | UTF8 | C.UTF-8 | C.UTF-8 | =c/pgsql +
| | | | | postgres=CTc/pgsql (4 rows)

7.2 创建表与插入数据

创建表并插入示例数据。

# 使用fgedu用户登录fgedudb数据库
$ psql -U fgedu -d fgedudb
Password for fgedu fgedu:
psql (18.3)
Type “help” for help.

# 创建fgedu_students表
fgedudb=> CREATE TABLE fgedu_students (
fgedudb(> id SERIAL PRIMARY KEY,
fgedudb(> name VARCHAR(50) NOT NULL,
fgedudb(> age INTEGER CHECK (age > 0),
fgedudb(> gender VARCHAR(10),
fgedudb(> email VARCHAR(100) UNIQUE,
fgedudb(> created_at TIMESTAMP DEFAULT NOW()
fgedudb(> );
CREATE TABLE fgedu_# 查看表结构
fgedudb=> \d fgedu_students
Table “public.fgedu_students”
Column | Type | Collation | Nullable | Default
————+—————————–+———–+———-+——————————————–
id | integer | | not null | nextval(‘fgedu_students_id_seq’::regclass)
name | character varying(50) | | not null |
age | integer | | |
gender | character varying(10) | | |
email | character varying(100) | | |
created_at | timestamp without time zone | | | now()
Indexes:
“fgedu_students_pkey” PRIMARY KEY, btree (id)
“fgedu_students_email_key” UNIQUE CONSTRAINT, btree (email)
Check constraints:
“fgedu_students_age_check” CHECK (age > 0)

# 插入示例数据
fgedudb=> INSERT INTO fgedu_students (name, age, gender, email) VALUES
fgedudb-> (‘风哥1号’, 20, ‘男’, ‘zhangsan@fgedu.net.cn’),
fgedudb-> (‘风哥2号’, 22, ‘女’, ‘lisi@fgedu.net.cn’),
fgedudb-> (‘王五’, 21, ‘男’, ‘wangwu@fgedu.net.cn’);
INSERT 0 3

# 查询数据
fgedudb=> SELECT * FROM fgedu_students;
id | name | age | gender | email | created_at
—-+——+—–+——–+———————+——————————-
1 | 风哥1号 | 20 | 男 | zhangsan@fgedu.net.cn | 2026-04-02 10:15:30.456789+08
2 | 风哥2号 | 22 | 女 | lisi@fgedu.net.cn | 2026-04-02 10:15:30.456789+08
3 | 王五 | 21 | 男 | wangwu@fgedu.net.cn | 2026-04-02 10:15:30.456789+08
(3 rows)

# 更新数据
fgedudb=> UPDATE fgedu_students SET age = 23 WHERE name = ‘风哥2号’;
UPDATE 1

# 再次查询数据
fgedudb=> SELECT * FROM fgedu_students WHERE name = ‘风哥2号’;
id | name | age | gender | email | created_at
—-+——+—–+——–+——————-+——————————-
2 | 风哥2号 | 23 | 女 | lisi@fgedu.net.cn | 2026-04-02 10:15:30.456789+08
(1 row)

风哥提示:在生产环境中,建议使用序列作为主键,确保数据的唯一性和性能。

Part08-国产PostgreSQL分支介绍

8.1 主要国产PG分支

随着PostgreSQL在国内的普及,涌现出了多个优秀的国产PostgreSQL分支,主要包括:

1. 人大金仓KingbaseES:基于PostgreSQL开发的企业级关系型数据库,是国内最早的PostgreSQL分支之一,广泛应用于政府、金融、能源等关键领域。

2. 阿里云POLARDB for PostgreSQL:阿里云推出的云原生分布式数据库,基于PostgreSQL构建,支持自动扩展和高可用。

3. 华为云GaussDB(for PostgreSQL):华为云推出的企业级数据库,兼容PostgreSQL,提供高性能、高可靠的数据库服务。

4. 腾讯云PostgreSQL:腾讯云提供的PostgreSQL数据库服务,支持多种部署模式,包括单机、主从、分布式等。

5. 神州通用PostgreSQL:神州通用基于PostgreSQL开发的国产数据库,支持多种硬件平台和操作系统。

8.2 各分支特色功能

各国产PostgreSQL分支在保持与PostgreSQL兼容的基础上,增加了许多适合国内用户需求的特色功能:

1. 人大金仓KingbaseES:增强了安全特性,支持多级安全认证和数据加密,提供完善的审计功能,符合国内信息安全标准。

2. 阿里云POLARDB for PostgreSQL:支持分布式架构,自动分库分表,具备弹性扩展能力,适合大规模数据存储和高并发访问场景。

3. 华为云GaussDB(for PostgreSQL):优化了查询性能,支持向量计算和AI增强,提供智能调优功能,适合数据分析和AI应用场景。

4. 腾讯云PostgreSQL:集成了腾讯云的各种服务,支持与微信、QQ等应用的快速集成,适合互联网应用开发。

5. 神州通用PostgreSQL:支持多种国产硬件平台和操作系统,提供完善的迁移工具,方便用户从其他数据库迁移到PostgreSQL。

Part09-风哥经验总结与分享

9.1 生产环境最佳实践

1. 定期备份:使用pg_dump或pg_basebackup进行备份,确保数据安全。

2. 性能调优:根据硬件配置调整shared_buffers、work_mem等参数。

3. 安全加固:启用SSL、设置强密码策略、限制远程访问。

4. 监控告警:使用pg_stat_statements、Prometheus等工具监控数据库性能。

9.2 典型应用场景

1. 企业级应用:PostgreSQL的稳定性和可扩展性使其适合大型企业应用。

2. 数据仓库:支持复杂查询和并行处理,适合数据分析场景。

3. 互联网应用:JSON/JSONB支持和高性能使其适合Web应用开发。

4. 地理位置应用:PostGIS扩展提供强大的地理空间数据处理能力。

风哥教程针对风哥教程针对风哥教程针对生产环境建议:根据实际业务需求选择合适的PostgreSQL版本,并定期升级以获取最新特性和安全修复。更多视频教程www.fgedu.net.cn

本文为PostgreSQL初学者提供了全面的入门指南,包括行业前景分析、学习准备建议、软硬件设备知识、各种运行环境(云平台、虚拟机、PC服务器、一体机、超融合、Docker、Kubernetes等)的介绍,以及核心特性、安装步骤、实战操作和国产PG分支的详细说明。通过学习本文,读者可以全面了解PostgreSQL,为深入学习和实际应用打下坚实基础。更多学习教程公众号风哥教程itpux_com

from PostgreSQL:www.itpux.com

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息