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

POSTGRESQL 初体验

一 POSTGRESQL

目录

一 POSTGRESQL

1.简介

2.特点

3.优势

4.架构

5.应用场景

6.结论

二 安装 postgresql

(1)关闭selinux防火墙

(2)安装编译依赖包

(3)解压源码包

3.1 切换目录

(4) 配置环境变量

(5)登录数据库

2. DNF 安装

1.安装postgresql

2.初始化

3.登录数据库

三 POstgresql 结构

1.PG的逻辑结构

2.PG的物理结构

(1)软件安装目录

(2)数据库目录结构

(3)数据库有两个基础的对象 一个是oid.,一个是表空间

(4)base 的物理布局设计

(5)表空间跟数据库关系


一 PostgreSQL

1.简介

PostgreSQL,作为一个功能强大且开源的对象关系型数据库管理系统(ORDBMS),自其诞生以来,便以其卓越的性能和丰富的特性赢得了全球开发者和企业的青睐。源自加利福尼亚大学伯克利分校的PostgreSQL,不仅继承了其前身Ingres的精髓,更在不断的发展中推陈出新,成为了现代数据库领域的佼佼者。

2.特点

开源与自由:PostgreSQL完全开源,遵循PostgreSQL许可证,这一特性使
得用户可以自由地使用、修改和分发PostgreSQL,无需担心版权问题,同时也
促进了全球开发者的积极参与和贡献。
标准符合性:PostgreSQL高度符合SQL标准,支持复杂的查询语法、子查询、
窗口函数、公共表表达式(CTE)等高级特性,使得开发者可以更加灵活地编写
高效、易读的SQL代码
数据类型丰富:PostgreSQL提供了丰富的数据类型,包括基本类型(如整数、
浮点数、字符串等)、日期和时间类型、数组、枚举、范围类型、JSON、地理空
间类型等,这些类型极大地扩展了PostgreSQL的应用范围,使其能够处理各种
复杂的数据场景。
事务与并发:PostgreSQL采用多版本并发控制(MVCC)机制,确保了在高并
发环境下的数据一致性和隔离性。同时,PostgreSQL还支持复杂的事务处理,
包括嵌套事务、保存点等,为开发者提供了强大的事务管理能力。
扩展性:PostgreSQL支持扩展和插件机制,允许用户根据需要定义新的数据
类型、函数、操作符、索引方法等。这一特性使得PostgreSQL能够不断适应新
的业务需求和技术发展。
安全性:PostgreSQL提供了细粒度的访问控制、加密传输、审计日志等安全
特性,确保了数据库的安全性和数据的保密性。

3.优势

局性能:PostgreSQL 迪过优化查询计划、支持开行登询、分区表等特性,提
供了卓越的性能表现。即使在处理大规模数据和高并发访问时,也能保持高效的
响应速度。
高可用性:PostgreSQL支持主从复制、流复制和逻辑复制等多种复制方式,
使得数据库系统能够轻松实现高可用性和容灾备份。在发生故障时,能够快速恢
复服务,确保业务的连续性。
灵活性:PostgreSQL的丰富数据类型和高级特性使得它能够灵活应对各种复
杂的业务场景。无论是处理结构化数据还是非结构化数据,PostgreSQL都能提
供强大的支持。
社区支持:PostgreSQL拥有一个活跃的开发者社区和丰富的生态系统。社区
中不仅有大量的教程、文档和插件可供使用,还有众多经验丰富的开发者愿意分
享经验和解答问题。
成本效益:作为开源软件,PostgreSQL降低了企业的成本投入。同时,其卓
越的性能和广泛的应用场景也使得PostgreSQL成为了许多企业的首选数据库产
品。
4.架构

PostgreSQL的架构设计体现了其高性能和可扩展性的特点。在逻辑层面上,PostgreSQL 包含了数据库集群、表空间、数据库、Schema、表、索引等结构;在物理层面上,则包括数据文件、日志文件、参数文件、控制文件等物理存储方式。其中,数据块(Page)作为数据读写的基本单位,在PostgreSQL中扮演着至关重要的角色。通过优化数据块的读写效率和布局方式,PostgreSQL能够进一步提高其性能表现。

5.应用场景

PostgreSQL广泛应用于各种业务场景中,包括但不限于以下方面:

企业应用:如ERP、CRM、HRM等系统,需要处理复杂的事务和查询操作。
PostgreSQL 凭借其高性能和事务处理能力,能够为企业应用提供稳定可靠的数
据支持。
数据分析:在数据仓库和商业智能领域,PostgreSQL凭借其丰富的数据类型
和高级查询特性,能够轻松应对大规模数据分析和挖掘任务。
Web 应用:对于需要高并发访问和实时数据处理的Web应用来说,PostgreSQL
的MVCC机制和扩展性特性使得其成为了一个理想的选择。
地理信息系统(GIS):通过PostGIS扩展,PostgreSQL能够支持地理空间
数据的存储和分析功能,为GIS应用提供了强大的数据支持。
物联网与大数据:随着物联网和大数据技术的不断发展,PostgreSQL 凭借其
高性能、可扩展性和丰富的数据类型特性,在物联网和大数据领域中也得到了广
泛的应用。

6.结论

综上所述,PostgreSQL作为一款功能强大、开源的数据库管理系统,在现代信息化建设中发挥着越来越重要的作用。其丰富的特性、卓越的性能、灵活的应用场景以及强大的社区支持使得PostgreSQL成为了众多企业和开发者的首选数据库产品。随着技术的不断进步和应用的不断扩展,相信PostgreSQL将在未来

二 安装 postgresql

1.编译安装

(1)关闭selinux防火墙

setenforce 0
systemctl stop firewalld

(2)安装编译依赖包

dnf -y install gcc libicu libicu-devel readline-devel zlib zlib-devel

(3)解压源码包

tar zxvf postgresq1-16.3. tar. gz

3.1 切换目录

cd postgresq1-16.3

指定安装目录

./configure -- prefix=/usr/local/pgsql

编译安装

make && make install

以及配置环境创建用户

adduser  postgres

在创建数据存储目录

mkdir /usr/local/pgdql/data

添加数据存储用户目录归属

chown -R postgres /usr/local/pgsql/data

(4) 配置环境变量

vim /etc/profile
export LD_LIBRARY_PATH=/usr/local/pgsql/lib
export PATH=$PATH:/usr/local/pgsq1/bin

在刷新环境变量

source /etc/profile

(5)登录数据库

 注意:不要使用root用户登录,切换到postgres这个用户

切换用户

su - postgres

在初始化

/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
/usr/local/pgsql/bin/pg_ctl  -D /usr/local/pgsql/data -l logfile start

初始化完成在进入数据库

psql

2. DNF 安装

1.安装postgresql

dnf -y install postgresql-server

2.初始化

postgresql-setup --initdb

3.登录数据库

psql
su - postgres

三 POstgresql 结构

1.PG的逻辑结构

PG采用了多层逻辑结构:第一层为实例,第二层为数据库(每个实例下可有多个相互独立的数据库),第三层为Schema(每个数据库下包含多个Schema)。每个Schema下可以创建表、视图、索引、函数等数据库对象。如下图所示

>Database cluster(数据库集簇):由postgresql server管理的数据库的
集合,下面由多个database组成。一个数据库集簇可以包含多个Database、多
个User,每个Database以及Database中的所有对象都有它们的所有者:User。
> Database 数据库:Postgres 默认数据库、Template0 最精简模板、Template1
默认模板;数据库本身也是数据库对象,并且在逻辑上彼此分离。存储 schema 的
一个逻辑空间,对应在物理层面上也是一个目录。
>Schema:一个数据库可以有多个User用户,多个Schema模式,默认创建一个数据库会存储在默认表空间,它包含一个Public名称的Schema模式(拷贝自
Template1模板)。它可隔离多个用户之间相同名称的对象。一个数据库可以有
多个Schema模式,他们互不相关互相隔离。实际存储数据库对象的逻辑空间->
逻辑上的对象编号,schema是依附于数据库而存在的。
>User用户:postgres用户是默认创建的超级管理员;每个数据库都有一个
OWNER用户,每个用户可以OWNER多个数据库。
数据库对象:这里包含了table,index,view,序列,函数等,数据最终存储
在表中。表的组成表由多个page[block]组成)一个page包含(页头信息空
闲空间 Tuple),实际存储数据的区域->对应到物理层面上就是文件 -- >page
构成
> tablespace:存储数据库的一个逻辑空间,可以存放不同的数据库 -- >对应
在物理层面上是一个目录

个数据库会存储在默认表空间,它包含一个Public名称的Schema模式(拷贝自
Template1模板)。它可隔离多个用户之间相同名称的对象。一个数据库可以有
多个Schema模式,他们互不相关互相隔离。实际存储数据库对象的逻辑空间->
逻辑上的对象编号,schema是依附于数据库而存在的。

>User用户:postgres用户是默认创建的超级管理员;每个数据库都有一个
OWNER用户,每个用户可以OWNER多个数据库。
数据库对象:这里包含了table,index,view,序列,函数等,数据最终存储
在表中。表的组成表由多个page[block]组成)一个page包含(页头信息空
闲空间 Tuple),实际存储数据的区域->对应到物理层面上就是文件 -- >page
构成

> tablespace:存储数据库的一个逻辑空间,可以存放不同的数据库 -- >对应
在物理层面上是一个目录

OID:所有数据库对象都有各自的oid(object identifiers),oid是一个无符
号的四字节整数,相关对象的oid都存放在相关的system catalog表中,比如
数据库的oid和表的oid分别存放在pg_database,pg_class表中。

2.PG的物理结构

数据库的文件默认保存在initdb时创建的数据目录中。在数据目录中有很多类型、功能不同的目录和文件,除了数据文件之外,还有参数文件、控制文件、数据库运行日志及预写日志等。本质上都是PG的相关一些文件

(1)软件安装目录

PostgreSQL 数据库的软件目录通常是在/usr 目录下(也可自定义位置),使用pg_confg命令可以看当前数据库的基本情况,也可以在环境变量中可以看到。最直接可以使用which命令看到,最直接可以使用which命令看到

安装目录里的基本内容如下

which  psql
cd /usr/local/pgsql
ll

其中各个目录里的内容及用途:

>bin:二进制可执行文件,是PG数据库的所有相关命令所在,为方便使用需
设置到环境变量中
>lib:动态库目录,PostgreSQL运行所需要的动态库都在此目录下
> share:放有文档和配置模板文件,一些拓展插件的SQL文件在此目录下的
extension中
>data:目录是数据库集群的物理存储核心,包含用户数据、元数据和配置文件
>include:目录则提供编译扩展和客户端程序所需的C语言头文件。

(2)数据库目录结构

/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-- 日志提交状态的数据存放目录

文件和目录相关作用描述

filedescription
pg_version包含postgresql主版本号的文件
pg_hba.conf控制postgresql客户端验证的文件 控制PG客户端认证文件 主机 数据库 用户ip地址
认证方式
pg_ident.conf控制postgresql用户名映射的文件,配置操作系统用户和数据库服务器上的用户映射
postgresql.conf配置参数文件
postgresql.auto.conf用于存储在ALTER SYSTEM(版本9.4或更高版本)中设置的配置参数的文件
postmaster.opts记录服务端上一次启动的命令行选项
subdirectoriesdescription
base/包含每个数据库子目录的子目录
global/包含群集范围表的子目录,例如pg_database和pg_control
pg_commit_ts/包含事务提交时间戳数据的子目录。9.5版本以后
pg_clog/ (Version9.6or earlier)包含事务提交状态数据的子目录。它在版本10中重命名为pg_xact.CLOG将在5.4章节
中详解。
pg_dynshmem/包含动态共享内存子系统使用的文件的子目录。9.4版本以后
pg_logical/包含逻辑解码的状态数据的子目录。9.4版本以后
pg_multixact/包含多事务状态数据的子目录(用于shared row locks)
pg_notify/包含LISTEN/NOTIFY状态数据的子目录
pg_repslot/包含复制槽数据的子目录(9.1版本以后)
pg_serial/包含有关已提交的序列化事务(9.1版本以后)信息的子目录
pg_snapshots/包含导出快照的子目录(9.2版本以后)PostgreSQL的函数pg_export_snapshot在此子目录中创建快照信息文件
pg_stat/包含统计子系统永久文件的子目录
pg_stat_tmp/包含统计子系统临时文件的子目录
pg_subtrans/包含子事物状态数据的子目录
pg_tblspc/表空间符号链接目录
pg_twophase/包含prepare事务的状态文件
pg_wal/ (Version 10 or
later)
包含WAL(Write Ahead Logging)段文件的子目录。在版本10中从pg_xlog重命名
而来.
pg_xact/ (Version 10 o
r later)
包含事务提交状态数据的子目录。在版本10中从pg_clog重命名而来.CLOG将在5.4章
节中详解
pg_xlog/ (Version 9.6
or earlier)
包含WAL(Write Ahead Logging)段文件的子目录。在版本10中重命名为pg_

(3)数据库有两个基础的对象 一个是oid.,一个是表空间

OID(Object Identifier)是数据库对象的唯一标识符。

表空间实际上是文件系统中的一个位置链接,即一个目录,它是一个逻辑上的概念,目录是它的物理存在方式。数据库中创建的对象(表、索引、数据库对象)都保存在表空间中。postgresql初始化完成后,会有两个默认的表空间,一个是pg_default,如果用户建表时没有指定表空间,所有新建的表都会放在pg_default中,另一个是pg_global,存放的是整个实例数据库所共享的系统表。

(4)base 的物理布局设计

每个数据库都会在$PGDATA/base下面生成一个子目录,如下图,都会一一对应

ls /usr/local/pgsq1/data/base/
postgres=# select datname, oid from pg_database;

(5)表空间跟数据库关系

在Oracle数据库中;一个表空间只属于一个数据库使用;而一个数据库可以拥有多个表空间。属于”一对多”的关系
在PostgreSQL集群中;一个表空间可以让多个数据库使用;而一个数据库可以使用多个表空间。属于”多对多”的关系

系统自带表空间:

表空间pg_default是用来存储系统目录对象、用户表、用户表index、和临时表、临时表index、内部临时表的默认空间。对应存储目录$PADATA/base/

表空间pg_global用来存放系统字典表;对应存储目录$PADATA/global/

相关文章:

  • GitLab部署
  • 前端mjs和js文件区别,mjs和cjs区别---.es.js和.mjs的区别
  • Jules 从私有预览阶段推向全球公测
  • 虚幻引擎5-Unreal Engine笔记之摄像头camera
  • R语言学习--Day04--数据分析技巧
  • 基于HTML的Word风格编辑器实现:从零打造功能完备的富文本编辑器
  • AI-02a5a7.神经网络-与学习相关的技巧-正则化
  • leetcode 合并区间 java
  • 【神经网络与深度学习】激活函数的可微可导
  • IDEA2025版本使用Big Data Tools连接Linux上Hadoop的HDFS
  • [面试精选] 0001. 两数之和
  • 【解决】SSH 远程失败之路由配置问题
  • laravel中如何使用Validator::make定义一个变量是 ,必传的,json格式字符串
  • 【git】在Windows上搭建git服务器
  • 使用Java实现Navicat密码的加密与解密
  • Python训练营打卡 Day31
  • 牛客网 NC14736 双拆分数字串 题解
  • 【windows】音视频处理工具-FFmpeg(合并/分离)
  • I2C 协议的理解以及在 OLED 上的应用
  • mac上安装 Rust 开发环境
  • 联合国妇女署:超过2.8万名妇女和女童在加沙战火中丧生
  • 兴业证券:下半年A股指数稳、结构牛,中国资产重估刚刚开始
  • 短剧植入,撬不动96.4%直男的钱包 | 调研报告
  • 左手免费午餐右手花开岭,邓飞14年公益之路的中国贡献
  • 证监会副主席李明:近期将出台深化科创板、创业板改革政策措施
  • 曾毓群说未来三年重卡新能源渗透率将突破50%,宁德时代如何打好换电这张牌