我正在参加创作者训练营第4期,点击了解活动概况,一起学习吧!
PostgreSQL系列文章
前语
本文首要简单聊一聊PostgreSQL
提示:以下是本篇文章正文内容,下面案例可供参考
一 PostgreSQL是什么?
上图是官网的一个介绍,翻译过来便是这个世界上最先进的开源联络数据库。
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进入它的官网点击下载就能够看到不同操作体系对应的装置包
本文就不对这个装置进程做太多的介绍了,由于相关资料太多了,下面是一个笔者觉得不错的保姆级装置教程,推荐给咱们:
保姆级装置教程 作者Yunxi.D
经过这个详细的教程,咱们很简单就能装置成功。
三 PostgreSQL 和其他数据库比较如何?
笔者首要经过功用特性、功用、可靠性、是否有技术支撑和是否开源免费这几个方面来介绍
3.1 功用特性
PostgreSQL拥有大型数据库中的大多数特性,比方事务、子查询、触发器、视图、外键引用、表的可伸缩性和锁。也有某些大型数据库没有的特性,如用户界说类型、承继、规矩和多版别并发操控,以减少锁争用。
3.2 功用
PostgreSQL 的功用可与开源数据库相媲美,各有优劣。
3.3 可靠性
经过 30 多年的积极开发,每个版别都有至少一个月的 beta 测试,官网也有发布前史,经过查阅是能够供给稳定、可靠的版别的,可供出产运用,比较一些数据库这方面笔者觉得是有优势的。
3.4 是否有技术支撑
官网底下是有一个提交Bug的进口的,邮件列表也供给与大量开发人员和用户的联络,以协助处理遇到的任何问题。并且官方的文档相对来说很完善,PostgreSQL也有相应的中文社区
3.5 是否开源免费
真实意义上的免费开源,PostgreSQL的开源协议是类似于BSD协议或MIT的协议,能够在任何意图下进行分发、闭源或者开源。
答应证地址
这里不得不说到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获得授权,非商业转载请注明出处。