PostgreSQL到底好不好?为什么互联网公司不敢用呢?


PostgreSQL到底好不好?为什么互联网公司不敢用呢?

文章插图
 
之前呢!笔者在某平台上看了关于PostgreSQL相关的内容,并且看到下面评论中问到关于PostgreSQL这个数据库到底好不好用 。那么下面我们就来聊聊关于PostgreSQL相关的内容,并且相比较于MySQL等一些数据到底有什么样的区别 。
PostgreSQL的优势PostgreSQL自称是目前为止最先进的关系型数据库,但是事实上,它不仅仅只是一个单纯的关系型的数据库 。它其实还支持了一些非关系型数据的存储,也就是说它还支持了一些NoSQL的数据类型 。例如用它可以实现KV键值对的存储,可以实现JSON数据的存储 。
其实从本质上来讲,PostgreSQL才是真正的NoSQL,也就是Not Only SQL,不仅仅是SQL 。这就是因为它不仅仅支持了关系型数据的存储 , 而且还支持了非关系型数据的存储,也就是说从另外一个角度上来讲,PostgreSQL其实可以理解为一个全栈类型的数据库 。
那么什么是全栈呢?这里的全栈就是指它所能支持的使用场景比较的多,可以支持各种各样的扩展 。
PostgreSQL到底好不好?为什么互联网公司不敢用呢?

文章插图
 
上面我们提到 , PostgreSQL所支持的数据类型非常的丰富,这样使得它所能适配的场景会比较多,另外一点就是它也是可以支持事务操作的 , 而且它还提供了非常丰富的数据分析工具,虽然定位是一个对象关系数据库,但是它对于一些SQL结构化查询的支持也是非常好的 。在有些方面的SQL操作的支持要比MySQL要更加的丰富,包括对于子查询、窗口函数等的支持 。
PostgreSQL还支持了时序数据存储、地理位置信息的存储、数据仓库等PG都提供了它对应的解决方案 。而且想必很多人也对其很多支持的高可用实现方案有所了解 。例如PostgreSQL它也支持高可用集群部署方案,并且支持副本的冗余、也支持内存主从同步机制,它内置的基于二进制的同步复制方式在大部分情况下,比MySQL所支持的基于binlog的同步方式可能更加可靠 。
PostgreSQL到底好不好?为什么互联网公司不敢用呢?

文章插图
 
另外就是PostgreSQL是它所支持的开源协议是BSD,也就是说它的开发的自由度会比较高 , 我们甚至可以基于PostgreSQL可以进行一些二次开发,并且二次开发的产品也可以变成自己的商业产品,国内有很多的数据仓库都是基于它来进行的二次开发,所以很多云原生的关系型数据库基本上都与它有着或多或少的联系,这也是PostgreSQL社区一直非常活跃的原因之一 。
扩展性PostgreSQL的扩展性也是比较强的,它是基于目录驱动进行的扩展 。可以非常灵活的在其中添加一些数据类型、操作方式、以及内置函数等等 。这过程也是非常弹性的也就是说你用的时候可以将它加上,不用的时候删除就可以了 , 不需要进行多余的编译加载的操作 。这也是PostgreSQL为什么可以支持去自定义一些新的数据类型的原因 。
与MySQL的差异MySQL是基于GPLv2开源协议,虽然社区活跃度也不低,但是它背后毕竟是甲骨文,所以说商业化程度其实并不是太高 。
PostgreSQL到底好不好?为什么互联网公司不敢用呢?

文章插图
 
MySQL支持了很多的存储引擎,除了InnoDB和NDB之外,其他的引擎都不支持事务操作 。像是PostgreSQL的话它就只有一个存储引擎,所以直接就是支持事务的 。虽然这种方式可以省去你选择的麻烦,但是所带来的问题就是无法进行合理的均衡设计,但是从另一个方面来讲,既然支持了,就一定会考虑性能,但是它在某些场景中,例如遇到一些小数据量的读写,可能就比不过MySQL所支持的一些其他的存储引擎了 。
PostgreSQL对于SQL语句的兼容性要比MySQL要更好一些,像是对于一些子查询的支持,对于联表查询等PostgreSQL的性能要比MySQL要更好一些 。
PostgreSQL到底好不好?为什么互联网公司不敢用呢?

文章插图
 
PostgreSQL对于客户端程序的支持,要比MySQL支持的要更丰富 。
PostgreSQL对于数据类型的支持也要比MySQL要更多一些 。例如它可以用来存储一些JSON , XML格式的数据 。对于这种数据的支持可能PostgreSQL要略胜于MySQL 。这主要是因为PostgreSQL在操作一些并发读写的时候,会省略在MySQL中底层所支持的一些锁的操作 。但是在对于数据量较小的情况下 , MySQL会更加方便 。这其实也是非常符合很多真实场景中所暴露出来的问题的 。


推荐阅读