下面先从它的起源开始先容~

PostgreSQL的起源

1977年,Michael Stonebraker开始和学生一起做关系型数据干系的研究并成立了项目Ingres,“Interactive Graphics and Retrieval System”的缩写,是PostgreSQL数据库的前身。

Stonebraker后来成立了Ingres Corporation公司, 开始做一个叫”post-INGRES”的项目,考试测验去办理一些原有关系模型的限定,后来被称作POSTGRES。

postgresqlphp扩展闲聊PostgreSQL数据库来源限制功效架构 Ruby

POSTGRES 项目是由防务高等研究项目局(DARPA),陆军研究办公室(ARO),国家科学基金(NSF), 以及 ESL, Inc 共同资助的。

PostgreSQL是完备由社区驱动的开源项目,由全天下超过1000名贡献者所掩护。
它供应了单个完全功能的版本,而不像MySQL那样供应了多个不同的社区版、商业版与企业版。
PostgreSQL基于自由的BSD/MIT容许,组织可以利用、复制、修正和重新分发代码,只须要供应一个版权声明即可。

可靠性是PostgreSQL的最高优先级。
它以坚如磐石的品质和良好的工程化而有名,支持高事务、任务关键型运用。
PostgreSQL的文档非常精良,供应了大量免费的在线手册,还针对旧版本供应了归档的参考手册。
PostgreSQL的社区支持是非常棒的,还有来自于独立厂商的商业支持。

利用限定

作为一种企业级数据库,PostgreSQL以它所具有的各种高等功能而自满,像多版本并发掌握(MVCC)、按韶光点规复(PITR)、表空间、异步复制、嵌套事务、在线热备、繁芜查询的方案和优化以及为容错而进行的预写日志等。
它支持国际字符集、多字节编码并支持利用当地措辞进行排序、大小写处理和格式化等操作。
它也在所能管理的大数据量和所许可的大用户量并发访问韶光具有完备的高伸缩性。
目前已有很多PostgreSQL的系统在实际生产环境下管理着超过4TB的数据。
一些PostgreSQL系统的极限值如下表所列:

PostgreSQL在数据存储方面所能支持的容量是相称大的。

浩瀚功能和标准兼容性

PostgreSQL对SQL标准高度兼容,它实现的功能完备遵守于ANSI-SQL:2008标准。
目前完备支持子查询(包括在FROM中的子查询)、授权读取和可序列化的事务隔离级别。
同时PostgreSQL也具有完全的关系数据库系统的目录功能,它支持单数据库的多模式功能,每一个目录可通过SQL标准中定义的字典信息模式进行访问。

Data集成性功能包括(复合)主键、含有严格约束或级联更新和删除功能的外键、录入检讨约束、唯一性约束和非空约束。

PostgreSQL也具有很多扩展模块和更高等的功能。
个中有为方便利用的通过序列实现的自增字段、 许可返回部分记录集的LIMIT/OFFSET选项,也支持复合、唯一、部分和函数式索引,索引并支持B-Tree、R-Tree、Hash或GiST存储办法。

GiST (通用搜索树) 索引是一种高等系统算法,它将不同的排序算法与包含B-Tree、B+-Tree、R-Tree、部分汇总树、可加权的B+-Tree以及其他多种搜索逻辑结合在一起,它也供应了接口许可创建用户数据类型和扩展的查询方法。
这样,GiST供应了用户指定存储和定义新方法进行查询的灵巧性---它大大超越了标准B-Tree、R-Tree和其他通用搜索逻辑所能供应的功能。

GiST现在也成为很多其他利用PostgreSQL公共项目的根本,如OpenFTS和PostGIS项目。
OpenFTS(开源全文搜索引擎)项目供应在线索引和数据库搜索的相称权重评分。
PostGIS项目给PostgreSQL增加了地理信息管理功能,许可用户将PostgreSQL作为GIS空间地理信息数据库利用,这和专业的ESRI公司的SDE系统以及Oracle的空间地理扩展模块功能相同。

其他高等功能包括表继续、规则和数据库事宜相应功能等。
表继续功能可以按原来的一个表创建一个有关系的新表,这样许可数据库设计职员可以将一个表作为基表,从基表派生出新表。
并且PostgreSQL乃至可以利用此办法实现单级或多级的继续。

规则功能是用来调用查询的重算功能,许可数据库设计职员根据不同的表或视图来创建规则,以实现动态改变数据库原操作为新的操作的功能。

事宜相应功能是一个内部通讯功能,它将系统信息或事宜在用户利用的LISTEN和NOTIFY两条指令后进行通报,许可 简要的点对点通讯或是对指天命据库事宜的定点通讯。
由于信息可以从触发器或是存储过程中发出,PostgreSQL的用户可以监控类似更新、新增或是删除的数据库事宜。

高度可定制性

PostgreSQL的存储过程开拓可以利用浩瀚的程序措辞,包括Java、Perl、Python、Ruby、Tcl、C/C++和自带的PL/pgSQL,个中的PL/pgSQL与Oracle的PL/SQL很相似,内置了数百个函数,功能从基本的算术打算和字符串处理到加密逻辑打算并与Oracle有高度兼容性。
触发器和存储过程可以利用C措辞开拓并可以作为内部库文件加载至数据库内部,开拓上的巨大灵巧性扩展了数据库能力。
相应地,PostgreSQL也包括一套框架许可开拓职员定义和创建他们自己的可在函数中利用数据类型,也可以定义操作符新的处理办法,具有了这样的能力后,PostgreSQL现已具有了各种高等数据类型,包括几何图形、空间地理、网络地址乃至于ISBN/ISSN(国际标准书号/国际标准序列号),这些都可以加入至系统中。

由于有很多的存储过程措辞可以利用,这样也产生了很多的库接口,这样许可各种编译型或是阐明型的措辞在PostgreSQL进行利用,包括Java(JDBC)、ODBC、Perl、Python、Ruby、C、C++、PHP、Lisp、Scheme和Qt等。

体系架构

像绝大多数数据库产品一样,PostgreSQL也是由数据库实例和干系文件组成,个中实例包括数据库的一些各负其职的进程与内存构造组成,数据库的文件也包含掌握文件、WAL文件、数据文件和各种配置文件。

PostgreSQL的基本构造如下:

实在最主要的一点,PostgreSQL的源代码可以自由获取,它的授权是在非常自由的开源授权下,这种授权许可用户在各种开源或是闭源项目中利用、修正和发布PostgreSQL的源代码。
用户对源代码的可以按用户意愿进行任何修正、改进。
因此,PostgreSQL不仅是一个强大的企业级数据库系统,也是一个用户可以开拓私用、网络和商业软件产品的数据库开拓平台。
后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注一下~