原文:https://linux.cn/article-5133-1.html
David Bolton是一名独立开发者,他使用Postgresql和MysqL都已有超过十年的时间。近日,他撰文阐述了选择Postgresql而不是MysqL的理由。他认为,MysqL之所以仍然如此流行是因为每个Linux Web托管软件包中都包含它。但随着Oracle将其收购,MysqL的开源程度大不如前。而Postgresql不仅发展更快,还加入了JSON支持,成为少数几个支持Nosql的关系型数据库之一。
MysqL/MariaDB的当前版本是5.7.6(MariaDB为MysqL创建者Monty Widenius创建的一个MysqL分支),Postgresql的版本是9.4.1。Bolton从以下几个方面对比了两者的最新版本:
- ANSI标准兼容性:与先前的版本相比,MysqL已经有了长足的进步,但MysqL背后的哲学是,如果客户喜欢,他们就会支持非标准扩展,而Postgresql从开始就将标准构建到平台里。不过,二者殊途同归,差别不大;
- ACID遵从性:Postgresql有一个存储引擎,而MysqL有9个,但只有MyIsam和InnoDB与大部分用户有关,其中,后者为默认存储引擎。InnoDB和Postgresql都完全遵循ACID,差别不大;
- 无锁表修改:MyIsam使用表级锁来提升速度,这会导致写互斥。但Postgresql和InnoDB均使用行级锁,差别不大;
- 子查询:长期以来,这一直是MysqL的一个弱点,虽然5.6.5作了重大改进,但Postgresql对表连接支持得更好,尤其是MysqL不支持全外连接,因此,这方面Postgresql胜过MysqL;
- JSON支持和Nosql:Postgresql最近增加了JSON支持,与传统的关系型数据库相比,它提供了更大的数据存储灵活性,因此,这方面Postgresql胜过MysqL。
此外,Bolton指出,选择Postgresql还有如下理由:
- 更好的许可:Postgresql采用类似MIT的许可协议,允许开发人员做任何事情,包括在开源或闭源产品中商用,而MysqL的客户端遵循GPL许可协议,所以开发人员必须向Oracle付费或者将自己的应用程序开源;
- 更好的数据一致性: Postgresql会在数据插入和更新之前进行严格的验证,确保数据合法才会进行相应的操作,但在MysqL中,开发人员需要将服务器设定为严格sql模式才能达到同样的目的,否则可能会产生不规范数据;
- 服务器扩展:MysqL提供了插件程序API,支持C/C++或任何兼容C的语言,而且从5.7.3版本开始支持全文搜索,Postgresql有一个类似的系统但支持的语言更多,包括C/C++、Java、.Net、Perl、 Python、Ruby、Tcl、ODBC等,它甚至可以在单独的进程中运行用户提供的代码;除了所有关系型数据库都包含的有关数据库、表和列的一般信息外,Postgresql系统目录中还可以包含关于数据类型、函数和存取方法的信息,开发人员可以通过修改这些信息实现扩展。
原文:http://blog.itpub.net/31545814/viewspace-2645393/
作者简介
Jan Karremans,EnterpriseDB的高级销售工程师。
译者简介
KevinZhan,深圳联友科技SA,目前负责公司部分核心系统应用及DB维护,开源软件的粉丝
Qinghui.Guo Lenovo DBA 负责公司Cloud DB的维护,痴迷于开源架构解决方案,是PG忠实粉丝。
早在20世纪80年代,得益于像Linux这样的平台,技术世界经历了第一波开源软件浪潮。开源软件在充满活力的开发人员和用户社区的帮助下不断完善和调整,受到了程序员、业余爱好者和其他开源技术支持者的热捧。然而,公司很难想象开源解决方案能够为其执行关键任务的应用程序提供动力。他们对于是否能信任某人在地下室开发的软件深表怀疑。
“一个思维正常的人怎么可能会想象到从强大而昂贵的操作系统迁移到免费且由社区驱动的解决方案呢?”
这些轻率的言论曾不可避免地被认为是误导,因为未来的几年中Linux得到了广泛采用。Linux系统就是这种工具,使各机构可以轻松的更换组件,满足其个性化的需求,而不需要依赖昂贵的一体化解决方案。
将Oracle迁移到云端?学习5个关键决策,以确保成功。
下一波开源软件已经开始影响关键的应用程序组件,如关系型数据库。随着IT部门开始用实惠、灵活的开源解决方案更换昂贵的传统软件(如Oracle®),曾经在Linux上发生的许多事情,正发生在Postgres上:
我们用了30年Oracle了,为什么要转向开源平台呢?
各个机构再一次意识到像Postgres这样的开源数据库解决方案的优势,他拥有扩展性,灵活性,支持,而完全不依赖于任何一家公司和开发人员。就像之前的linux一样,Postgres已经而且会继续由专门的用户设计解决日常业务问题,并且这些用户选择把他们的解决方案回馈到社区。Postgres社区致力于为日常关系型数据库用户开发最好的工具,而不是像大型开发商Oracle那样,选择有利可图的产品或者支持小众但利润丰厚的市场。这直接道出了我决定从Oracle切换到Postgres的经历。多年来,我作为Oracle DBA深深地参与了Oracle社区。但随着时间的推移, Oracle开始实现产品组合的多元化,其重点开始从核心数据库技术转向更广泛的应用程序开发和基础架构解决方案。这导致了Oracle业务模式的变化,削弱了预算有限的小客户所青睐的数据库产品,转而大力支持能满足大型企业的解决方案。随着与Oracle开展业务变得越来越困难(并且成本越来越高),有必要找一个备受瞩目的关系型数据库解决方案。
Postgres成为最佳选择,因为像曾经的Linux一样,它是一个开源工具,可以执行特定任务而不会增加复杂性。它的设计易于使用和实施,关注点严格在数据库上,而不必浪费资源添加“功能”去管理其他IT环境。这是客户从Oracle迁移到Postgres时首先注意到的事情之一:Postgres可以轻松在几分钟内完成许多与Oracle相同的功能,而不需要像Oracle那样要求人们花数小时的时间研究Oracle如何运行的复杂技术。
自从Postgres于20世纪80年代推出以来,开发人员已经致力于在该平台上创建扩展长达数十年的时间了。像Oracle这样的封闭式平台不存在这种社区支持,后者依靠自己的官方指示来确定软件的未来。通过Postgres,如果您想使用关系型数据库引擎解决问题,那么很可能有人已经解决了这个问题 - 并记录了解决方案或构建了扩展。
那些似乎对迁移到Postgres犹豫不决的组织充满了对跳入新环境的恐惧:为什么在依赖甲骨文这样的供应商几十年之后改变方向呢?但随着甲骨文继续变得越来越难以开展业务,显然Postgres提供了更灵活,更强大且价格合理的替代方案。有了像EDB Postgres™这样被构建成可以满足大大小小机构的安全性和稳定性需求的选择,关系型数据库将由一个不同的“O”(不再只是Oracle)主导:开放(Open)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。