微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

争议 | PostgreSQL vs 主流开源如MySQL及主流闭源如Oracle,是否有优势?

图片

Postgresql数据库相比主流开源如MysqL有哪些优势,相比主流闭源如Oracle有哪些优势,能否进行下对比?

问题来自@邓毓 某农信 系统工程师,下文来自twt社区众多同行实践经验分享,欢迎大家参与交流,各抒己见。


@zhuqibs Mcd 软件开发工程师:

每一种数据库都有优点,都有缺点。

1、Postgresql完全免费,而且是BSD协议,如果你把Postgresql改一改,然后再拿去卖钱,也没有人管你,这一点很重要,这表明了Postgresql数据库不会被其它公司控制。oracle数据库不用说了,是商业数据库,不开放。而MysqL数据库虽然是开源的,但现在随着SUN被Oracle公司收购,现在基本上被Oracle公司控制,其实在SUN被收购之前,MysqL中最重要的InnoDB引擎也是被Oracle公司控制的,而在MysqL中很多重要的数据都是放在InnoDB引擎中的,反正我们公司都是这样的。所以如果MysqL的市场范围与Oracle数据库的市场范围冲突时,Oracle公司必定会牺牲MysqL,这是毫无疑问的。

2、与Postgresql配合的开源软件很多,有很多分布式集群软件,如pgpool、pgcluster、slony、plploxy等等,很容易做读写分离、负载均衡、数据水平拆分等方案,而这在MysqL下则比较困难。

3、Postgresql代码写的很清晰,易读性比MysqL强太多了,怀疑MysqL的源代码被混淆过。所以很多公司都是基本Postgresql做二次开发的。

4、Postgresql在很多方面都比MysqL强,如复杂sql的执行、存储过程、触发器、索引。同时Postgresql是多进程的,而MysqL是线程的,虽然并发不高时,MysqL处理速度快,但当并发高的时候,对于现在多核的单台机器上,MysqL的总体处理性能不如Postgresql,原因是MysqL的线程无法充分利用cpu的能力。 

5、Postgres数据库曾在insert大赛中独占鳌头,速度最快。


@Amygo 分布式事务数据库管理员

MysqL/innoDB 是GPLv2协议,且有欧洲银行同甲骨文签署的协议,如违反则MysqL以一欧元卖给欧洲银行。故大家不用担心。另外,甲骨文要是不发展MysqL,则MariaDB随时会吸引社区的人过去壮大起来且做到无缝替换。

以下是几个角度下的比较:

1、业务系统的数据库要是Oracle 被直接替换,单库到单库的模式:肯定换PG更容易,接近98%的相似度;MysqL是85%的相似度。

2、 业务系统的数据库要是Oracle 要被替换成分布式数据库,单体大库到多个小库的模式(也即数据分片):肯定换MysqL之上的分布式数据库更佳,因为换分布式数据库则意味着“存储过程、包、自定义函数、视图、复杂子查询”都没有了。

3、从交易关系型数据库产品的角度:OLTP业务场景 MysqL 比 PG 更适合,因为前者的InnoDB存储引擎要比PG的强大,有完善的MVCC、行锁等机制。

4、从数据分析业务场景的角度,PG 会比MysqL更强,因为PG可以做复杂计算、HASHJOIN等。

5、PG 唯一是理念和新技术方面 比Oracle先进,因为是属于学术派,不注重实战、稳定可靠和性能。PG也是因为强学术派、缺乏MVCC等因素,从而社区人数、行业占有率远低于MysqL和Oracle。

国产数据库厂商中:集中式数据库产品厂商因为PG兼容Oracle的缘故而拿来修改,另外是做关系数据分析的数据仓库之用,也是因GreenPlum开源而被模仿。


@anonym 系统架构师:

Postgresql完全免费,而且是BSD协议,如果你能掌控他的源码,可以做很多事情。Oracle数据库是商业数据库,不开放,发现问题解决起来难度非常大,虽然Oracle的售后机制和培训力度都很强,但你如果想使用的如鱼得水,非常难,在重大问题发生的时候,相信除了原厂,业界的大佬也是束手无策。

Postgresql很容易做读写分离、负载均衡、数据水平拆分等方案。Oracle的集群架构就不用说了,用的最多的就是RAC,什么读写分离,水平拆分,这在Oracle11G以前是不存在的。MysqL的架构也很多,最成熟的读写分离mycat等中间件,也有很多弊端,有能力的大公司都是自己开发适合自己的中间件,或者修改源码。至于MysqL其他的方案,在5.7引入的mgr,mha等,看起来很强,用起来很麻烦,也不稳定,现在用在生产上的应该比较少,8.0改进了很多,没有具体测试,在这里不做过多的评价。

不过,PG虽好,但是用于生产还需要DBA能力超强,也要慎重选择,或者找一家靠谱的第三方服务商。


@weibo 北京象前行信息科技有限公司 副总经理/副总裁:

两者作为优秀的开源关系数据库,各有优势,完全可以根据自己的需求进行选择。

楼上的回答都能说到两者优劣势的一些点,最近笔者有翻译PG国际专家分享文章,简单概要阐述PG的主要优势如下:

1.首要的就是PG发扬传递民主自由精神,遵循自由开放的类BSD、MIT协议。近30年的发展国内外拥有众多用户群体。

2.国际社区管理规范有序,技术交流分享活跃,PG版本演进迭代持续、稳定,每年一个主版本,今年将发布13,国际社区维护近五个主要版本,目前pg 10 应用广泛。

3.起源于美国伯克利大学,正宗学院派,代码 (ANSI C) 严谨,注释详细,可读性强。

4.扩展性强,很多代码贡献者可以通过扩展实现性能、管理等方面的功能,譬如扩展分布式citus(微软在极力发展)、扩展FDW(不同种类数据库间的数据库交换)、扩展地图功能PostGis。

5.符合sql标准化程度高, PG支持sql : 2016的大部分主要功能。完整的核心一致性需要179个强制性的特性,Postgresql至少符合160个。这几乎超过了任何其他数据库引擎。

6.兼容性好,为众多应用开发语言提供友好接口,譬如Python、Java、Tcl、Perl等。

7.索引丰富,根据应用需求可灵活选择索引,提升数据库访问效率,包括 GiST、spi - GiST、KNN GiST、GIN、BRIN和Btree都是可用的。还有很多其他索引可通过扩展实现 ,例如Bloom。

8.安全透明, Postgresql一个安全邮件列表, 这意味着所有已知的***载体一旦公开就会被处理。

9.国内外基于PG有很多优秀的产品,这些商业主体会集成和发扬PG,并反哺社区,让PG更好用。

10.PG发展趋势不断向上,也算是个优势吧。

先总结这么多,我觉着PG就像是一把不错的瑞士军刀。

感兴趣可以阅读指正这边翻译的文章

https://www.talkwithtrend.com/Article/248417

MysqL 也在互联网公司用过,它的计算引擎很丰富,用户基数比较大,如果吐槽PG MVCC,我个人觉着只是实现思路的不同,定期的做好清理,在使用其它数据库时,也都是需要运维人员发挥作用的。有传言PG后边的版本可能会改造mvcc机制,国际社区有500+Commiter,他们是个智慧群体,如果觉着有必要自然后考虑优化。好的东西都值得推广使用,兼容并蓄,博采众长吧。


@某金融企业 技术经理:

这几种数据库的存在和发展都是因应不同用户的需求,均有其必要性和价值,可以说各有优势,还是要根据需要来比较。

当然,PG的多功能、扩展性和发展势头也是有目共睹。摘录一段上面的一位兄弟“ID:weibo”所翻译文章内容:“您想使用Nosql、Riak、REACT、Redis、Mongo等的功能吗?Postgresql都具备这种能力。不可否认,不能包括原始产品的所有细节。例如,Postgresql不会为您创建新的分片,那仍然是一个手动过程。但总有办法,譬如pg_partman。”



版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐