我正在参加创作者训练营第4期,点击了解活动概况,一起学习吧!

PostgreSQL系列文章


前语

本文首要简单聊一聊PostgreSQL


提示:以下是本篇文章正文内容,下面案例可供参考

一 PostgreSQL是什么?

PostgreSQL系列文章---The World‘s Most Advanced Open Source Relational Database
上图是官网的一个介绍,翻译过来便是这个世界上最先进的开源联络数据库。

PostgreSQL(发音为 Post-Gres-QL)是一个功用强大的开源目标联络数据库体系,开始设想于1986年,当时被叫做Berkley Postgres Project。该项目一向到1994年都处于演进和修正中,直到开发人员Andrew Yu和Jolly Chen在Postgres中添加了一个SQL(Structured Query Language,结构化查询语言)翻译程序,该版别叫做Postgres95,在开放源代码社区发放。

1996年,再次对Postgres95做了较大的改动,并将其作为PostgresSQL6.0版发布。该版别的Postgres提高了后端的速度,包含增强型SQL92规范以及重要的后端特性(包含子挑选、默认值、束缚和触发器)。

经过 30 多年的积极开发,在可靠性、功用稳健性和功用方面赢得了杰出的名誉。它在国外盛行程度比国内高,不过最近几年国内有这种盛行趋势了。并且由于它是自在答应证,任何人都能够出于任何意图免费运用、修正和分发PostgreSQL ,无论是私家的、商业的仍是学术的。

二 PostgreSQL的简单运用

2.1 PostgreSQL的装置

PostgreSQL系列文章---The World‘s Most Advanced Open Source Relational Database
直接搜索引擎输入PostgreSQL进入它的官网点击下载就能够看到不同操作体系对应的装置包

本文就不对这个装置进程做太多的介绍了,由于相关资料太多了,下面是一个笔者觉得不错的保姆级装置教程,推荐给咱们:

保姆级装置教程 作者Yunxi.D

经过这个详细的教程,咱们很简单就能装置成功。

三 PostgreSQL 和其他数据库比较如何?

笔者首要经过功用特性、功用、可靠性、是否有技术支撑和是否开源免费这几个方面来介绍

3.1 功用特性

PostgreSQL拥有大型数据库中的大多数特性,比方事务、子查询、触发器、视图、外键引用、表的可伸缩性和锁。也有某些大型数据库没有的特性,如用户界说类型、承继、规矩和多版别并发操控,以减少锁争用。

3.2 功用

PostgreSQL 的功用可与开源数据库相媲美,各有优劣。

3.3 可靠性

经过 30 多年的积极开发,每个版别都有至少一个月的 beta 测试,官网也有发布前史,经过查阅是能够供给稳定、可靠的版别的,可供出产运用,比较一些数据库这方面笔者觉得是有优势的。

3.4 是否有技术支撑

PostgreSQL系列文章---The World‘s Most Advanced Open Source Relational Database
官网底下是有一个提交Bug的进口的,邮件列表也供给与大量开发人员和用户的联络,以协助处理遇到的任何问题。并且官方的文档相对来说很完善,PostgreSQL也有相应的中文社区

3.5 是否开源免费

真实意义上的免费开源,PostgreSQL的开源协议是类似于BSD协议或MIT的协议,能够在任何意图下进行分发、闭源或者开源。

答应证地址

PostgreSQL系列文章---The World‘s Most Advanced Open Source Relational Database
这里不得不说到MySQL,它是现已被Oracle所操控,MySQL一起运用了GPL(GNU General Public License)和一种商业答应(称为两层答应)。

注:

GNU 通用公共答应协议(英语:GNU General Public License,简称GNU GPL或GPL),是一个广泛被运用的自在软件答应协议,开始由理查德斯托曼为GNU方案而编撰。此答应协议最新版别为“第3版”(v3),2007年6月29日发布。GNU宽通用公共答应协议(英语:GNU Lesser General Public License,一般简称LGPL)是改自GPL的另一个版别,其意图是为了应用于一些软件库。GPL给予了电脑程序自在软件的界说,并且运用“Copyleft”来确保程序的自在被完善的保存,这个协议一向有在演化中,内容表述比较杂乱,这很大程度上的使MySQL的开源变得不那么朴实了。

以下是MySQL中的详细束缚:

① 不答应对在MySQL上作出的修正申请专利; ② MySQL上的修正需要揭露,且所有权归Oracle所有; ③ 出于纯学术意图、练习意图源码修正也是契合GPL的; ④ Oracle的MySQL企业版或高档功用会触及费用,并且Oracle公司不答应其它根据MySQL的闭源产品。

四 PostgreSQL与MySQL的比较

特性 Postgresql MySQL
描绘 The world’s most advanced open source database The world’s most popular open source database
发展 是一个朴实的开源项目 笔者觉得不是一个朴实的开源项目
完成语言 C C、C++
图形化东西 PgAdmin MySQL Workbench
ACID Yes Yes
存储引擎 单一存储 多存储引擎,其间InnoDB 和 MyISAM运用的最多
全文检索 Yes Yes
删去暂时表 跟着数据库的衔接的断开而被删去 需要手动删去
删去表 级联操作:也便是更新、删去父表,将会同步更新、删去子表;而反过来则不变 不支撑级联操作
清空表 关于移除表中的数据,delete是能够的,可是关于一个大表,truncate是愈加有用的方式,由于truncate删去表中所有行的时分不需要扫表整个表 永久性删去,不能够吊销
自增列 串行 主动递增
解析功用 Yes No
数据类型 支撑array、hstore、user-defined type等多种高档类型。 sql规范类型
无符号整数 No Yes
布尔类型 Yes 内部运用TINYINT(1)表示布尔值
IP地址数据类型 Yes No
设置列默认值 一起支撑常量和函数调用 必须是一个常量或CURRENT_TIMESTAMP的TIMESTAMP或DATETIME列
公共表表达式 Yes No
EXPLAIN细节输出 更详细 相对没有那么详细
物化视图 Yes(Postgresql将视图概念扩展到下一个等级,答应视图在物理上存储数据,咱们将这些视图称为物化视图,物化视图会缓存杂乱的查询成果,然后答应定期刷新此成果) No
查看束缚 Yes No (MySQL忽略CHECK束缚)
表承继 Yes No
存储进程的编程语言 Ruby, Perl, Python, TCL, PL/pgSQL, SQL, JavaScript, etc. SQL:2003 syntax for stored procedures
全外衔接 Yes No
INTERSECT运算符 Yes(Postgresql的INTERSECT运算符将两个或多个SELECT句子的成果集兼并到一个成果集中) No
Except运算符 Yes(Except运算符经过比较两个或多个quires的成果集来回来行,此回来行存在于榜首查询子句而不存在第二查询子句中) No
部分索引 Yes No
位图索引 Yes No
表达式索引 Yes NO
掩盖索引 Yes (since version 9.2) Yes(MySQL支撑掩盖索引,答应仅经过扫描索引来检索数据,而不触及表数据。关于具有数百万行的大型表,非常有利。)
触发器 支撑能够在大多数指令类型上触发的触发器,除了那些会影响数据库大局的触发器,例如人物和表空间 仅限于一些指令
分区 RANGE, LIST RANGE、LIST、HASH、KEY,以及运用RANGE或LIST与HASH或KEY子分区组合的复合分区
使命定时 pgAgent Scheduled event
衔接规划 每个新衔接都是一个操作体系进程 每个新衔接都是一个操作体系线程
SQL兼容性 兼容大部分SQL MySQL是部分兼容SQL的。例如,不支撑查看束缚
适用性 履行杂乱查询时,能够用PostgreSQL,功用很杰出 当只需要读取速度时,MySQL在OLAP和OLTP体系中表现杰出。
支撑JSON 支撑JSON和其他NoSQL特性,比方原生XML支撑。它还答应为JSON数据建立索引,以便更快地拜访。 MySQL支撑JSON数据类型,但不支撑任何其他NoSQL特性。
默认值 默认值只能在体系级进行修正 默认值能够在会话级和句子级被掩盖
B-tree索引 运行时兼并动态转换 恰当时机能够用两个甚至更多的B树索引
目标数据 非常好的目标计算 相当好的目标计算

注 如有不足后续弥补,欢迎各位大佬指出不足之处

总结

以上便是笔者对PostgreSQL的一些简单介绍。

著作权归NoLongerConfused所有。商业转载请联络NoLongerConfused获得授权,非商业转载请注明出处。