开发者学堂课程【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解释器, 替换原项目中的基于Ingres的SQL解释器)做了一些变更。
(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)
从第一届大会开始邀请外宾参加,第二届大会邀请了simon,Magnus。
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)赞助商列表
中国的赞助商只有华为,因为接触比较晚,之后会晋升到白金赞助商。
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发展历程
开源版本是从95年开始,每年会发一个大版本,小版本持续在更新,从8.4开始有了大飞跃,9.0也有非常重大的改进,多了流复制,持续的打开进行查询,9.2支持集联复制,9.3也有强大的改进,9.4之后会有逻辑复制基于前面的表,前面的流复制都是基于最快变更的复制,之后会基于表进行复制,基于sql语句复制。
6、PostgreSQL里程碑
从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函数语言
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 by,stand 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、许可, htt
p
://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 lo
cks
应用锁
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
只给用户某一列的权限,非常精细的全链控制
co
mmon 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 p
q
dum
p
数据化逻辑导出的工具,支持并行的导出,同时导出很多个点
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