在我负责管理一家技术咨询公司的时候,我听到了一些不使用MySQL的理由。虽然很多理由都是出于误解的,但是的确存在着一部分很充分的不使用MySQL的理由。当然,现实的情况会根据环境有所不同,但是在每个情况下,我觉得拒绝任何数据库技术应该基于合理的理由,而不是根据某些疲惫不堪的数据库管理员(DBA)的意见。为了达到这样的目的,我在这篇文章中列出了八条不使用MySQL的理由。
首先,不使用某种技术的理由和使用这个技术的理由在本质上不同。常常,反对某些东西的理由会更加让人注意。我们可能需要几条理由才会真正的使用这个技术,但是只要一个理由就会让我们止步。软件的选择就是这样的决定,仅有一个理由是决不足够促使我们做出肯定的决定,但是一个充分的负面理由会否定很多积极的因素。
虽然有一长串关系数据库管理系统(RDBMS)可以供我们选择,但是我将对比限制在几个最常用的产品上。虽然全面的对比很少,还是存在着很多技术上的比较。在这里,我们只关心“正规”理由。
MySQL使用GPL
最重要的理由优先。在这里并不适合GNU General Public License,并且也不应该是数据库技术的选择。很明显,GPL许可证对很多环境是积极的,但是对于其他一些环境,GPL的软件是没有希望的。在这些情况下,连PostgreSQL的BSD许可证仍然太“开放”,那么一个商业的许可证会更加适合。
MySQL不使用GPL
在一些情况下,MySQL是收费的,这样GPL可能不能很好的服务于这些情况。如果你想要将这个数据库的许可证和你自己的项目一起销售,你的项目一定要采用相似的许可证,或者你需要购买商业许可证。如果这个因素改变了你的软件的销售方式,你需要处理由于必须支持MySQL的多个版本或者配置而引起的额外的负担(这会增加终端用户的成本),或者存在由于MySQL的使用造成的不合理的影响。在这些情况下,一些软件分销商可能倾向于采用其他的产品,比如BSD许可证的PostgreSQL。
和现有环境的集成
我知道大型的IT公司会有Oracle和Sybase的单位软件使用权(Site License),以及很多MS-SQL Server的专有许可证(specific license)。在这些公司中,这种MS-SQL的实例主要是各部门的无知职员造成的,他们不知道他们已经花钱购买了其他数据库的site license。在这种环境下,再加入MySQL(或者其他的数据库)是不明智的想法,如果DBA已经有太多环境需要处理。在存在已有数据库的情况下,如果维护的是一个通用的平台,那么很明显维护的负担会降低。进一步,如果这个公司已经有了使用某个私有系统的许可证,那么使用MySQL的主要理由就不存在了。
产品的成熟度
通过比较,在2009年Oracle将庆祝它的第一个产品发布了30周年,那时MySQL第一个产品的发布时间还不到Oracle的一半。单就自身而言,Microsoft SQL Server仅仅比MySQL早了几年,但是它的第一次发布的产品是基于Sybase的,该产品的比SQL Server早了6年。至于其他著名的开源数据库,在2009年PostgreSQL距离第一次发布已经20年。虽然MySQL并不是市场上最新的数据库,但是还有很多更老、更稳定的可选产品——并且对很多人来说,这个理由已经足够了。公平的讲,以我的观点这个理由并不是反对使用MySQL的特别充分的理由,但是同时,我被逼着告诉一位将为关键任务的应用选择平台的保守IT经理基于这个理由作决定将是错误的。