暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

动手学习|认识PostgreSQL

113

序言

学习PostgreSQL的初衷

近期由于公司的其他项目在使用PostgreSQL,所以在这个基础上,不得不来学习下PostgreSQL,所学不到之处,还望批评指正。打开PostgreSQL官网,赧然看到一行标语:

PostgreSQL: The World’s Most Advanced Open Source Relational Database

这句话翻译过来就是:PostgreSQL是世界上最先进的开源关系数据库

一般来说,对于国内的广告法来说,这是不是有点那个啥了?为啥呢?带着这个问题,让我一探究竟。
image.png

鉴于PostgreSQL发展趋势

为了弄清楚这个问题,我首先打开了最大强大的数据引擎排名网站查询一二,下面是我在上面的一张截图(截止到2204.4月份,数据库系统排名趋势图,经常做数据的人应该都比较熟悉这个网站)。
image.png

从上面的统计表中,不难看出,近几年PostgreSQL一直处于增长状态,尤其是在2017开始,超越MongoDB,增长趋势越发明显。搜索了下其他的新闻,国内的一些公司也大多使用PG了,而且在云端也有很多PostgreSQL的支持。甚至也会出现再一些招聘需求上,也标注了必须要要掌握PostgreSQL(现在学习还来得及,一起学习哇)。今天就开始了解一下PostgreSQL数据库。

对于PostgreSQL的未来趋势看法

当我放大这张图时,从关系型数据层面来看,鉴于SQL Server近期明显的下降趋势,而在PostgreSQL增长趋势明显的情况,预计2026年PostgreSQL将于SQL Server的流行度旗鼓相当,2026年之后可超越SQL Server排列到关系型数据库前三。
image.png

Oracle 学习成本有些高,即使是企业也不得不老泪纵横;MySQL自从被Oracle收购之后开源情况不容乐观,再加上国内国产化呼声甚高(国产数据库相关资讯信息可参考墨天轮:https://www.modb.pro/dbRank),开源对于国内来讲,可谓是如鱼得水;而对于SQL Server来说,国内使用者应该是逐月减少,毕竟SQL Server的时代已经过去。

PostgreSQL历史

什么是PostgreSQL

说了那么多,做了那么多的铺垫,我们应该正式认识下这款关系型数据库了。(PS:越看越感觉应该命名 ElephantSQL)
image.png
PostgreSQL是一个强大的开源对象关系数据库系统,它使用和扩展了SQL语言,结合了许多安全存储和扩展最复杂数据工作负载的功能。他比MySQL在协议上面更加自由,PostgreSQL 基于 PostgreSQL License 完全开源,类似于 BSD 与 MIT 开源协议,知道这点我感觉已经足够了。

PostgreSQL的前世今生

PostgreSQL的起源可以追溯到1986年,作为加州大学伯克利分校POSTGRES项目的一部分,并在核心平台上进行了超过35年的积极开发。
image.png

下面我将使用表格来呈现PostgreSQL的历史版本信息。

公开版本 开始/结束时间 描述
17.x 2024-02 / ~ 最新开发版本,于2024年2月开始公开
16.x 2023/2028 改进了逻辑复制、pg_stat_io视图(用于I/O指标)
15.x 2022/2027 实现SQL标准的MERGE语句,支持Python3,不在支持Python2。
14.x 2021/2026 添加了SQL标准的SEARCH和CYCLE子句,允许将DISTINCT添加到GROUP BY
13.x 2020/2025
12.x 2019/2024
11.x 2018/2023
10.x 2017/2022
9.x 2010/2021
8.x 2005/2014
7.x 2000/2010
6.x 1997/2004 正式更名为PostgreSQL。
5.x(Postgres95) 1994/1995 Postgres95版本发布。
4.x(v4.2) 1994 1994年发布了v4.2
3.x(v3) 1991 升级为v3
2.x(v2) 1990 升级为v2
1.x(v1) 1989 正式开放版本,为v1。
0.x 1982 Ingres的专有版本,雏形。

PostgreSQL社区支持情况

从PostgreSQL的官网也可以查询到,目前维护的最低版本为v12,v11以及以下版本不在提供支持。后续为了方便学习以及操作,本机器安装了 PostgreSQL 14PostgreSQL 16两个版本。
image.png

Aion@xxx ~ $ brew search postgresql ==> Formulae postgresql@10 postgresql@12 postgresql@14 ✔ postgresql@16 ✔ postgrest postgresql@11 postgresql@13 postgresql@15 qt-postgresql ==> Casks navicat-for-postgresql posture-pal If you meant "postgresql" specifically: postgresql breaks existing databases on upgrade without human intervention. See a more specific version to install with: brew formulae | grep postgresql@ Aion@xxx ~ $

PostgreSQL特性

上面也有讲到过,PostgreSQL是一个强大的开源对象关系数据库系统,所以我能最快想到的便是开源特性。下面是我梳理的一些特性:
● 免费开源:PostgreSQL是免费且开源,可自由地使用、修改和分发它。它为我们提供了极大的灵活性和自定义空间。
● 可扩展性:PostgreSQL支持用户通过添加自定义函数、数据类型和索引等方式扩展其功能。其次还支持分区表、流复制和并行查询等高级功能,以满足处理大量数据(一般会用作大规模集群处理大量数据)的需求。
● ACID兼容性:PostgreSQL支持ACID(原子性、一致性、隔离性和持久性)事务,确保在任何情况下都可以维护数据的完整性和一致性。
● 并发性:多版本并发控制,也就是我们常说的(MVCC),PostgreSQL使用MVCC来管理并发访问,确保对数据的并发访问不会导致数据损坏或丢失。
● 可编程性:PostgreSQL支持多种编程语言(PL/pgSQL、Python、Java),使得开发人员可以轻松地创建存储过程、触发器和自定义函数等,主要是集成了很多底层驱动(https://github.com/pgjdbc)。
● 标准兼容性:PostgreSQL支持大部分SQL标准,并且提供了许多其他现代特性,如复杂查询、外键、触发器、视图和事务完整性等。
● 安全性高:PostgreSQL提供了多种安全功能,包括用户认证、权限控制、SSL加密等,保护数据的安全性。
● 兼容性良好:PostgreSQL支持ANSI SQL标准,还支持很多其他数据库系统的语法和特性,这对于迁移其他数据库系统的应用到PostgreSQL。
● 社区活跃性:PostgreSQL有一个活跃的社区,提供了丰富的文档、教程和支持,可以帮助用户解决各种问题和挑战。

总结

本篇作为一篇学习和了解关于PostgreSQL的文章,也是自己学习的一个开始,后续将陆续编写相关博文。


[引用]

  1. DB-Engines 流行度排名
  2. PostgreSQL 官网
  3. PostgreSQL wiki History
  4. PostgreSQL 版本信息
最后修改时间:2024-04-23 23:40:39
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论