目录

文章目录

  • 目录
  • PostgreSQL
  • 特性
    • 数据类型
    • 完整性约束
    • 并发性、性能
    • 可靠性
    • 可扩展性
    • 安全性
    • 国际化,文本搜索

PostgreSQL

PostgreSQL 起源于加州大学伯克利分校计算机系,最初设想于 1986 年,当时叫做 Berkley Postgres Project。1995 年,开发者 Andrew Yu 和 Jolly Chen 在 Postgres 中添加了一个 SQL 翻译程序,并在开源社区发布,称为 Postgres95。1996 年,开发者再次对 Postgres95 做了较大的改动,并将其作为 PostgresSQL 6.0 版正式发布。

  • Github:https://github.com/postgres/
  • 官方网站:https://www.postgresql.org/
  • 中文社区:http://www.postgres.cn/index.php
  • PostgreSQL 12.2 手册:http://www.postgres.cn/docs/12/index.html

PostgreSQL 是一个纯粹的、由社区驱动的开源软件,被称为世界上功能最强大的对象关系型数据库管理系统(ORDBMS)。也就是说 PostgreSQL 同时兼具关系型数据库和非关系型数据库的特性。自从 MySQL 被 Oracle 收购以后,PostgreSQL 逐渐成为了开源关系型数据库的首选。

特性

数据类型

  • 基本类型:Integer、Numeric、String、Boolean
  • 结构类型:Date/Time、Array、Range、UUID
  • 文档类型:JSON/JSONB、XML、HStore(Key-value)
  • 几何类型:Point、Line、Circle、Polygon
  • 自定义类型:Composite、Custom Types

完整性约束

  • 主键约束:实体完整性
  • 外键约束:参照完整性
  • 数据唯一约束,非空约束:用户定义完整性
  • 排除约束
  • 显式锁定、咨询锁定

并发性、性能

  • PostgreSQL 服务器可以处理来自客户端的多个并发请求。 因此,它为每个连接 forks 一个新的进程。
  • 索引:用户可以自定义索引,或使用内置的 B 树,哈希表与 GiST 索引。
  • 复杂的查询优化器
  • 查询的并行化
  • 多版本并发控制:PostgreSQL 使用 MVCC(Multiversion concurrency control,多版本并发控制)系统进行并发控制,该系统向每个用户提供了一个数据库的 “快照”,用户在事务内所作的每个修改,对于其他的用户都不可见,直到该事务成功提交。
  • 表分区
  • SQL 标准中定义的所有事物隔离级别,包括 Serializable
  • 即时表达式汇编(JIT)
  • 面向 NUMA 多处理器架构

可靠性

PostgreSQL 的稳定性极强,Innodb 等引擎在崩溃、断电之类的灾难场景下抗打击能力很好。

  • 预写日志(WAL)
  • 数据复制(异步,同步,逻辑):对于 Web 应用来说,复制的特性很重要,PostgreSQL 可以做到同步,异步,半同步复制。PostgreSQL 的复制基于 WAL,可以做到同步复制。同时 PostgreSQL 还提供 stream 复制。
  • 时间点恢复
  • 主动备用
  • 表空间
  • 支持多种集群架构:plproxy 可以支持语句级的镜像或者分片,slony 可以进行字段级的同步设置,standby 可以构建 WAL 文件级或者流式的读写分离集群,同步频率和集群策略调整方便,操作非常简单。

可扩展性

PostgreSQL 有极其强悍的 SQL 编程能力,有丰富的统计函数和统计语法支持,比如分析函数,还可以用多种语言来编写存储过程。

  • 自定义数据类型
  • 自定义函数:通过函数,可以在数据库服务器端执行指令程序。
  • 自定义操作符
  • 自定义聚集函数
  • 自定义索引方法
  • 自定义存储过程:支持多种语言来写存储过程和程序,例如:PL/PGSQL、Perl、Python 等。
  • 外部数据包装器:使用标准 SQL 接口连接到其他数据库或流(Stream)
  • 触发器:触发器是由 SQL 语句查询所触发的事件,本质是数据库的回调函数。如:一个 INSERT 语句可能触发一个检查数据完整性的触发器。触发器通常由 INSERT 或 UPDATE 语句触发。
  • 数据仓库:能平滑迁移至同属 PostgreSQL 生态的 GreenPlum,DeepGreen,HAWK 等,使用 FDW 进行 ETL。

安全性

  • 身份验证方式:GSSAPI、SSPI、LDAP、SCRAM-SHA-256、证书等。
  • 强大的访问控制系统
  • 列和行级安全性

国际化,文本搜索

PostgreSQL 的 SQL 语法内置正则表达式,可以索引,还可以全文检索,或使用 xml xpath。用 PostgreSQL 的话,文档数据库就可以省略了。

  • 支持国际字符集
  • 全文检索:通过 Tsearch2 或 OpenFTS,8.3 版本中内嵌 Tsearch2。

PostgreSQL — Overview相关推荐

  1. 如何在Postgresql中使用模糊字符串匹配

    It's a fact - people make typos or simply use alternate spellings on a frequent basis. 这是事实-人们经常打错字或 ...

  2. date类型_Chapter 01. 常见数据类型概述 Overview of Common Data Types

    课程:DataCamp_Skill Track_SQL fundamentals[笔记] Chapter 01. 常见数据类型概述 Overview of Common Data Types 了解常见 ...

  3. postgrest和postgreSQL权限认证

    前面我们说了如何从0搭建postgrest和postgresql服务,当服务搭起来后没有权限认证肯定是用不的,这节将讲解如何搭建权限认证.pg是通过jwt进行权限认证. 首先要将pg所要用的jwt上传 ...

  4. PostgreSQL 11 preview - bloom filter 误报率评估测试及如何降低误报 - 暨bloom filter应用于HEAP与INDEX的一致性检测...

    标签 PostgreSQL , bloom filter , 误报率 , amcheck 背景 bloom filter是一个空间压缩,概率数据结构,可以存储超容量的数据集,用于判断某个元素是否存在于 ...

  5. PostgreSQL服务器管理:从源代码安装

    本文档为PostgreSQL 9.6.0文档,本转载已得到原译者彭煜玮授权. 1. 简单版 ./configure make su make install adduser postgres mkdi ...

  6. GIS矢量数据上传到postgresql数据库的三种方式

    **前提工作:**新建自己的数据库用于存放数据,如:test.在数据库上建立查询语句:CREATE EXTENSION postgis; 运行即可在扩展中出现,其他扩展的建立类似. 一.通过QGIS数 ...

  7. 使用 bitnami/postgresql-repmgr 镜像快速设置 PostgreSQL HA

    什么是 PostgreSQL HA? 此 PostgreSQL 集群解决方案包括 PostgreSQL 复制管理器(replication manager),这是一种用于管理 PostgreSQL 集 ...

  8. Python+PostgreSQL+Postgis+Psycopg2+GeoDjango Installer

    GeoDjango A:安装 源自:http://geodjango.org/docs/install.html ====================== GeoDjango Installati ...

  9. Postgresql 日志收集

    PG安装完成后默认不会记录日志,必须修改对应的(${PGDATA}/postgresql.conf)配置才可以,这里只介绍常用的日志配置. 1.logging_collector = on/off - ...

最新文章

  1. 代码设置按钮样式的方法
  2. SpringMVC日期类型转换问题三大处理方法归纳
  3. laravel swoole mysql_Laravel集成Swoole教程
  4. 清除word中超链接
  5. acdream 1409 Musical 状压DP
  6. 前端学习(3071):vue+element今日头条管理-删除文章失败
  7. C语言字符串、字符数组
  8. ubuntu 安装php redis,ubuntu上安装php redis
  9. sql server死锁_了解SQL Server中的死锁定义
  10. Linux虚拟机扩容
  11. 高斯模糊 主色 android,【PS精选案例教程】制作柔美的蓝色数码霓虹字
  12. Python3爬虫韩寒新浪博客文章
  13. python 抓取豆瓣一拍一所有妹子客片
  14. 【代码质量】C/C++代码静态分析与常用分析软件工具
  15. 让Thinkpad USB键盘支持小红帽中键滚轮的方法(ThinkPad USB Keyboard with TrackPoint)
  16. aac格式怎么转换为MP3格式
  17. 供应科研试剂乙缩醛-琥珀酰亚胺酯,Acetal-NHS (SDMB)
  18. js实现金额的大写转小写
  19. Pubmed数据库改版后如何做计量分析与知识图谱
  20. IVM在什么情况下可以使用

热门文章

  1. C#开发Unity游戏教程之游戏对象的行为逻辑方法
  2. jpa多表关联查询_JPA【关联查询篇】
  3. 爬虫时出现 IndexError: list index out of range 的原因
  4. JAVA实现调整数组顺序使奇数位于偶数前面问题(《剑指 offer》)
  5. html与文本文件区别,流文件与文本文件的区别
  6. java正则表达式及api_Java魔法堂:深入正则表达式API
  7. “假一赔十”的4k 120Hz电视能买吗?研究完我服了,水是真的深
  8. 英伟达“神笔马良”GauGAN发布Windows应用程序,可导出PSD文件
  9. MLPerf发布首个AI芯片推理测试排行榜:阿里平头哥含光800获得多项第一
  10. 我长了一条日本制的尾巴:智能配合身体运动,增强平衡感,把我变成“改造人”| SIGGRAPH...