無標題文檔

选择 PostgreSQL, MySQL, Oracle 数据库我之见

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

由于本人只是使用过 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

有关网站集群架构的一点点思考

我目前所在的公司打算重新部署服务器集群架构。对于此,作为名项目开发人员本身对于 Linux 有点了解,想谈谈我的看法。

首先参看下面的网络和服务器架构图:

https://friable.rocks/_/2007_10_24/1193210104.jpg

基本上此集群的架构可以分为三层:网络链路层、应用服务层和数据存储层。然后大体上再安排两台服务器分别作为数据备份服务器和监控服务器。

网络链路层

网络链路层主要分配请求的负载平衡。前端通过一个防火墙和交换机以后,再交由 LVS 处理。然后 LVS 决定相应的应用服务器处理请求并返回。

此端我部门里的某一成员计划采用脚本程序控制。但个人认为对于此我想一来是效率不高,二来的确对于高负载的要求来说,稳定性还是有待测试的。所以我们听从了我们的管理员的看法,采用网络层的动态分配。

应用服务层

应用服务器主要用作存放各种应用服务器,比如 Web 服务器、搜索服务器和文件服务器。Web 服务器可能要根据具体的流量来确定具体的服务器规模。

大体上按照服务器的性质来分, Web 服务器和搜索服务器对于 CPU 的要求是比较高的。而文件服务器则偏向于磁盘的吞吐性能。

数据存储层

数据存储层在这里我理解为数据库集群。按照现有的项目规划数据库的性能要求是当前的服务器集群中最高的,所以个人认为这块是重点。

其他

相对的后期扩展性问题

这点我们也已经意识到了。后期如果对于数据更新频率不是很高的应用,可以在各层之间中加入若干台缓存服务器,以提高响应速度并缓解应用服务器的压力。

预算问题

预算和现实总是有些差距的。此规模的服务器集群主要的预算基本上都应该在数据库服务器上面了。在不降低性能的前提下,可以适当的缩减服务器的规模和数量。

但是对于长期的项目规划来看,任何的付出都会获得一定的回报的。对于此,我想我的态度是乐观的。

Windows Server 2008 真实写真

上个星期从 wiLdGoose 兄弟那里得知,他已经开始用上了 Windows Server 2008。而我本人说实话对于 M$ 的系统并不是非常的「感冒」,一来是用了 XP 那么多年也顺手了(XP 对于现在的硬件来说也适合了),二来是因为我是一个 Linux 用户。

wiLdGoose 兄弟他本机的系统截图可以得知,Windows Server 2008 相对于以往的 M$ 服务器操作系统(比如 Windows Server 2003)从界面上有一个非常明显的改进(说实话我不喜欢 Vista 风格的图标)。

https://friable.rocks/_/2007_11_06/1194347957.png

刚安装好的界面也是非常的清爽,习惯了操作 Windows 的弟兄们应该也能很容易的上手。我还记得「当年」 XP 默认安装好的界面就只有一个「回收站」的图标,这着实让人大跌了一下眼镜。

https://friable.rocks/_/2007_11_06/1194347978.png

开始菜单还是那个开始菜单,丝毫没有改变。

https://friable.rocks/_/2007_11_06/1194347997.png

资源管理器的样式做了一个小的调整。底部可以显示当前选中项目的属性(类似于增强型的状态栏?),而左上角的 favourite links 则可以记录经常访问的路径。这点我个人感觉非常的人性化。

https://friable.rocks/_/2007_11_06/1194348015.png

还是增强型的任务管理器。可以说这个软件从 Windows 2000 开始就一直保持了这样的风格。不过作为一个服务器操作系统,我想以后一个名叫 Resource Monitor 的程序要和 *ix 系统的 top 一样,经常的开着了。

https://friable.rocks/_/2007_11_06/1194348058.png

控制面板方面 M$ 似乎从 XP 以后就一直没有改进过了。不过习惯此操作的用户可以非常顺手的操作。再次声明下本人并不十分喜欢 Vista 风格的图标。

https://friable.rocks/_/2007_11_06/1194348077.png

服务器操作系统的网络功能直接影响着它的应用价值。Windows Server 2008 在此方面有了一个明显的改进,图形化的配置界面我想新手也可以非常的上手。总而言之,M$ 的系统还是非常的傻瓜的。

https://friable.rocks/_/2007_11_06/1194348091.png

应用程序崩溃在 M$ 的系统中是非常的常见的。看来 M$ 连应用程序的崩溃提示框也做了些许的改进(怀念当年 Windows 98 的蓝屏死机和「非法操作」)。

总的来说 Windows Server 2008 从界面上并没有多大的改变。微软声称此操作系统集成了众多「先进的功能」,而我本人并没有实际的应用过,所以只能从界面方面一瞥。

至于该不该升级,那么就看你个人的喜好的。而我本人的意见就相对的保守一些,我不会使用那些并不是很成熟的产品,尤其是操作系统。

相关的资料 说明,Windows Server 2008 的硬件要求和 Vista 是差不多的(那么我这个时候在想,此时的 Vista 的境地将是非常的尴尬的):

处理器:最低1.0GHz x86或1.4GHz x64,推荐 2.0GHz 或更快;安腾版则需要 Itanium 2。
内存:最低512MB,推荐2GB或更多。
内存最大容量支持:32位标准版4GB、企业版和数据中心版64GB;64位标准版32GB,其他版本2TB。
硬盘空间:最少10GB,推荐40GB或更多;内存大于 16GB 的系统需要更多空间用于页面、休眠和转存储文件。
光驱:DVD-ROM
显示器:SVGA 800×600分辨率或更高
键鼠:兼容设备

相关的详细资料可以到 cnbeta 的 Windows Server 专题页面微软的主页 去看看。

附:据说 PowerShell 是 Windows Server 2008 的一项非常重大的改进,对于习惯了命令行操作的我很欣喜能看见比 command.com/cmd.exe 更先进的控制台了。下面有一个视频,感兴趣的朋友可以看看(WMV 格式):

mms://wm.microsoft.com/ms/evnet/PowerShellDonJones_Snover_s_ch9.wmv

我的照片

嗨!我叫「明城」,八零后、码农、宁波佬,现居杭州。除了这里,同时也欢迎您关注我的 GitHubTwitterInstagram 等。

这个 Blog 原先的名字叫 Gracecode.com 、现在叫 「無標題文檔」 。 要知道作为码农取名是件很难的事情,所以不想在取名这事情上太费心思。

作为八零后,自认为还仅存点点可能不怎么被理解的幽默感,以及对平淡生活的追求和向往。 为了避免不必要的麻烦,声明本站所输出的内容以及观点仅代表个人,不代表自己所服务公司或组织的任何立场。

如果您想联系我,可以发我邮件 `echo bWluZ2NoZW5nQG91dGxvb2suY29tCg== | base64 -d`

分类

搜索

文章