MySQL与PostgreSQL如何选择?
MySQL 与 PostgreSQL ⽐较,选哪个
为了弄明⽩PostgreSQL和MySQL的差别,我搜索了关键字:MySQL vs PostgreSQL,并看了第⼀页的⼏个⽂章。以下是简单总结:
MySQL与PostgreSQL的区别
MySQL是应⽤开发者创建出来的DBMS;⽽PostgreSQL是由数据库开发者创建出来的DBMS 。
换句话说,MySQL倾向于使⽤者的⾓度,回答的问题是 “你想解决的是什么问题”;⽽PostgreSQL倾向于理论⾓度,回答的问题是 “数据库应该如何来解决问题” 。
MySQL⼀般会将数据合法性验证交给客户;PostgreSQL在合法性难⽅⾯做得⽐较严格。⽐如MySQL⾥插⼊ “2012-02-30” 这个时间时,会成功,但结果会是 “0000-00-00”;PostgreSQL不允许插⼊此值。
通常,PostgreSQL 被认为特性丰富,⽽MySQL被认为速度更快。但这个观点基本是在 MySQL 4.x / PostgreSQL 7.x 的事情,现在情况已经变了,PostgreSQL 在9.x版本速度上有了很⼤的改进,⽽MySQL特性也在增加。
在架构上,MySQL分为两层:上层的SQL层和⼏个存储引擎(⽐如InnoDB,MyISAM)。PostgreSQL 只有⼀个存储引擎提供这两个功能。
这两个数据库系统都可以针对应⽤的情境被优化、定制,精确的说哪个性能更好很难。MySQL项⽬⼀开始焦点就在速度上,⽽PostgreSQL⼀开始焦点在特性和规范标准上。
选哪个?
可能是由于历史原因MySQL在开发者中更流⾏⼀些。⾄少我们上学时没听说过PostgreSQL,当时不是MS SQL Server就是MySQL,⽽MySQL是开源的。实事上PostgreSQL直到8.0才官⽅⽀持了Windows系统。
如果没有什么历史原因(⽐如系统已经基于MySQL多年了),或技术积累原因(同事中MySQL⾼⼿多),那么我觉得选择PostgreSQL不会有错。
有趣的是,我在Google上搜索 “switch postgresql to mysql” 时,结果中第⼀页全是 “Switch to PostgreSQL from MySQL”,第⼆页终于有个是from PostgreSQL to MySQL,不过只有它⼀个,⽽且原因不是说PostgreSQL不好,⽽是因为作者MySQL经验多些。
1.问题
如果打算为项⽬选择⼀款免费、开源的数据库,那么你可能会在MySQL与PostgreSQL之间犹豫不定。MySQL与PostgreSQL都是免费、开源、强⼤、且功能丰富的数据库。你主要的问题可能是:哪⼀个才是最好的开源数据库,MySQL还是PostgreSQL呢?该选择哪⼀个开源数据库呢?
在选择数据库时,你所做的是个长期的决策,因为后⾯如果再改变决定将是⾮常困难且代价⾼昂的。你希望⼀开始就选择正确。两个流⾏的开源数据库MySQL与PostgreSQL常常成为最后要选择的产品。对这两个开源数据库的⾼层次概览将会有助于你选择最适合⾃⼰需要的。
2、MySQL
MySQL相对来说⽐较年轻,⾸度出现在1994年。它声称⾃⼰是最流⾏的开源数据库。MySQL就是LAMP(⽤于Web开发的软件包,包括Linux、Apache及Perl/PHP/Python)中的M。构建在LAMP栈之上的⼤多数应⽤都会使⽤MySQL,包括那些知名的应⽤,如WordPress、Drupal、Zend及phpBB等。
⼀开始,MySQL的设计⽬标是成为⼀个快速的Web服务器后端,使⽤快速的索引序列访问⽅法(ISAM),不⽀持ACID。经过早期快速的发展之 后,MySQL开始⽀持更多的存储引擎,并通过InnoDB引擎实现了ACID。MySQL还⽀持其他存储引擎,提供了临时表的功能(使⽤MEMORY存 储引擎),通过MyISAM引擎实现了⾼速读的数据库,此外还有其他的核⼼存储引擎与第三⽅引擎。
MySQL的⽂档⾮常丰富,有很多质量不错的免费参考⼿册、图书与在线⽂档,还有来⾃于Oracle和第三⽅⼚商的培训与⽀持。
MySQL近⼏年经历了所有权的变更和⼀些颇具戏剧性的事件。它最初是由MySQL AB开发的,然后在2008年以10亿美⾦的价格卖给了Sun公司,Sun公司⼜在2010年被Oracle收购。Oracle⽀持MySQL的多个版 本:Standard、Enterprise、Classic、Cluster、Embedded与Community。其中有⼀些是免费下载的,另外⼀ 些则是收费的。其核⼼代码基于GPL许可,对于那些不想使⽤GPL许可的开发者与⼚商来说还有商业许可可供使⽤。
现在,基于最初的MySQL代码还有更多的数据库可供选择,因为⼏个核⼼的MySQL开发者已经发布了MySQL分⽀。最初的MySQL创建者之⼀ Michael “Monty” Widenius貌似后悔将MySQL卖给了Sun公司,于是⼜开发了他⾃⼰的MySQL分⽀MariaDB,它是免费的,基于GPL许可。知名的 MySQL开发者Brian Aker所创建的分⽀Drizzle对其进⾏了⼤量的改写,特别针对多CPU、云、⽹络应⽤与⾼并发进⾏了优化。
3.PostgreSQL
PostgreSQL标榜⾃⼰是世界上最先进的开源数据库。PostgreSQL的⼀些粉丝说它能与Oracle相媲美,⽽且没有那么昂贵的价格和傲慢的客服。它拥有很长的历史,最初是1985年在加利福尼亚⼤学伯
克利分校开发的,作为Ingres数据库的后继。
PostgreSQL是完全由社区驱动的开源项⽬,由全世界超过1000名贡献者所维护。它提供了单个完整功能的版本,⽽不像MySQL那样提供了 多个不同的社区版、商业版与企业版。PostgreSQL基于⾃由的BSD/MIT许可,组织可以使⽤、复制、修改和重新分发代码,只需要提供⼀个版权声 明即可。
可靠性是PostgreSQL的最⾼优先级。它以坚如磐⽯的品质和良好的⼯程化⽽闻名,⽀持⾼事务、任务关键型应⽤。PostgreSQL的⽂档⾮常精良,提供了⼤量免费的在线⼿册,还针对旧版本提供了归档的参考⼿册。PostgreSQL的社区⽀持是⾮常棒的,还有来⾃于独⽴⼚商的商业⽀持。
mysql下载的vs库放在那个文件里数据⼀致性与完整性也是PostgreSQL的⾼优先级特性。PostgreSQL是完全⽀持ACID特性的,它对于数据库访问提供了强⼤的安全性 保证,充分利⽤了企业安全⼯具,如Kerberos与OpenSSL等。你可以定义⾃⼰的检查,根据⾃⼰的业务规则确保数据质量。在众多的管理特性 中,point-in-time recovery(PITR)是⾮常棒的特性,这是个灵活的⾼可⽤特性,提供了诸如针对失败恢复创建热备份以及快照与恢复的能⼒。但这并不是 PostgreSQL的全部,项⽬还提供了⼏个⽅法来管理PostgreSQL以实现⾼可⽤、负载均衡与复制等,这样你就可以使⽤适合⾃⼰特定需求的功能 了。
4.平台
MySQL与PostgreSQL都出现在⼀些⾼流量的Web站点上:
MySQL:Slashdot、Twitter、Facebook与Wikipedia
PostgreSQL:Yahoo使⽤了⼀个修改的PostgreSQL数据库来处理每天数以亿计的事件,还有Reddit和Disqus
MySQL与PostgreSQL都能运⾏在多个操作系统上,如Linux、Unix、Mac OS X与Windows。他们都是开源、免费的,因此测试他们时的唯⼀代价就是你的时间与硬件。他们都很灵活且具有可伸缩性,可⽤在⼩型系统和⼤型分布式系统 上。MySQL在⼀个领域上要⽐PostgreSQL更进⼀步,那就是它的触⾓延伸到了嵌⼊式领域,这是通过libmysqld实现的。 PostgreSQL不⽀持嵌⼊式应⽤,依然坚守在传统的客户端/服务器架构上。
MySQL通常被认为是针对⽹站与应⽤的快速数据库后端,能够进⾏快速的读取和⼤量的查询操作,不过在复杂特性与数据完整性检查⽅⾯不太尽如⼈意。
PostgreSQL是针对事务型企业应⽤的严肃、功能完善的数据库,⽀持强ACID特性和很多数据完整性检查。他们⼆者都在某些任务上具有很快的速 度,MySQL不同存储引擎的⾏为有较⼤差别。MyISAM引擎是最快的,因为它只执⾏很少的数据完整性检查,适合于后端读操作较多的站点,不过对于包含 敏感数据的读/写数据库来说就是个灾难了,因为MyISAM表最终可能会损坏。MySQL提供了修复MySQL表的⼯具,不过对于敏感数据来说,⽀持 ACID特性的InnoDB则是个更好的选择。
与之相反,PostgreSQL则是个只有单⼀存储引擎的完全集成的数据库。你可以通过调整f⽂件的参数来改进性能,也可以调整查询与事务。PostgreSQL⽂档对于性能调优提供了⾮常详尽的介绍。
MySQL与PostgreSQL都是⾼可配置的,并且可以针对不同的任务进⾏相应的优化。他们都⽀持通过扩展来添加额外的功能。
⼀个常见的误解就是MySQL要⽐PostgreSQL更容易学习。关系数据库系统都是⾮常复杂的,这两个数据库的学习曲线其实是差不多的。
5.标准兼容性
PostgreSQL旨在实现SQL兼容性(当前标准是ANSI-SQL:2008)。MySQL则兼容⼤部分SQL,不过还有⾃⼰的扩展,可以⽀ 持NoSQL特性,这在参考⼿册中都有介绍。每种⽅式都有优缺点。兼容标准会让数据库管理员、数据库开发者与应⽤开发者更舒服⼀些,因为这意味着他们只需 学习⼀套标准、⼀套特性和命令即可。这会节省时间,提升效率,也不会被锁定在特定的⼚商上。
⽀持使⽤⾮标准的⾃定义功能的⼈们认为这样可以快速采⽤新的特性,⽽不必等待标准进程完成。ANSI/ISO标准在不断演化,因此标准兼容性也是个 变化的⽬标:知名的关系型数据库Microsoft SQL Server、Oracle与IBM DB2也只是部分兼容于标准。
6.结论
虽然有不同的历史、引擎与⼯具,不过并没有明确的参考能够表明这两个数据库哪⼀个能够适⽤于所有情况。很多组织喜欢使⽤PostgreSQL,因为 它的可靠性好,在保护数据⽅⾯很擅长,⽽且是个社区项⽬,不会陷⼊⼚商的牢笼之中。MySQL更加灵活,提供了更多选项来针对不同的任务进⾏裁剪。很多时 候,对于⼀个组织来说,对某个软件使⽤的熟练程度要⽐特性上的原因更重要。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论