最近公司的项目选择了一个全新的数据库系统作为开发平台,我也正在努力的适应在此数据库下的开发是使用。对于很多用户(包括我们程序员)都对于选择何种数据库往往一头雾水。而我以前也经历过此阶段,下面我想谈谈我的看法。

由于本人只是使用过 PostgreSQL, MySQL, Oracle 这三种数据库。这三种数据库也非常有代表性,下面的讨论我只针对这三种数据库而言。有关其他的数据库请大家自行推敲。

版权问题

MySQL 和 PostgreSQL 都是开放的数据库系统。MySQL 的使用协议比较的复杂,从简单的方面看,它是基于 GPL 协议的(为 MySQL 的用户可以得到 MySQLAB 的支持,并使用 MySQL 协议)。PostgreSQL 系统是完全基于 BSD 协议的,这这一点它比 MySQL 更加的「自由」。

GPL 协议要求用户必须公开你修改以后的代码。而 BSD 协议则可以自由的用在商业用途上,无需任何的限制。

而 Oracle 是完全一个商业的系统。它的使用完全是需要付费的,并且不能修改、拷贝其代码和程序甚至文档。

成本

成本相对版权而言。按照上述三种的数据库系统,如果按照费用的计算来讲。Oracle 的支出是最高的,MySQL 相对来说所付的费用稍微少一点。PostgreSQL 则是完全免费的。

支持

对于数据库的后期技术支持是非常重要的。Oracle 数据库有由于是商业产品,所以他的支持自然非常的周到。按照国内的情况,MySQL 和 PostgreSQL 的支持基本上是依靠网络和社区。

吞吐性能

从技术的角度上将,由于三种数据库的应用对象不一样,所体现的性能并不相同。Oracle 适合中大型的系统开发和维护,性能适合海量数据的存储。而 MySQL 则是适合中小型的系统快速的开发和维护,PostgreSQL 则标榜自己是「功能最全的开源数据库系统」,性能自然不俗。

而我从我个人的使用经验来说,打一个形象的比方:Oracle 好比卡车、MySQL 好比皮卡、而 PostgreSQL 好比是客车。

稳定性

对于稳定性能来说,这三种数据库都可以适应 7×24 小时的考验。相对性能来说,我的个人经验是 Oracle 的稳定性是最好的,MySQL 其次,而 PostgreSQL 次之(相对而言,这三种数据库的稳定性都是很优秀的)。

总结

说道这里,你可能对于这三种数据库还是难以抉择。我的个人意见就是,按照实际的项目的需求、规模和成本考虑出发。

Oracle 是大中型项目的首选,而它的支出比较高。相对经济的替换方案是 PostgreSQL(但它需要更多的人工支出)。

对于中小型的项目,MySQL 则完全是可以胜任的。Lamp 系统在开源界的性能是有目共睹的。

而对于程序的开发来说,Oracle 常和 Java(JSP)搭配,MySQL 则一般和 PHP 搭配,PostgreSQL 则可以和多种程序链接。

附:

一家之言,仅作参考之用。下面我摘一下来自 searchoracle.com 的一则经典的回答

PostgreSQL, MySQL, Oracle or other? ===

> QUESTION POSED ON: 26 April 2002

Which should I choose: PostgreSQL, MySQL, Oracle or other? The application is not Web-based, and the database contains 50 tables with the biggest table containing 18 million rows (6GB total). The engine should have:

good backup/restore to/from file service # ability to lock at row level # fast inserting, updating posts

> EXPERT RESPONSE

Which database version do you select? That's a tough one. It all depends on a lot of different factors. You've listed a few factors, but not all of them. The biggest one is price. How much can you afford? Oracle will cost much more. And MySQL is free as long as you follow the GPL. You state that you want the ability to lock at the row level. Oracle is one of the best at this, but MySQL with InnoDB is making progress. You also stat that you want fast inserts and updates. For that, I'd go with Oracle. A properly configured Oracle database will run really nicely.

Other factors to consider are the expected number of concurrent users, the expected data growth, and that application. Like I said, there are lots of factors to consider. In these cases, it's not a bad idea to hire a consultant to help in your determination so that your company doesn't waste time and money.

我该选择 PostgreSQL, MySQL, Oracle 还是其他?(注:时间为 2002 年 4 月 26 日)

我的项目不是一个 Web 项目,数据库大概有 50 个表最大的可能包含了一千八百万条数据(大概有 6G 的数据)。我该选择什么数据库呢? PostgreSQL、MySQL、Oracle 还是其他?所需的要求必须包含:

良好的备份/恢复系统 # 具有行锁定功能(lock at row level) # 具有良好的性能

专家回答:

到底您该选择哪个系统?这个问题非常的难以回答。这是居于不同的需求而定的。您只是列出了一小部分的要求,并没有全部列出您到底需要什么。最大的问题可能是成本的问题。您的预计支出是多少呢?Oracle 可能需要您更多支出。MySQL 是基于 GPL 协议的,所以它的支出相对少些。您需要有行级锁定功能(lock at row level),我想 Oracle 是最好的权责,但是 MySQL 包含了 InnoDB 以后也具有此良好的性能(译注:自 MySQL 3.2 以后已经具有此功能了)。再次,您需要有良好的性能。老实说,我更倾向于 Oracle。具有良好配置以后的 Oracle 性能会让人非常的满意。

还有其他的需求就是有多少的用户使用您的数据库,数据库的增长幅度,还有就是其上的应用。想我上面所说的,需要考虑的因素有很多。我并不能完全决定您到底使用哪个数据库,我想您或许需要一个顾问评审您具体的应用了以后才可能最终决定下来,这并不需要很多的时间和投入。

这三种数据库近年的趋势图

https://friable.rocks/_/2007_10_29/1193654980.png