PostgreSQL与MySQL的最佳开源数据库之争

前端之家收集整理的这篇文章主要介绍了PostgreSQL与MySQL的最佳开源数据库之争前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

转自:http://down.chinaz.com/server/201108/982_1.htm

[摘要]为企业选择一个适合的数据库,需要做一个相当长远的打算,因为如果日后改变选择,将付出非常艰难又昂贵的代价。所以必须第一次就做出正确的选择。

  为企业选择一个适合的数据库,需要做一个相当长远的打算,因为如果日后改变选择,将付出非常艰难又昂贵的代价。所以必须第一次就做出正确的选择。MysqL和Postgresql是两个最受欢迎的开源数据库,它们往往是数据库管理员准备进行新的部署时最终的两个候选。本文通过对这两个开源数据库的概述及对比,为您选择满足企业需求的数据库提供帮助。

  Postgresql

  Postgresql (发音为Post-gress-cue-ell)宣称自己是世界上最先进的开源数据库。Postgresql的狂热者认为它的性能跟Oracle不分上下,而且没有高成本的负担。Postgresql拥有着悠久的历史,可以追溯到1985年,由加州大学伯克利分校最早开发,是Ingres数据库的衍生。

  Postgresql是100%社区驱动的开源项目,由全球范围内千人以上的社区贡献者共同维护。Postgresql提供了一个完整功能的版本,而不像MysqL那样,提供多个不同的版本,如社区版、商业版及企业版。Postgresql的开源协议采用自由的BSD/MIT类型,这种开源协议允许任何人在保留版权声明的情况下使用、复制、修改或者分享代码

  可靠性是Postgresql最优先的事项。众所周知,Postgresql坚如磐石并且设计精密,能够支持事务处理和关键任务应用。Postgresql提供一流的文档服务,包括全面的免费在线手册,以及旧版本手册的存档。社区的支持非常出色,并且有独立厂商提供商业支持

  数据一致性和完整性也是Postgresql的高度优先事项。Postgresql是完全符合ACID原则(原子性、一致性、隔离性、持久性)的数据库。Postgresql数据库访问提供强大的安全控制,不仅能够利用好企业安全工具,如Kerberos和OpenSSL等,还可以根据自己的业务规则自定义核对方法,以确保数据的质量。数据库管理员最喜欢的功能是时间点恢复(point-in-time recovery 简称PITR)功能,它具有灵活性、高可用性特征,能够打造快速故障的热备份服务器,以及快照和恢复到特定时间点等。但这还不是全部。该项目提供了很多方法来管理Postgresql,使Postgresql具有高可用性、负载均衡和同步功能,因此你可以利用这些功能来满足特定需求。

  MysqL

  MysqL相对年轻,首次出现在1994年。MysqL自称是世界上最流行的开源数据库MysqL是LAMP中的M,LAMP软件包经常用于Web开发,该软件包还包括了Linux、Apache和Perl/PHP/Python。很多应用程序建立在LAMP组合的基础上,其中包括一些很著名的应用,如wordpress、Drupa、Zend和PHPBB等。

  最初MysqL被设计为快速的Web服务器后台,使用快速索引顺序访问方法(indexed sequential access method 简称ISAM),不符合ACID原则。MysqL初期已经支持一些辅助性存储引擎,并且现在可以通过InnoDB引擎履行ACID原则。MysqL支持其它存储引擎,提供了一些功能,如MEMORY存储引擎提供的临时表,EXAMPLE存储引擎提供的开发者实例,MyISAM引擎提供的快速只读数据库,再加上其他几个核心存储引擎以及若干第三方引擎。

  MysqL文档资源丰富,包括高质量的免费参考手册,许多相关书籍和网上的技术文章,并可以从Oracle和第三方供应商那里获得培训和支持

  近年来,MysqL经历了所有权变更和一系列戏剧性事件。它最初是由MysqL AB开发,MysqL AB于2008年以10亿美元的价格被Sun Microsystems公司收购。2010年Sun又被Oracle收购。Oracle提供多个版本:标准版、企业版、经典版、集群版、嵌入式版与社区版。其中有些是免费下载,也有需要付费的。核心代码使用GPL协议,不喜欢使用GPL协议的开发商和供应商可以使用商业许可证。

  目前对基于原始的MysqL代码数据库有更多的选择,因为几个关键的MysqL开发人员已经发布了MysqL的分支。Michael“Monty”Widenius是MysqL的创始人之一,开发了自己的MysqL分支,MariaDB,免费并采用GPL许可协议。Drizzle是MysqL的分支,由著名的MysqL开发人员Brian Aker开发,Drizzle进行了重大改写并改变核心观念,为多处理器、云技术、.NET应用程序和大量的并发操作进行优化。

  平台和工作负载

  以下是使用MysqL或者Postgresql具有代表性的网站:

  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分别执行不同的存储引擎。MysqL的MyISAM是迄今为止最快的引擎,因为它执行最少的数据完整性检查。MyISAM为繁忙的只读网站后台工作,但是任何读/写数据库都包含敏感数据将会成为灾难,因为MyISAM表将不可避免的损坏。MysqL对已损坏的MyISAM表有恢复工具,但对于敏感数据,InnoDB引擎是一个更好的选择,因为它符合ACID原则。

  相比之下,Postgresql是一个完全与独立存储引擎集成的数据库服务器。通过调整postgresql.conf的参数,并对查询和处理稍作调整,便可以提高性能

  MysqL和Postgresql都是可配置的,并可以为不同的任务调整以优化性能。新增功能支持扩展。

  人们通常认为MysqL比Postgresql更容易学习。其实关系数据库管理系统都是复杂的,规则较多,因此这两个数据库具有相似的学习曲线。

  符合标准

  Postgresql目标是符合sql标准(现行的标准是ANSI - sql:2008)。MysqL基本上符合sql标准,但其自身也扩展和支持sql功能。每种方式各有利弊。坚持标准对于数据库管理员数据库开发人员和应用程序开发者来说将会变得更容易,这意味着他们只需要学习一种标准,只需要使用和支持同一公共集合的功能和命令,并且这些代码是可移植的。这就节省了时间和精力,并从供应商的限制中得到解脱。

  支持使用非相容性定制的理由,包括自由迅速的推出有用的新特点,而不是等待通过标准过程。ANSI/ISO标准变化发展,因此符合标准也是一个不断变化的目标; 知名的RDBMSes,如微软sql Server、甲骨文和IBM的DB2只符合部分标准。大多数MysqL定制不是完全的变革,例如,单引号和双引号表现方式的差异,以及MysqL的转义字符表现方式的差异,这些似乎不会形成干扰或者造成潜在的错误MysqL支持多个sql模式,如ANSI,更增加的其复杂性。对传统sql标准更加符合,尤其是再严格的数据输入检查,以及其他各种严格的和宽松的数据检查模式。

  总结

  PostgresqlMysqL尽管有着不同的历史、引擎和工具,但它们在使用上并没有明显的区别。若选择Postgresql是因为它的可靠性和对数据保护的优势。而MysqL更加灵活,拥有为不同的工作负载量身定制的更多选择。通常,企业熟悉特定的软件要比了解不同数据库的差异更为重要,因此,如果企业已经在使用其中一个数据库,那就应该坚持下去。如果非得

  为一个新项目(包括网站的后台)选择数据库,Postgresql将是不错的选择,因为它的可靠性和数据完整性。

猜你在找的Postgre SQL相关文章