|什么是PostgreSQL?比MySQL、Oracle强在哪( 三 )


这些强大的功能可以大大地节约开发资源 。 很多开发人员在PostgreSQL上做开发时 , 会发现数据库已实现很多功能 , 甚至有一些业务功能都不再需要写代码来实现了 , 直接使用数据库的功能即可解决问题 。

  • 性能优化工具与度量信息丰富
PostgreSQL数据库中有大量的性能视图 , 可以方便地定位问题(比如可以看到正在执行的SQL , 可以通过锁视图看到谁在等待 , 以及哪条记录被锁定等) 。 PostgreSQL中设计了专门架构和进程用于收集性能数据 , 既有物理I/O方面的统计 , 也有表扫描及索引扫描方面的性能数据 。
  • 在线操作功能好
PostgreSQL增加空值列时 , 本质上只是在系统表上把列定义上 , 无须对物理结构做更新 , 这就让PostgreSQL在加列时可以做到瞬间完成 。 PostgreSQL还支持在线建索引的功能 , 在创建索引的过程可以不锁更新操作 。
  • 从PostgreSQL9.1开始 , 支持同步复制(synchronous replication)功能 , 通过Master和Slave之间的复制可以实现零数据丢失的高可用方案 。
  • 可以方便地写插件来扩展PostgreSQL数据库的功能
PostgreSQL提供了安装、编写插件的整体框架 , 如提供了create extension等SQL语句以方便地装载插件;写一个动态库可以很方便地给PostgreSQL添加函数;提供了外部数据源(FDW)的框架和编程接口 , 根据此框架和编程接口可以方便地编写访问其他数据库和外部数据源的插件 。
现在针对已有的常见外部数据源 , 如Oracle、MySQL、SQL Server等数据库都有了第三方插件 , 通过这些第三方插件可以在PostgreSQL数据库中方便地访问外部数据 。 另外 , PostgreSQL还提供了钩子函数的接口 , 可以实现更强大功能的插件 , 如pg_pathman分区表的插件、citus分库分表的插件等 。
另外 , 由于MySQL对SQL语法支持的功能较弱 , 基本上不适合做数据仓库 。 虽然也有些厂商开发了MySQL数据仓库的存储引擎(如Infobright) , 但这个方案只是解决了部分数据仓库的问题 , SQL功能弱的问题还是无法完全解决 。
而且Infobright的社区版本在功能上有很多限制 , 如不支持数据更新、不支持太多的并发执行(最多支持十几个)等 。 而PostgreSQL不仅支持复杂的SQL , 还支持大量的分析函数 , 非常适合做数据仓库 。
PostgreSQL数据库中还有一些支持移动互联网的新功能 , 如空间索引 。 PostGIS是最著名的一个开源GIS系统 , 它是PostgreSQL中的一个插件 , 在PostgreSQL中使用它很方便 。 通过PostGIS也可以很方便地解决LBS中的一些位置计算问题 。
综上所述 , PostgreSQL数据库是一个功能强大 , 又带有移动互联网特征的开源数据库 。
如果你仅仅是想把数据库作为一个简单的存储软件(一些大的互联网公司就是这样) , 一些较复杂的功能都想放在应用中来实现 , 那么选择MySQL或一些NoSQL产品都是合适的 。 如果你应用的数据访问很简单(如大多数的博客系统) , 那么后端使用MySQL也是很合适的 。
但是如果你的应用不像博客系统那么简单 , 又不想消耗太多的开发资源 , 那么PostgreSQL是一个很明智的选择 。 最有说服力的例子就是图片分享公司Instagram , 在使用“Python+PostgreSQL”架构后 , 只是十几个人就支撑了整个公司的业务 。
在数据库中使用PostgreSQL的感觉就像在开发语言中使用Python , 会让你的工作变得简洁和高效 。
2. PostgreSQL与Oracle数据库的对比
|什么是PostgreSQL?比MySQL、Oracle强在哪
本文插图

从功能上说 , PostgreSQL可以与Oracle数据库媲美 。 Oracle数据库是目前功能最强大的商业数据库 , PostgreSQL则是功能最强大的开源数据库 。 Oracle在集群功能如RAC、ASM方面比较强 , 但PostgtreSQL也有一些比Oracle强的特性 , 如在索引和可扩展等方面 。


推荐阅读