PostgreSQL 知识量:10 - 51 - 182
PostgreSQL起源于加州大学伯克利分校计算机系的一个项目,该项目最初被称为“Berkley Postgres Project”。这个项目的初衷是为了开发一个交互式图形检索系统,而这个系统最初是基于QUEL编程语言的,而不是SQL。然而,随着时间的推移,为了提升数据库性能,团队决定转向支持关系数据库的项目。
1986年,美国国家标准学会正式将SQL设置为首选的数据库查询语言,自此,许多相关数据库项目都开始朝着这个方向发展。 1995年,Postgres95正式发布,SQL也顺理成章地被添加进来。 1996年,随着第一个PostgreSQL版本6.0的发布,全球PostgreSQL开发团队也成立,标志着这个项目跨出了学术界的门槛,项目领导小组也一直延续至今!
自PostgreSQL诞生以来,它已经成为了开源关系型数据库的首选之一。许多知名的公司和组织都在使用PostgreSQL数据库,包括美国航天局NASA、德国证券交易中心、中国的平安、腾讯的微信支付、阿里巴巴的阿里云等。
在PostgreSQL中,以下是一些基本概念:
关系(Relation):在PostgreSQL中,关系是一个表示表的数学术语。表用于存储数据,通常由若干行组成。
元组(Tuple)和域(Field):元组表示表中的行,有的数据库将元组称为记录。一个元组一般由多个域组成,域有时也被称为字段或列。每个字段都有一个特定的数据类型和可选属性。
数据库(Database)和数据库簇(Database Cluster):多个表组合在一起构成了一个逻辑意义上的数据库。在一个单一的PostgreSQL服务器实例中,所有的数据库集合在一起构成了一个数据库簇。
表空间(Tablespace):表空间是一个存储位置,可以在其中保存底层数据库对象的实际数据。在PostgreSQL中,表空间允许数据库管理员定义一个文件系统位置,代表数据库对象(表、索引等)的文件可以存储在该文件目录下。
数据段(Segment)和数据页(Page):每个表和索引都保存在一个单位的文件中,每个文件就是一个数据段。当一个表或索引的大小超过1GB时,它会被拆分出另一个数据段。
数据类型:用于表示表中列的数据种类,如整数、字符串、浮点数、日期等。
约束:用于确保表中数据的完整性,如主键约束、唯一约束等。
存储过程:PostgreSQL函数也称为PostgreSQL存储过程。
PostgreSQL的存储体系结构可以分为逻辑存储结构和物理存储结构。
逻辑存储结构是数据库内部的组织和管理数据的方式,包括表、索引、序列、视图、函数等数据库对象。在PostgreSQL中,数据库集簇是由单个PostgreSQL服务器实例管理的数据库集合,这些数据库使用相同的全局配置文件和监听端口、共用进程和内存结构。每个数据库都有自己的命名空间,包括数据库名、schema名、表名等。
物理存储结构是操作系统中组织和管理数据的方式,包括数据文件、参数文件、控制文件、运行日志及WAL日志文件等。在PostgreSQL中,数据文件默认保存在初始化时创建的数据目录中,每个数据库都有自己的数据目录。此外,PostgreSQL还使用了WAL(Write-Ahead Logging)机制来保证数据的持久性和一致性。
PostgreSQL使用一种专用服务器进程体系架构,主要由以下进程组成:
一个服务器端进程:这个进程管理数据库文件,接受客户端与数据库的连接,且代表客户端对数据库进行操作。该进程的程序名叫做postgres。
前端应用:即需要进行数据库操作的客户端应用。客户端应用可以是一个字符界面的工具,也可以是一个图形界面的应用,或者是一个通过访问数据库来显示网页的web服务器,或者是一个特殊的数据库管理工具。
守护进程Postmaster:负责整个系统的启动和关闭,监听并接受客户端的连接请求,为其分配服务进程Postgres。
服务进程Postgres:接受并执行客户端发送的命令。它在底层模块(如存储、事务管理、索引等)之上调用各个主要的功能模块(如编译器、优化器、执行器等),完成客户端的各种数据库操作,并返回执行结果。
辅助进程:如BgWriter(后台写进程)、WalWriter(预写式日志写进程)、PgArch(预写式日志归档进程)等。这些进程负责数据清理、日志写入等后台任务,以支持数据库的高可用性和持久性。
Copyright © 2017-Now pnotes.cn. All Rights Reserved.
编程学习笔记 保留所有权利
MARK:3.0.0.20240214.P35
From 2017.2.6