《PostgreSQL 全球概况》|学习笔记

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
简介: 快速学习《PostgreSQL 全球概况》。

开发者学堂课程【PolarDB for PostgreSQL 入门:《PostgreSQL 全球概况》】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/813/detail/13915


《PostgreSQL 全球概况》

 

内容介绍

一.PostgreSQL 发展历程

二.PostgreSQL 核心技术

三.PostgreSQL 开源社区

 

一.PostgreSQL 发展历程

1. 数据库发展历史

SQL 在整个数据库的发展历史中处于一个什么样的位置呢?

我们知道最早的数据库是层次数据库和网络数据库,层次数据库把数据组织成数的结构,网络数据库允许兄弟节点之间能够有指针相连形成网络的一种形态,网络数据库在政府部门在军事领域在科学计算方面得到了广泛的应用,因为数据之间通过指针相连查询能够按照导航的方式进行,因此效率非常高,发明网络数据库的 walkman 主要活跃在工业界,他没有学术背景,甚至没有博士学位,他因为发明网络数据库而获得了数据库领域的第一个图领奖,由于网络数据库具有高效的特性,那么到目前为止运行在型机上的数据库有很多仍然采用网络数据库,美国的阿波罗登月计划所使用的数据库也就是网络数据库。

 image.png

随着计算机性能的提升,诞生了小型机,企业和银行都买得起计算机管理他们的数据 IBM研 究员苏银行记账和企业财务业务的启发。

提出用表的方式来组织数据的是一位数学家,他基于集合运算设计了关系代数,通过关系代数的操作,把数据库查询的问题变换成表的计算问题就使得关系表通过关系运算能够计算成用户想要的形式,使得数据共享变得非常的灵活,方便,于是数据库得到了广泛的使用也创造了数据库巨大的产业,他也因此获得了图领奖。随着计算机性能的进一步提升,苹果电脑和个人计算机的出现,使得计算机能够处理多媒体地理信息和CAD数据,然而关系数据库不适合管理这一类复杂的数据。

人们借鉴面向对象的程序设计思想,提出了面向对象的数据模型面向对象的数据模型,将数据和操作封装成对象,具有相同属性和操作的对象归为一个类,能够通过继承关系连结在一起对象具有唯一的标识是通过标识符,我们从用简单的数对象能够形成复杂的对象上世纪90年代研制了许多面向对象的数据库系统那么期待面向对象数据库系统能够替换关系数据库系统成为市场的主流然后面向对象数据库没有取得成功,因为数据和操作封装成的对象,对象不能够向关系表那样自由的分割和重组,从而他不具备关系数据库那灵活性那么我们在市场上现在很难看到纯粹的面向对象数据库系统。

美国家族大学伯克利分校的教授 stone brick,提出关系数据库此时具有对象的功能,提出了对象关系数据模型,也就是在数据库中单独数据用关系表来定,复杂的数据用对象来建模,基于对象关系模型,设计并实现了一个对象关系数据库系统,也就是我们今天要讲的 spo 上世纪90年代我也在研究面向对象数据库系统,彭志勇教授提出了一个新的学术思想,将代理的概念引入到面向对象数据库当中,对象不能增生和重组,通过带领进行间接的增生和重组,从而能够实现一个迹象关系数据库那么灵活,又向面向对象数据库能够表达复杂语义关系的新的数据库管理系统,我们称之为对象代理数据库系统。有兴趣的可以访问实验室的网站了解,一个新的数据库管理系统。

2.特性

主要介绍对象关系据库系统SQL对象关系数据库系统 SQL 是目前功能强大,技术先进,稳定可靠,生态良好,应用广泛的开源数据库管理器,首先它是基于对象关系模型设计开发的,能够自定义数据类型,能够自定义过程,也能够自定义函数,因此具有高可扩展性他与他的语言遵循 SQL 标准,因此具有很强的兼容性它能够定义引用,约束,保证数据的有效性,提供灵活的 API 能不能使用目前广泛使用的程序设计语言,能够基于s开发数据库应用,提供与欧拉圭数据库兼容的语言,因此与目前的商业数据库具有很强的兼容性。

3.发展史

提供多版本并发控制机制,使得 SQL 具有高效的并发控制机制,支持对数据库的修改之前首先落盘,使得当数据库崩溃,通过他的预写能够迅速的恢复数据库到崩溃前的状态,SQL 数据库的前身是 english, english 数据库在美国加州大学伯克利分校主持开发的一个关系数据库系统,就是基于 cod 所提出的关系模型而进行设计和开发的这个数据库在1982年成功地实现了商业化。

image.png 

1986年 Micheal Stonebrakera 教授从工业界回到学术界,开始致力于解决关系数据库模型的局限性,引入对象关系模型,1988年设计并实现了对象关系数据库 Postgres 首个原型系统,该系统被 Illustra 公司商业化,最终融入到了Informix,后来又被 IBM 收购.

image.png

1944年美国加州大学伯克利分校的两个研究生,他们都是华裔学生,在原有的 postgres中加入了 SQL 语言的解释器,发布了 postgres95这样一个版本,使得能够得到大家的方便的使用.

image.png

因为当时 sql 语 言是大家普遍采用的数据库查询语言,1996年正式命名为 SQL 并对外开源,第一个开源四驱版本为SQL 6.0,从此以后来自于世界各地的数据库开发者和志愿者组成了 SQL 的全球开发组,他们通过互联网协助起来共同维护 SQL 的软件代码

image.png

2005年开始发布了新版本,从此版本开始 postgreSQL 以原生的方式支持 Windows 操作系统,原来它主要是运行Linux 操作系统之上,那么从这个版本开始,它与 SQL2003标准兼容,支持 Dtrace 动态跟踪实现了递归的 SQL

image.png

2010年开始发布了 PostgreSQL9.X,这是让中国用户貞正了解并使用 PostgreSQL 的开始。同年 Uber、Instagram、Skype 等国外知名互联公司大量使用 PostgreSQL。开始支持异步/同步流数据复制、64位 Windows 系统、SONB数据类型、逻辑复制、可在线刷新物化视图,brin 索引、行级安全、纵向扩辰(scale-up)、横向扩展(scale-out)、并行查询、短语搜索等

 image.png

发布 PostgreSQL10.x

2017年开始发布了 PostgreSQL10.X,提供了逻辑订阅功能,可用于数据同步、数据汇总和数据拆分等,加入了内首分区表功能,可以在线压缩 WAL,查看清理进度,支持并行排序和 B-Tree 并行创建,引入了间接索可用不完全索引支持复合排序,能够自动顶热共亨缓存,引入了 SCRAM-SHA-256安全认证机制,新增了内首角色,可以防止执行不带条件的更新删除,为 HASH 索引的操作加上了 WAL 支持。

2018年开始发布了 PostgreSQL11.x,对分区表进行了大幅的改进和增强加大了对存储过程的支持,使得存储过程也可支持事务,增强了并行数据定义能力和并行查询能力,还增加了对 just-in-time(JIT)编译的支持,加速了 SQL中的表达式执行效率。

2019年发布了 PostgreSQL12,提升了索引的总体性能,能够支持内置 WITH 表达式,优化了分区表性能,允许符合SQL/SON 规范的 SON 路径查询,扩展了统计信息、能够根据其他列的值通过表达式来生成新的列、提供了可拔插的表存取接口、对页的校验以及认证和连接安全性等都做了改进.

2020年开始发布 PostgreSQL13,逻辑复制可支持分区表,还支持异构分区表间的数据逻辑复制,可以有效地处理标准数据库 Btree 索引中重复数据,可以增量排序(Incremental Sorting),VACUUM 命令支持索引的并行处理,同时能够支持全库并行索引重建。

2021年开始发布了 PostgreSQL14,又增加了许多并行查询功能,BtreeGiST、SP-GiST 索引也得到了进步优化,外部数据封装器 oostgres_fdw 可支持并行查询、批量插入、表分区导入等,能够以非阻塞方式卸载分区,增量排序可用于窗口函数,TOAST 技术可使用 LZ4算法压缩字段。

 

二.PostgreSQL 核心技术

可以看到 postgre 版本更新在加速进行。近几年几乎每年都诞生一个新的版本所以可以看到 SQL,目前得到了的技术得到了快速的发展,那么 SQL 的核心技术是什么呢?

1.体系结构

SQL,采用下图体系结构,它包括存储管理,查询处理和变法控制,提供连接管理,能够为多种用户的应用提供支持,这些核心模块都基于系统表的一个核心数据来设计实现 SQL 的存储管理。

 image.png

2. 存储管理

SQL 的存储管理包括外存管理和内存管理,外层管理提供统一的管理界定,按照他的标准接口可以实现对各种存储介质的管理,通过虚拟文件描述来克服操作系统,同时打开文件数量的限制的问题,那么将数据存储在数据文件中,每个数据文件都附带着 m 文件,这个文件用来标识,数据文件当中可利用的空闲空间等位置,并与在插入数据中能够快速的找到合适的位置进行插入数据文件也覆盖文件,文件用来指出哪些数据快当中存在着可回收的空间,以帮助系统能够速的回收,可利用的空间,内存管理,采用内存上下文的来动态的分配内存空间,防止内存泄漏。在内存管理中使用高速缓存来存储系统表的元组以及关系表达模式信息,因为这两类信息在数据处理过程中会频繁的被访问,为每个进程提供局部缓存管理,为整个系统提供共享存储管理。共享存储管理是预先分配好空间,局部存储管理是根据需要,动态分配空间,各个进程之间的同步是通过消息机制来进行。使得 posrgre 的整个的存储管理具有高效性.

 image.png

3. 查询处理

按照这样一种方式来实现数据定义语句和数据操作语句分开处理,针对数据定义语句有相应的处理函数,对这些命令进行处理,对于数据定义数据操作语句,它首先进行查询重写,其次生成各种路径,从中选择交友的路径来形成执行计划,最后由执行性来进行执行。

SQL 通过事务管理保证满足数据库 acid 特性。

image.png

4.事务管理

通过锁的机制保证原子性,通过定义约束基于规则系统和触发器机制来保证数据库的一致性,通过多版本并发控制使用快照技术来实现隔离四五之间数据的隔离,采用预写式遏制的方式来保证数据库的持久性,那么预写式控制包括x log 和 c log x log 就是针对数据库操作的记录,用来记录的。

提交状态,通过 c 这两种物质的分离,能够尽快的感知到事物的提交状态,从而使得起进程能够尽快的了解,哪些数据可多,哪些数据可以进行修改,保证快速的感知元组的可见性

 image.png

5.安全机制

安全机制并不是特别强,它采用了各种验证方法,验证认证方法,根据用户所使用的环境,提供不同的认证方式,允许定义针对数据定义各种访问策略,并提供相应的即使来检测用户的操作是否具有相应的访问权限,它是通过基于角色的访问控制机制来实现,对数据库的访问控制。

image.png

那么大家如果想进一步了解 SQL 的核心技术,可以阅读这一本有关 SQL 内核技术的数据。

 

三.PostgreSQL 开源社区

1. 开源协议

PostgreSQL 逍循自由开源协议(类似 BSD 协议)。该协议非常友好

允许用户免费使用、复制、修改和发布该软件代码及其文档,既可

以自用,也可以商用,无需签订任何合同,没有法律风险,也不要

求用户开源。

2.PostgreSQL 开源好处

(1)没有运营公司经济压力

(2)网上大量偏程高手参与数据库开发

(3)广泛用户测试及时反馈

(4)新增功快速进行发布

开源使得 SQL 得到很好发展

3.PostgreSQL 全球开发团队

PostgreSRL GlobalDevelopment Team

Thom39 Lockhar1

Jolly Chen

Vadim Mikheev

丁an Wiec

Andrew Yu

Tom Lane

Bruce Momjian

Marc Fournier

开发团队,这当中也包括上面讲的两位华裔研究生,数据库提供的 SQL 语言的解释器,开发团队遵从的理念是希望有一些核心人员投入大量的时间支撑sql的发展,这些成员的分工,如下:

image.png

当中开源数据库的发展的各项工作,各项工作2006年也就是 SQL 数据库开源十周年的时候,举办了 SQL 的全球开发者大会,彭志勇教授应邀参加这次大会介绍了对 SQL 的改进,将进程结构改造成了线程结构,他会邀请我们介绍了这方面的新的技术。

4.全球赞助商

SQL 开源以后得到了很多公司的赞助,2019年4月截止,在这个网站上发布的,这样一些公司,实际上到目前为止还有更多的公司为 SQL 的发展提供赞助。包括中国的华为公司

 image.png

5.全球用户社区

Csp 开源以后,在全球得到了广泛的利益,各个国家地区都成立了,通过四驱的方式来支持应用的开发,可以看到,世界的重要的国家都有相应的用户社区.SQL 是为中国大陆所认识,2012年就具体第一件 SQL 全国用户大会,之后每年都举办一次。

这是去年举办的中国用户大会

image.png

这是在巴西所举行的用户大会

image.png

这是在欧洲所举行的用户大会

image.png

这是在俄罗斯举行的用户大会

image.png

这是在南非举行的用户大会

image.png

这是在美国举行的用户大会

 image.png

6. 主要应用

SQL在全球得到了广泛,主要的应用领域非常的广泛,这些领域有生物制药,电子商务,教育,金融,游戏,政府,医疗,制造业,媒体,零售业,科技通讯,在这些领域里面,SQL发挥越来越重要的作用,这就是今天给大家介绍的SQL的全球概括

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
12月前
|
存储 SQL 安全
【MySQL学习笔记】系列一:数据库概述、初识关系型数据库MySQL(二)
【MySQL学习笔记】系列一:数据库概述、初识关系型数据库MySQL(二)
10309 0
|
12月前
|
存储 SQL Oracle
【MySQL学习笔记】系列一:数据库概述、初识关系型数据库MySQL(一)
【MySQL学习笔记】系列一:数据库概述、初识关系型数据库MySQL(一)
|
SQL 关系型数据库 Linux
【PostgreSQL】入门学习笔记(包括安装、环境与参数配置、故障排查以及备份还原等)
以下内容为前几天在备考PostgreSQL入门考试时候做的笔记,经过了全职的两天的奋战与实验,并最终顺利通过了PCA初级认证考试。现在把我学习的笔记分享给大家,文中有对应的思维导图图片可供查看,内容与后面正文文本一致。另外,由于SQL语句部分比较基础,基本上会一门数据库就都会,所以此处部分省略掉不做过多记录了。
300 0
【PostgreSQL】入门学习笔记(包括安装、环境与参数配置、故障排查以及备份还原等)
|
存储 SQL 监控
PolarDB-X 进行 TP 负载测试(三)| 学习笔记
快速学习 PolarDB-X 进行 TP 负载测试。
307 0
PolarDB-X 进行 TP 负载测试(三)| 学习笔记
|
存储 运维 关系型数据库
PolarDB-X 读写分离与 HTAP| 学习笔记
快速学习 PolarDB-X 读写分离与 HTAP。
337 0
PolarDB-X 读写分离与 HTAP| 学习笔记
|
SQL 存储 运维
PolarDB-X 的部署与运维(三)| 学习笔记
快速学习 PolarDB-X 的部署与运维。
498 0
PolarDB-X 的部署与运维(三)| 学习笔记
|
数据可视化 Java 分布式数据库
PolarDB-X 数据 TTL 过期删除(三)| 学习笔记
快速学习 PolarDB-X 数据 TTL 过期删除。
157 0
PolarDB-X 数据 TTL 过期删除(三)| 学习笔记
|
运维 关系型数据库 测试技术
PolarDB-X 冷热数据归档(二)| 学习笔记
快速学习 PolarDB-X 冷热数据归档。
211 0
PolarDB-X 冷热数据归档(二)| 学习笔记
|
SQL 存储 Kubernetes
PolarDB-X 数据导入导出 | 学习笔记
快速学习 PolarDB-X 数据导入导出
661 0
PolarDB-X 数据导入导出 | 学习笔记
|
存储 运维 JavaScript
PolarDB-X 分区管理 | 学习笔记
快速学习 PolarDB-X 分区管理
294 0
PolarDB-X 分区管理 | 学习笔记