PostgreSql简介

关于PostgreSQL:

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. 数据类型:
    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. 数据的完整性
    1. 唯一性,不为空
    2. 主键
    3. 外键
    4. 排除约束
    5. 显式锁定,咨询锁定

 

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

 

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

 

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

 

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

 

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

 

  1. 对比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简介 PostgreSQL 是一个功能强大的开源对象-关系数据库系统,以其稳定性、可靠性、数据完整性以及对 SQL 标准的严格遵循而著称[^2]。 #### 主要特点 - **事务支持**:提供完整的 ACID 特性(原子性、一致性、隔离性和持久性),确保数据操作的安全可靠。 - **扩展性强**:除了基本的关系型数据库特性外,还提供了丰富的扩展模块来增强其功能,如 Apache Arrow Flight SQL Adapter for PostgreSQL 扩展用于高效的数据传输[^1]。 - **多版本并发控制 (MVCC)**:允许读写操作并行执行而不互相阻塞,提高了系统的性能和响应速度。 - **高级查询优化器**:能够自动选择最优路径来进行复杂的查询处理,从而提高效率。 - **多种编程接口**:支持 C/C++、Python、Java 等主流开发语言连接访问数据库;同时也内置 PL/pgSQL 这样的过程化语言供存储过程编写使用[^4]。 ### 基本命令与操作 对于初次接触 PostgreSQL 的用户来说,掌握一些基础的操作是非常重要的: - **启动服务** - Linux 上可以通过 `service postgresql start` 或者 `systemctl start postgresql.service` 来开启服务进程。 - **进入交互环境** - 使用默认创建好的超级管理员账户 `postgres` 登录到 psql 终端工具中去管理数据库实例: ```bash sudo -u postgres psql ``` - **查看现有数据库列表** - 输入 `\l` 查看当前服务器上的所有可用数据库名称及其描述信息。 - **退出psql终端** - 键入 `\q` 即可安全地断开连接并返回至操作系统提示符下。 - **设置或关闭查询计时** - 开启查询耗时时长统计功能有助于开发者调试程序逻辑中的瓶颈所在之处。例如输入`\timing` 后再做一次简单算术运算测试效果: ```sql \timing SELECT 3 * 7; ``` - **浏览已加载插件情况** - 若要确认某个特定附加组件是否已经被激活,则可通过查询 system catalog 表 `pg_extension` 获取相关信息: ```sql SELECT * FROM pg_extension; ``` ### 高级应用案例 当涉及到实时通信场景下的消息推送机制实现时,“PostgreSQL + WebSocket”的组合方案不失为一种创新性的解决方案尝试方向之一[^5]。该项目旨在利用两者各自的优势构建起一套稳定高效的双向通讯框架结构模型,适用于现代Web应用程序架构设计当中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值