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

postgresql搭建与初始化

PostgreSQL

  • PostgreSQL
    • postgresql简介
    • postgresql特点
    • postgresql优势
    • postgresql架构
    • postgresql应用场合
  • 安装postgresql
    • 编译安装
      • (1)安装编译安装所需环境
      • (2)编译安装
      • (3)配置环境变量
      • (4)登录数据库
  • postgresql结构
    • PG的逻辑结构
    • pg的物理结构
      • (1)软件安装目录
    • (2)数据库目录结构

PostgreSQL

在这里插入图片描述

postgresql简介

PostgreSQL,作为一个功能强大且开源的对象关系型数据库库管理系统(ORDBMS),自其诞生依赖以来,便以其卓越的性能和丰富的特性赢得了全球开发者和企业的青睐。

postgresql特点

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

postgresql优势

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

postgresql架构

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

postgresql应用场合

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

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

安装postgresql

编译安装

(1)安装编译安装所需环境

安装postgresql所需依赖
在这里插入图片描述

(2)编译安装

#解压源码包
在这里插入图片描述

#切换目录
加粗样式

#–prefix指定安装目录
在这里插入图片描述

#编译以及安装
在这里插入图片描述

配置环境
#创建用户
在这里插入图片描述

#创建数据存储目录

在这里插入图片描述

#更改数据存储目录的归属用户
在这里插入图片描述

(3)配置环境变量

在这里插入图片描述
刷新环境变量
在这里插入图片描述

(4)登录数据库

不能使用root用户登录,切换到postgres这个用户
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

postgresql结构

PG的逻辑结构

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

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

pg的物理结构

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

(1)软件安装目录

PostgreSQl 数据库的软件目录通常是在/usr 目录下(也可自定义位置)使用 pgconfg 命令可以看到当前数据库的基本情况,也可以在环境变量中可以看到。最直接可以使用 which 命令看到
在这里插入图片描述
在这里插入图片描述
其中各个目录里的内容及用途:

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

(2)数据库目录结构

在这里插入图片描述

http://www.xdnf.cn/news/13283.html

相关文章:

  • EtherCAT转CC-Link IE协议转换通讯助力库卡机器人与三菱PLC无缝对接
  • 【Linux篇】细品环境变量与地址空间
  • Qt Widget类解析与代码注释
  • day27/60
  • 可靠性+灵活性:电力载波技术在楼宇自控中的核心价值
  • 前端技术 HTML iframe 详细解读
  • 每日算法 -【Swift 算法】删除链表的倒数第 N 个结点
  • 聊聊 Pulsar:Producer 源码解析
  • STL 6分配器
  • 智能文档结构化技术的应用,重塑合同管理模式
  • CSS Modules使用
  • [特殊字符] 以太坊智能合约:原理、执行与核心机制
  • 新能源汽车智慧充电桩管理方案:智能安全识别的实际应用
  • mysql为什么一个表中不能同时存在两个字段自增
  • Q: dify的QA分段方式,question、answer和keywords哪些内容进入向量库呢?
  • 【已解决】python的kafka-python包连接kafka报认证失败
  • 【在线五子棋对战】四、MySQL API 使用
  • 多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度​
  • Llama 4开源项目多维分析研究
  • VUE element table 列合并
  • 目标检测中F1-Score指标的详细解析:深度理解,避免误区
  • Nginx攻略
  • C# vs2022 找不到指定的 SDK“Microsof.NET.Sdk
  • Android Wi-Fi 连接失败日志分析
  • 第六章 外部中断
  • 智能合约安全专题(一):什么是重入攻击?——从 DAO 事件谈起
  • Vuex 自动化生成工具
  • 【RPA干货】RPA自动化程序是什么?-rpa百科
  • 十四、【ESP32全栈开发指南:搭建轻量级HTTP服务器】
  • 【C++】IO流