目录
简介
PostgreSQL 是一款功能强大的开源关系型数据库管理系统(RDBMS),采用自由的 PostgreSQL 许可证,允许用户自由使用、修改和分发。它诞生于 1986 年,是加州大学伯克利分校的 POSTGRES 项目的延续,经过数十年的发展,已成为最先进的开源数据库之一
特点
-
多版本并发控制(MVCC)
允许多个事务同时访问数据库而不产生锁冲突,提高了并发性能。 -
复杂查询支持
支持高级查询功能,如窗口函数、递归查询和全文搜索。 -
数据类型丰富
内置支持多种数据类型,包括 JSON、XML、数组、范围类型和自定义类型。 -
扩展性
通过插件机制支持自定义函数、索引方法和数据类型,如 PostGIS 地理空间扩展。 -
事务完整性
严格遵循 ACID 原则,确保数据的一致性和可靠性。 -
复制与高可用
支持流复制、逻辑复制和多种高可用解决方案。
优势
-
开源与社区支持
社区驱动的开发模式确保了持续创新和问题修复。 -
企业级功能
提供备份恢复、性能监控、安全认证等企业级特性。 -
跨平台兼容性
支持 Linux、Windows、macOS 等多种操作系统。 -
数据完整性
通过约束、触发器和规则确保数据质量。 -
生态系统成熟
与众多编程语言和框架有良好的集成。
架构
PostgreSQL 的架构设计遵循客户端 - 服务器模型,主要组件包括:
-
PostgreSQL 服务器进程(postgres)
作为主服务器进程,管理客户端连接和子进程。 -
后台进程
- 检查点进程(Checkpointer):定期将脏页写入磁盘
- 日志写入进程(WAL Writer):管理预写日志
- 自动清理进程(Autovacuum):回收无用空间
- 统计收集进程(Stats Collector):收集性能统计信息
-
内存结构
- 共享缓冲区(Shared Buffers):缓存数据页
- WAL 缓冲区:存储预写日志
- 工作内存(Work Memory):执行排序和哈希操作
-
存储结构
- 表空间(Tablespaces):逻辑存储单元
- 数据文件(Relations):物理存储文件
- 索引文件:B-Tree、GiST、GIN 等索引类型
应用场景
PostgreSQL 的灵活性使其适用于多种场景:
-
企业应用
作为核心数据库支持 ERP、CRM 等系统。 -
Web 应用
与 Django、Ruby on Rails 等框架集成,支持高并发 Web 服务。 -
地理信息系统(GIS)
通过 PostGIS 扩展处理空间数据。 -
数据分析
结合外部工具(如 Apache Spark)进行数据挖掘和分析。 -
JSON/XML 数据存储
原生支持半结构化数据存储和查询。 -
高可用环境
在金融、医疗等领域提供可靠的数据服务。
结论
PostgreSQL 凭借其强大的功能、开源特性和灵活的架构,成为企业和开发者的首选数据库之一。无论是小型应用还是大型企业系统,PostgreSQL 都能提供稳定、高效的数据管理解决方案。其丰富的扩展生态和持续的技术创新,使其在未来的数据库市场中仍将保持竞争力。
安装postgresql
安装编译
[root@localhost ^]#yum -y install gcc gcc-* make libiccu libicu-devel readline-devel zlib zlib-devel
编译安装
解压源码包
[root@localhost]#tar zxvf postgresql-16.3.tar.gz#切换目录
[root@localhost ^]#cd postgresql-16.3#--prefix指定安装目录
[root@localhost postgresql-16.3]#./configure --prefix=/usr/1ocal/pgsql编译以及安装
[root@localhost postgresql-16.3]#make & make install配置环境
#创建用户
[root@localhost]#adduser postgres#创建数据存储目录
[root@localhost]#mkdir /usr/local/pgsql/data#更改数据存储目录的归属用户
[root@localhost`]#chown postgres /usr/local/pgsql/data
配置环境变量
vim /etc/profile
export PATH=$PATH:/usr/local/pgsql/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/pgsql/lib
末尾添加
#刷新环境变量
[root@localhost]#source /etc/profile
登录数据库
[root@localhost ^]# su -postgres
[postgres@localhost`]$/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data[postgres@localhost~]$/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l logfile start
[postgres@localhost]$ /usr/local/pgsql/bin/psql
dnf安装
安装postgresql
[root@localhost]# dnf install -y postgresql-server
初始化数据库
[root@localhost~]# postgresql-setup --initdb
登录数据库
[root@bogon~]# psql
切换到postgres用户登录
postgresql结构
PostgreSQL 的逻辑结构包括数据库集群、数据库、模式和表:
-
数据库集群(Database Cluster)
由单个 PostgreSQL 实例管理的所有数据库集合。 -
数据库(Database)
集群中的独立实体,包含多个模式。 -
模式(Schema)
数据库中的命名空间,用于组织表、索引等对象。 -
表(Table)
存储数据的基本单元,由行和列组成。 -
物理存储方面,PostgreSQL 使用表空间(Tablespaces)管理存储位置,每个表空间包含多个数据文件。表数据以堆文件(Heap File)形式存储,索引则采用 B-Tree 或其他结构优化查询。
理解这些结构有助于优化数据库设计和性能调优,例如合理使用表空间分布 I/O、通过模式隔离不同业务数据等。