postgresql初体验

目录

简介

特点

优势

架构

应用场景

结论

安装postgresql

安装编译

编译安装

配置环境变量

登录数据库

dnf安装

安装postgresql

初始化数据库

登录数据库

postgresql结构


简介

PostgreSQL 是一款功能强大的开源关系型数据库管理系统(RDBMS),采用自由的 PostgreSQL 许可证,允许用户自由使用、修改和分发。它诞生于 1986 年,是加州大学伯克利分校的 POSTGRES 项目的延续,经过数十年的发展,已成为最先进的开源数据库之一

特点

  1. 多版本并发控制(MVCC)

    允许多个事务同时访问数据库而不产生锁冲突,提高了并发性能。

  2. 复杂查询支持

    支持高级查询功能,如窗口函数、递归查询和全文搜索。

  3. 数据类型丰富

    内置支持多种数据类型,包括 JSON、XML、数组、范围类型和自定义类型。

  4. 扩展性

    通过插件机制支持自定义函数、索引方法和数据类型,如 PostGIS 地理空间扩展。

  5. 事务完整性

    严格遵循 ACID 原则,确保数据的一致性和可靠性。

  6. 复制与高可用

    支持流复制、逻辑复制和多种高可用解决方案。

优势

  1. 开源与社区支持

    社区驱动的开发模式确保了持续创新和问题修复。

  2. 企业级功能

    提供备份恢复、性能监控、安全认证等企业级特性。

  3. 跨平台兼容性

    支持 Linux、Windows、macOS 等多种操作系统。

  4. 数据完整性

    通过约束、触发器和规则确保数据质量。

  5. 生态系统成熟

    与众多编程语言和框架有良好的集成。

架构

PostgreSQL 的架构设计遵循客户端 - 服务器模型,主要组件包括:

  1. PostgreSQL 服务器进程(postgres)

    作为主服务器进程,管理客户端连接和子进程。

  2. 后台进程

    • 检查点进程(Checkpointer):定期将脏页写入磁盘
    • 日志写入进程(WAL Writer):管理预写日志
    • 自动清理进程(Autovacuum):回收无用空间
    • 统计收集进程(Stats Collector):收集性能统计信息
  3. 内存结构

    • 共享缓冲区(Shared Buffers):缓存数据页
    • WAL 缓冲区:存储预写日志
    • 工作内存(Work Memory):执行排序和哈希操作
  4. 存储结构

    • 表空间(Tablespaces):逻辑存储单元
    • 数据文件(Relations):物理存储文件
    • 索引文件:B-Tree、GiST、GIN 等索引类型

应用场景

PostgreSQL 的灵活性使其适用于多种场景:

  1. 企业应用

    作为核心数据库支持 ERP、CRM 等系统。

  2. Web 应用

    与 Django、Ruby on Rails 等框架集成,支持高并发 Web 服务。

  3. 地理信息系统(GIS)

    通过 PostGIS 扩展处理空间数据。

  4. 数据分析

    结合外部工具(如 Apache Spark)进行数据挖掘和分析。

  5. JSON/XML 数据存储

    原生支持半结构化数据存储和查询。

  6. 高可用环境

    在金融、医疗等领域提供可靠的数据服务。

结论

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 的逻辑结构包括数据库集群、数据库、模式和表:

  1. 数据库集群(Database Cluster)

    由单个 PostgreSQL 实例管理的所有数据库集合。

  2. 数据库(Database)

    集群中的独立实体,包含多个模式。

  3. 模式(Schema)

    数据库中的命名空间,用于组织表、索引等对象。

  4. 表(Table)

    存储数据的基本单元,由行和列组成。

  5. 物理存储方面,PostgreSQL 使用表空间(Tablespaces)管理存储位置,每个表空间包含多个数据文件。表数据以堆文件(Heap File)形式存储,索引则采用 B-Tree 或其他结构优化查询。

    理解这些结构有助于优化数据库设计和性能调优,例如合理使用表空间分布 I/O、通过模式隔离不同业务数据等。

相关推荐
xuyin120410 分钟前
SQLite基础及优化
数据库·sqlite
Faith_xzc37 分钟前
MySQL 迁移至 Doris 最佳实践方案
数据库·mysql·adb
ikun·38 分钟前
MySQL高可用
数据库·mysql
Bug退退退1231 小时前
分析 redis 的 exists 命令有一个参数和多个参数的区别
数据库·redis·缓存
老天文学家了1 小时前
蓝桥杯-不完整的算式
数据库·职场和发展·蓝桥杯
YUNYINGXIA1 小时前
PostgreSQL初体验
数据库·postgresql
舰长1151 小时前
ubuntu 安装 Redis新版Redis 7.x
数据库·redis·ubuntu
文牧之2 小时前
Oracle 数据库的默认隔离级别
运维·数据库·oracle
洁✘2 小时前
POSTGRESQL 初体验
数据库·postgresql
李昊翔的博客3 小时前
保证数据库 + redis在读写分离场景中事务的一致性
数据库·redis·oracle