1 PostgreSQL系统概述与编译安装|学习笔记

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: 快速学习1 PostgreSQL系统概述与编译安装

开发者学堂课程【PostgreSQL快速入门1 PostgreSQL系统概述与编译安装】学习笔记与课程紧密联系,让用户快速学习知识

课程地址https://developer.aliyun.com/learning/course/16/detail/87


1 PostgreSQL系统概述与编译安装

 

内容介绍

课程内容

PostgreSQL发展史

PostgreSQL数据库全球使用情况

、PostgreSQL 许可

许可 PostgreSQL vS MySQL

六、PostgreSQL 遵循的SQL标准

七、PostgreSQL扩展特性

 

一、课程内容

1、PostgreSQL系统概述

(1)了解PostgreSQL的发展历程国内外PG社区组成和运作

(2)了解PG的特性与其他流行关系数据库的比对如何安装PostgreSQL等在linux下面的源码安装如果不使用源码安装可以在EnterpriseDB下载已经打包好免费版本安装

2、体系结构

(1)了解系统表以及系统表之间的关系系统视图管理函数等

(2)了解PG进程结构

(3)了解PG物理结构数据库逻辑概貌物理概貌可靠性等

3、使用基础

(1)了解常用的数据库交互工具的使用

(2)了解PG数据库的数据类型体系以及表操作

 

二、PostgreSQL发展史

1、PostgreSQL历史

(1)1973 University INGRES (起源于FIBM System R的一系列文档" Michael Stonebraker and Eugene Wong专家)

(2)1982 INGRES发布第一个版本

(3)1985 post-Ingres

(4)1988 POSTGRES version 1 - 1993 version 4 (END)第四个版本项目终结

(5)1995 Postgres95 (伯克利大学学生Andrew Yu Jolly Chen重写了SQL解释器 替换原项目中的基于IngresSQL解释器)做了一些变更

(6)1996更为PostgreSQL发布第一个开源版本

2、全球社区介绍

PostgreSQL全球贡献者

(1)Core Team成员

(2)Josh Berkus (USA PostgreSQL Experts Inc.)

主要负责PG推广性能测试优化文档编辑等工作。

(3)Peter Eisentraut (USA MeetMe.com)

主要负责了系统建设移植文档编辑国际化以及其他增强性的代码工作。

(4)Magnus Hagander (Sweden redpill-linpro.se)

帮助维护PostgreSQL WEB主站及基础设施 win32的移植以及系统认证等工作

(5)Tom Lane (USA Salesforce)

遍及PostgreSQL代码的各个角落包括BUG评估和修复性能改进优化等

(6)Bruce Momjian (USA EnterpriseDB)

负责维护TODO和FAQ列表代码发布版本补丁以及培训

(7)Dave Page (United Kingdom EnterpriseDB)

负责pgadmin的开发和维护工作同时负责管理postgresql.org主站工程 PostgreSQL的安装程序等

(8)主要贡献者

http://www.postgresql.org/community/contributors/

(9)Committers (git@gitmaster. postgresql org/postgresl.gi)

目前有20位committer(http://wiki.postgresql.org/wiki/Committers)

从第一届大会开始邀请外宾参加第二届大会邀请了simonMagnus

3、PostgreSQL全球赞助商

Postgre是免费的开源软件需要赞助

(1)PostgreSQL全球赞助商(最新http://www .postgresrql.org/about/sponsors/)

(2)赞助商分级

Platinum

白金级别

Entities who have provided at least 3 full years of significant and recurring contribution to PostgreSQL.连续三年以上持续重大贡献

Gold

Entities who have provided at least 2 full years of significant and recurring contribution to PostgreSQL.连续二年以上持续重大贡献

Silver

Entities who have provided at least 1 full year of significant and recurring contribution to PostgreSQL.

Bronze

Entities who have provided a si gnificant contribution in the last 12 months to PostgreSQL.

(3)赞助商列表

image.png

中国的赞助商只有华为因为接触比较晚之后会晋升到白金赞助商

4、PostgreSQL中国用户会介绍

(1)PostgreSQL中国用户会。

促进PostgreSQL在中国发展的非盈利组织。

(2)PostgreSQL在中国发展简史。

(3)199x何伟平建立bbs,中文网站,展开文档以及PG网站各板块的翻译工作。

(4)2011年全国大会,广州暨南大学。

galy牵头组织第一次全国pg大会,组建中国PG用户会,成员7人,负责PG在中国的推广。

成员(galy,孙鹏,泥鰍,少聪,digoal, Louis, 阿弟)。

(5)2012年全国大会,北京人民大学。

铃木(pg-xe架构师@ntt), simon, magus, Andrew(@Instagram)等外宾带来的一些。

(6)2013年全国大会,杭州斯凯网络。

用户会职能工作细化,成立几个职能小组(商业支持,网站维护,文档翻译,内核开发。

(7)国内近期和PostgreSQL相关的线下活动,

2011 DTCC

2011淘宝华东区数据库技术交流

2011第一届PG全国大会

2012上海,广州,深圳,北京,杭州,成都等地区域PG交流活动

2012北京,杭州免费的2天课时PG DBA培训活动

2013各地的区域性PG交流,培训活动

5、PostgreSQL发展历程

image.png

开源版本是从95年开始每年会发一个大版本小版本持续在更新8.4开始有了大飞跃,9.0也有非常重大的改进多了流复制,持续的打开进行查询,9.2支持集联复制,9.3也有强大的改进,9.4之后会有逻辑复制基于前面的表前面的流复制都是基于最快变更的复制,之后会基于表进行复制,基于sql语句复制。

6、PostgreSQL里程碑

image.png

95年初始化版本到1.0的时候Changed copyright to a more liberal license

6.1 Multi-column indexes sequences money data type GEQO (GEnetic Query Optimizer).智能查询优化器如果没有优化器基本上都是cpu穷举法把所有可能的都罗列出来计算成本选择最低的,sql句非常复杂的情况下出来的路径会非常多穷举法带来的开销会非常的巨大

6.4自定义时候VIEWs and RULEs PL/pgSQL函数语言

image.png

9.1Synchronous replication 同步流复制选择同步产生的必须要写在节点后用户如果同步流复制没有相应会一直等待完全镜像的节点确保事物非常可靠per-column collations unlogged tables k-nearest-neighbor indexing 索引精明算法数据类型是平面几何的类型假设是点比如表里面存了很多个点检索排序距离a点最近的地方排序能够方便的检索出离几何的类型假设是点比如表里面存了很多个点检索排序距离a点最近的地方排序能够方便的检索出离这个点最近的节点平面性非常好serializable snapshot

isolation writeable common table expressions SE-Linux integration extensions SQL/MED attached tables (Foreign Data Wrappers), triggers on views访问外部表比如文件可以当成表进行访问外部的数据源当成表进行访问外部的数据源都可以通过sqlmed创建这种表创建好外部表就相当于直接访问外部数据源在数据迁移中非常好用

9.2Cascading streaming replication 节点流所有的节点从父节点获取stand by 节点之后还能接stand bystand by 节点可以把接收的节点再发到下面的节点中index-only scans 只扫描一个不扫描别的native JSON support improved lock management range types

pg_ receivexlog tool spacc-partitioned GiST indexes

9.3增加了两个非常强大的功能,复制起来之后还可以生成共享内存Custom background workers data checksums对数据块做动作确保数据的可靠性稳定性数据遭到破坏时可以被监测到 dedicated JSON operators LATERAL JOIN faster pg dump new

pg_ isready server monitoring tool trigger features事件突发器视图可写的外部表 view features writeable foreign tables replication improvements把数据写到另一个中

 

三、PostgreSQL数据库全球使用情况

1、生物制药{Affymetrix(基因芯片)美国化学协会 gene(结构生物学应用案例.)... }

2、电子商务{ CD BABY etsy(与淘宝类似) whitepages白皮书网站 flightstats Endpoint Corporation ...}

3、学校{加州大学伯克利分校哈佛大学互联网与社会中心,LRN莫斯科国立大学悉尼大学 ...}

4、金融{Journyx LLC trusecommere(类似支付宝) ...}

5、游戏{MobyGames ...}

6、政府{美国国家气象局印度国家物理实验室联合国儿童基金美国疾病控制和预防中心美国国务院,...}

7、医疗{calorieking开源电子病历项目 shannon医学中心 ....

8、制造业{Exoteric Networks}

9、媒体{IMDB.com美国华盛顿邮报国会投票数据库 MacWorld绿色和平组织...}

10、开源项目{Bricolage Debian FreshPorts FLPR PostGIS SourceForge OpenACS Gforge ...}

11、零售{ADP CTC Safeway Tsutaya Rockport ...}

12、科技{Sony MySpace Yahoo Afilias APPLE富士通,Omniti Red Hat Sirius IT SUN国际空间站 Instagram Disqu..}

13、通信{Cisco Juniper NTT(日本电信) Optus Skype Tlestra(澳洲电讯) ...}

14、物流{SF}

15、More : http://www.postgresql.org/abou/users/

 

四、PostgreSQL 许可

1、许可 http://opensource.org/licenses/postgresql

2、This is a template license. The body of the license starts at the end of this paragraph. To use it, say that it is The PostgreSQL

License, and then substitute the copyright year and name of the copyright holder into the body of the license. Then put the license into a prominent file ("COPYRIGHT", "LICENSE" or "COPYING" are common names for this file) in your software

distribution.

3、Copyright (c) $YEAR, $ORGANIZATION

4、Permission to use, copy, modify, and distribute this software and its documentation for any purpose, without fee, and without a written agreement is hereby granted, provided that the above copyright notice and this paragraph and the following two paragraphs appear in all copies.使用它拷贝它修改它分发软件以及文档以任何目的不需要支付不需要允许只需要把下面两段拷贝到发布软件中即可

5、IN NO EVENT SHALL $ORGANISATION BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL,INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF $ORGANISATION HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

6$ORGANISATION SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED To, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICUL AR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND $ORGANISATION HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.

 

五、许可 PostgreSQL vS MySQL

1、PostgreSQL(Copyfree) license VS MySQL(Copyleft) license

2、http://www.wikivs.com/wiki/Copyfree_ ys_ Copyleft

3、PostgreSQL Permission to use, copy, modify, and distribute this software and its documentation for any purpose, without fee,and without a written agreement is hereby granted, provided that the above copyright notice and this paragraph and the following

two paragraphs appear in all copies.

3、MySQL's source code is available under terms of the GNU General Public License, which also fits the Free Software and OpenSource definitions and conforms to the Debian Free Software Guidelines (but not to the Copyfree Standard). It is also availableunder a proprietary license agreement, which is typically intended for use by those who wish to release software incorporating MySQL code without having to release the source code for the entire application. In practical terms, this means that MySQL can be distributed with or without source code, as can PostgreSQL, but to distribute without source code in the case of MySQL requires paying Oracle for a MySQL Commercial License.做商业目的并且闭源支付商业许可完全开源不需要付费拿到mysql修改不开源并且不付费不行如果不开源就要付费,PostgreSQL允许不开源

 

六PostgreSQL 遵循的SQL标准

1、标准

ISO/IEC 9075:2011

ISO/IEC 9075-1 Framework (SQL/Framework)

ISO/IEC 9075-2 Foundation (SQL/Foundation)

ISO/IEC 9075-3 Call Level Interface (SQL/CLI)

ISO/IEC 9075-4 Persistent Stored Modules (SQL/PSM)不属于sql

ISO/IEC 9075-9 Management of External Data (SQL/MED)

ISO/IEC 9075-10 Object Language Bindings (SQL/OLB)不属于sql

ISO/IEC 9075-11 Information and Definition Schemas (SQL/Schemata)

ISO/IEC 9075-13 Routines and Types using the Java Language (SQL/JRT)

ISO/IEC 9075-14 XML-related specifications (SQL/XML)

2、

http://www postgresql.org/docs/9.3/static/features ,html

3、

http://www.postgresqlorg/docs/9.3/static/features-sql-standard.html

4、

http://www.postgresql.org/docs/9.3/static/unsupported-features-sql-standard.html

特性都可以在网站中看到包括遵循的sql标准以及不遵循的sql标准

5、灰色部分PostgreSQL未涉及

 

七、PostgreSQL扩展特性

Backend

64bit large obiects

Advisony locks 应用锁

ALTER obiect IF EXISTS

ALTER TABLE ADD

UNIQUE PRIMARY KEY USING INDEX

Autovacuum enabled by default

Cascading streaming replication

Changing column trpes (ALTER TARLE ALTER COLUMN TYPE )支持节点流复制

Checksum on data paqes

Column level permissions只给用户某一列的权限非常精细的全链控制

common Table Expressions (WITH RECURSIVEl)

Concurrent GiST indexes支持并行的gist索引

COPY from/to STDIN/STDOUT把表的数据从表顺输入拷贝到表里面把表的数据拷入到标准输出

COPY with arbitrary SELECT支持SELECT语句的拷贝比如把某SELECT语句的结构集拷贝到文件拷贝到标准输出都是允许的

Crash-safe GiST indexes

CREATE TABLE (LIKE) with foreign tables, views and composite types创建语句可以用like语法在创建一个表时创建a表创建跟a表类似的表CREATE TABLE LIKE  a

csV support for COPY支持csV

Custom backaround workers格式输入输出

Default permissions

Deferrable unique constraints

Disk based FSM 基于磁盘

Dollar Quoting支持dollar符号

E' iv'm digoal' ;用单引号就会出现问题需要转译,$符号中间可以加任意东西引号的作用

DROP object IF EXISTS

Exclusion constraints排他的索引存储的类型是平面几何圆的类型不允许后面存的数据跟已经存好的平面几何圆有任何的相交可以使用排他约束达到目的

EXPLAIN (BUFFERS support Extension package installation输出sql语句耗费了多少BUFFERS,有多少是从BUFFERS以外读的

Foreian data wrappers外部表的功能

Foreian Tables

Full code coverage generation

support

GRANT/REVOKE ON ALL TABLES/SEQUENCES/FUNCTIONS对表数列有权限控制

Holdable cursors打开的standby做恢复同时打开查询

Hot standby

Imoroved set of JSON functions and operators对函数的增强

INSERT/UPDATE/DELETE RETURNING返回

Integrated autovacuum daemon自动回收垃圾的后台显示

Join removal support

LATERAL clause

Loadable pluain infrastoucture for monitorina the planner

Materialized views没有增量更新只有全量更新

Multinle autovacuum workers

Multiple input. aareaates

Multirow VALUES

MVCC safe CLUSTER

Named. restore. points

QN COMMIT clause for CREATE

TEMPORARY TABLE

QRDER BY NULLS FIRSTALAST

Parallel pq dump 数据化逻辑导出的工具支持并行的导出同时导出很多个点

Payload support for LISTEN/NOTIEY

Per tablespace supnort for GUCS基于表空间的配置比如表空间放在目录下面目录对应的数据io性能很好另一个表空间在另外一个目录下面另外一个目录下面的GUCS设备性能不好就可以针对不同的GUCS设备配置不同的性能指标优化器在做成本计算时表放在a表空间另外的表放在b表空间两个表走全量扫描还是索引计算出的成本是依赖于配置表空间的io成本进行计算性能比较差的表空间可以配置它io性能成本很高另一个表放在ssd里面可以配置全面扫描连续扫描和随机扫描成本是一样的

Per user/database server confiquration settings同时配置基于用户和数据库a用户b用户给不同的参数配置比如a用户允许全量扫描b用户允许全量扫描都是可以基于用户的配置进行配置

Pa basebackup tool用来做数据库基础备份

pa receivexloa tool实时接收数据变更

Point-in-Time Recovery

Prefix support for text search synonym dictionary Row-wise comparison用数据库基础备份做时间的恢复恢复到任意一个时间点

Savepoints支持

SELECT FOR NO KEYUPDATE/SELECT

FOR KEY SHARE lock modes

Serializable Snapshot Isolation

SP-GiST jindexes for range. types

SQLDA support for ECPG

SOL-standard information schema

SQL standard interval handling

Stre aming-only cascadina replication

Streamina Replication

Suport for anonvmous shared memory

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
18天前
|
存储 SQL 关系型数据库
Mysql学习笔记(二):数据库命令行代码总结
这篇文章是关于MySQL数据库命令行操作的总结,包括登录、退出、查看时间与版本、数据库和数据表的基本操作(如创建、删除、查看)、数据的增删改查等。它还涉及了如何通过SQL语句进行条件查询、模糊查询、范围查询和限制查询,以及如何进行表结构的修改。这些内容对于初学者来说非常实用,是学习MySQL数据库管理的基础。
78 6
|
18天前
|
SQL 关系型数据库 MySQL
Mysql学习笔记(三):fetchone(), fetchmany(), fetchall()详细总结
MySQL中用于数据检索的`fetchone()`, `fetchmany()`, `fetchall()`函数的功能、SQL语句示例和应用场景。
37 3
Mysql学习笔记(三):fetchone(), fetchmany(), fetchall()详细总结
|
18天前
|
SQL Ubuntu 关系型数据库
Mysql学习笔记(一):数据库详细介绍以及Navicat简单使用
本文为MySQL学习笔记,介绍了数据库的基本概念,包括行、列、主键等,并解释了C/S和B/S架构以及SQL语言的分类。接着,指导如何在Windows和Ubuntu系统上安装MySQL,并提供了启动、停止和重启服务的命令。文章还涵盖了Navicat的使用,包括安装、登录和新建表格等步骤。最后,介绍了MySQL中的数据类型和字段约束,如主键、外键、非空和唯一等。
57 3
Mysql学习笔记(一):数据库详细介绍以及Navicat简单使用
|
18天前
|
关系型数据库 MySQL 数据库
Mysql学习笔记(四):Python与Mysql交互--实现增删改查
如何使用Python与MySQL数据库进行交互,实现增删改查等基本操作的教程。
47 1
|
5月前
|
SQL Oracle 关系型数据库
MySQL学习笔记
MySQL学习笔记
34 0
|
3月前
|
SQL druid Java
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(下)
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)
53 3
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(下)
|
3月前
|
SQL Java 关系型数据库
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(上)
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)
98 3
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(上)
|
3月前
|
SQL 关系型数据库 MySQL
MySQL学习笔记
这篇文章是一份关于MySQL数据库操作的学习笔记,涵盖了数据库的终端操作、数据类型、建表约束、事务处理以及SQL的连接查询等基础知识点。
|
3月前
|
SQL 关系型数据库 MySQL
Java数据库部分(MySQL+JDBC)(一、MySQL超详细学习笔记)(下)
Java数据库部分(MySQL+JDBC)(一、MySQL超详细学习笔记)
36 6
|
3月前
|
存储 关系型数据库 MySQL
Java数据库部分(MySQL+JDBC)(一、MySQL超详细学习笔记)(上)
Java数据库部分(MySQL+JDBC)(一、MySQL超详细学习笔记)
41 4

热门文章

最新文章