1.什么是PostgreSql

PostgreSQL是一个功能强大的开源对象关系型数据库系统,他使用和扩展了SQL语言,并结合了许多安全存储和扩展最复杂数据工作负载的功能。PostgreSQL的起源可以追溯到1986年,作为加州大学伯克利分校POSTGRES项目的一部分,并且在核心平台上进行了30多年的积极开发。

PostgresSQL凭借其经过验证的架构,可靠性,数据完整性,强大的功能集,可扩展性以及软件背后的开源社区的奉献精神赢得了良好的声誉,以始终如一地提供高性能和创新的解决方案。PostgreSQL在所有主要操作系统开始使用PostgreSQL从未如此简单。

2.为什么要使用PostgreSQL

PostgreSql提供了许多功能,旨在帮助开发人员构建应用程序,管理员保护数据完整性并且构建容错环境,并帮助你管理数据,无论数据集的大小。除了免费和开源之外,Postgre SQL还具有高度的可扩展性。例如,你可以定义自己的数据类型,构建自定义SQL函数(此sql函数在另一篇帖子讨论:点此跳转),甚至可以编写来自不同编程语言的代码,而不需要重新编译数据库。

PostgreSql试图符合SQL标准,在这种标准中,这种一致性不会与传统特性相矛盾,或者可能导致糟糕的架构决策。支持SQL标准所需的许多功能,但是有时候语法或者功能略有不同。随着时间的推移,可以预期进一步向一致性迈进。从2018年10月发布的11版本开始,PostgreSQL符合SQL:2011核心一致性的179个强制性功能中的至少160个,在此之前,没有任何关系型数据库符合此标准的完全符合。

3.下面是PostgreSQL中的各种功能介绍

数据类型
1.基本类型:Integer, Numeric, String, Boolean
2.结构类型:Date/Time, Array, Range, UUID
3.文档类型:JSON/JSONB, XML, Key-value(Hstore)
4.几何类型:Point, Line, Circle, Polygon
5.自定义类型:Composite, Custom Types

数据的完整性
1.唯一性,不为空
2.主键
3.外键
4.排除约束
5.显式锁定,咨询锁定

并发性,性能
1.索引
2.高级索引
3.复杂的查询计划期/优化器
4.交互
5.多版本并发控制(MVCC)
6.读取查询的并行化和构建B树索引
7.表分区
8.Sql标准中定义的所有事物隔离级别,包括Serializable
9.即时表达式汇编(JIT)

可靠性,灾难恢复
1.预写日志(WAL)
2.复制:异步,同步,逻辑
3.时间点恢复(pitr),主动备用
4.表空间

安全性
1.身份验证:GSSAPI, SSPI, LDAP, SCRAM-SHA-256, 证书等
2.强大的访问控制系统
3.列和行级安全性

可扩展性
1.存储的功能和程序
2.程序语言:PL/PGSQL, Perl, Python (more)
3.外部数据包装器:使用标准SQL接口连接到其他数据库或流
4.许多提供附加功能的扩展,包括PostGIS

国际化,文本搜索
1.支持国际字符集,例如通过ICU校对
2.全文检索

对比Mysql
1.PostgreSQL的稳定性极强,Innodb等引擎在崩溃、断电之类的灾难场景下抗打击能力有了长足的进步,然而很多Mysql用户都遇到过Server级的数据库丢失的场景---Mysql系统库是MyISAM的,相较而言,PG数据库在这方面要好一些。

2.任何系统都有他的性能极限,在高并发读写,负载逼近极限下,PG的性能指标仍然可以维持双曲线甚至对数曲线,到顶峰之后不再下降,而MySQL明细出现一个波峰后下滑。

3.PG多年在GIS领域处于优势地位,因为它有丰富的几何类型,实际上不止几何类型,PG中有大量的字典、数组、bitmap等数据类型,相比之下MaySQL就差很多,insagram就是因为PG的空间数据库扩展POSTGIS远远强于MySQL的my spatial而采用PGSQL的。

4.PG的“无锁定”特性非常突出,甚至包括vacuum这样的整理数据空间的操作,这个和PGSSQL的MVCC实现有关系。

5.PG的可以使用函数和条件索引,这使得PG数据库的调优非常灵活,mysql就没有这个功能,条件索引在web应用中很重要。

6.PG有极其强悍的SQL编程能力,有丰富的统计函数和统计语法支持,比如分析函数(Oracle的叫法,PG里面叫Window函数),还可以用多种语言来写存储过程,对于R的支持也很好。这一点上MySQL就差的很远,很多分析功能那个都没有,腾讯内部数据存储主要是Mysql,但是主要的数据分析就是Hadoop+PGsql。

7.PG的有很多中集群架构可以选择,plproxy可以支持语句级的镜像或者分片,slony可以进行字段级的同步设置,standby可以构建WAL文件级或者流式的读写分离集群,同步频率和集群策略调整方便,操作非常简单。

8.一般关系型数据库的字符串有限定长度8k左右,无限长Text类型的功能受限,只能作为外部大数据访问。而PG的TEXT类型可以直接方法,SQL语法内置正则表达式,可以索引,还可以全文检索,或使用xml xpath。用PG的话,文档数据库就可以省略了

9.对于web应用来说,复制的特性很重要,Mysql到现在也是异步复制,pgsql可以做到同步,异步,半同步复制。还有mysql的同步是基于binlog复制,类似oracle golden gate, 是基于stream的复制,做到同步很困难,这种方式更加适合异地复制,pgsql的复制基于wal,可以做到同步复制。同时pgsql还提供stream复制。

10.Pgsql对于numa架构的支持要比mysql强一些,比mysql对于读的性能要好些,pgsql提交可以完全异步,而mysql的内存表不够实用(表锁原因)

postgresql(pg)数据库简介相关推荐

  1. 【 PG 入门系列 】PostgreSQL的入门简介(一)

    PostgreSQL的入门简介(一) 1. 唠嗑两句先 1.1. 社区网址 1.2. 创作缘由 1.3. 知识点普及 2. 数据库简介 2.1. 数据库整体排名 2.2. PG的起源 2.3. PG的 ...

  2. PostgreSql | 数据库 | pg数据库的全安装教程(yum,二进制,源码编译)

                                                       PostgreSql的全安装教程(yum,二进制,源码编译) PostgreSql一般简称为pg, ...

  3. PostgreSQL 数据库性能调优的注意点,pg数据库性能优化

    PostgreSQL 数据库性能调优的注意点,pg数据库性能优化 PostgreSQL 优化思路: 一.排序: 二.索引: 三.连接查询方式: 四.多表联查时: PostgreSQL提供了一些性能调优 ...

  4. pg数据库(PostgreSQL)与gp数据库(GreenPlumSQL)的区别与联系

    以前项目采用的都是oracle或者是mysql的数据库,新的项目采用了gp数据库(greenplum),在这之前只听说过pg数据库(postgreSQL). gp数据库官网:http://pivota ...

  5. SQL 审核:基于PG数据库插件hook的SQL规范审核工具

    关注"数据和云",精彩不容错过 内容来源:2017 年 10 月 21 日,平安科技数据库架构师陈刚在"PostgreSQL 2017中国技术大会"进行< ...

  6. postgresql主从备份_基于windows平台的postgresql主从数据库流备份配置

    基于windows平台的postgresql主从数据库流备份配置 因工作需要,需要搞pg数据库的主从备份,领导给了个方向使用流备份,于是开始朝着这个方向进发. 鸣谢大佬A_ccelerator的博客 ...

  7. PostgreSQL PL / java简介

    现代数据库允许以多种语言编写存储过程. 一种常见的实现语言是java.NB,本文讨论了PostgreSQL特定的Java实现. 其他数据库的详细信息会有所不同,但是概念是相同的. PL / Java的 ...

  8. pg数据库json数据类型_PostgreSQL与开发者起舞—让数据库更好服务于开发

    写在前面的话:本文内容有对应50分钟视频讲解,有兴趣可以访问PG与开发者共舞. 很多数据库的对比的活动都是基于数据库本身的一些的底层的功能以及纯数据库方面的对比,等等.更多方面数据库是要为应用来服务的 ...

  9. Linux系统:Centos7下搭建PostgreSQL关系型数据库

    本文源码:GitHub·点这里 || GitEE·点这里 一.PostgreSQL简介 1.数据库简介 PostgreSQL是一个功能强大的开源数据库系统,具有可靠性.稳定性.数据一致性等特点,且可以 ...

最新文章

  1. Appium+Python 自动化测试一之:环境安装(Android篇)
  2. *迭代 分支回收、创建偷懒脚本
  3. SpringMVC拦截器HandlerInterceptor原理及使用
  4. Python3绘图库Matplotlib(01)
  5. 注册后自动登录 php,php – 自动注册后用户身份验证
  6. eclipse+tomcat开发web程序
  7. python乘法运算为什么是重复_警惕python中的*重复符(运算符)
  8. 从字符串数组中寻找数字的元素
  9. 为什么都瞧不起QQ邮箱?
  10. 后台业务管理系统原型模板/在线教育后台管理系统/客服系统/财务管理/用户管理/订单管理/教育业务后台管理/课程管理/教师管理/活动管理/文章管理/Axure高保真在线教育行业原型/Axure后台管理
  11. 28.Linux/Unix 系统编程手册(上) -- 详述进程创建和程序执行
  12. 8.UNIX 环境高级编程--进程控制
  13. 扇贝有道180930每日一句
  14. python将h264文件视频转为mp4格式
  15. 图论 ——五种最短路算法
  16. 【115天】尚学堂高琪Java300集视频精华笔记(7-8)
  17. 求一个集合的所有幂集
  18. 选择system bus还是session bus?
  19. Apache之搭建静态网站
  20. Win11--将右键菜单改回Win10(展开菜单)

热门文章

  1. C 语言编程 — 程序的编译流程
  2. Linux 操作系统原理 — 内存 — mmap 进程虚拟内存映射
  3. 用 C 语言开发一门编程语言 — 跨平台的可移植性
  4. esp32-cam的原理图
  5. 关于main函数的(int argc,char *argv[])
  6. stm32 IO口模式的寄存器配置
  7. NR 5G 身份标识
  8. [svc]java初步
  9. Python的安装、pycharm的安装及设置
  10. update操作报错