使用开源操作系统及数据库系统的可行性分析
说明:
鉴于目前情况,我认为在公司的开发和集成项目中有必要使用或部分使用开源平台,而不需要固定地使用D版Windows+SQLServer,因此花了一天时间写了这份可行性分析,请大家帮忙看看有什么错误或补充的,是否有必要提交给上层。说句过河拆桥的话:痛恨D版,希望国家加大打击力度。
在项目中使用开源操作系统和数据库系统的
可行性分析
名词注释:
OS:
操作系统(Operating System),目前主流的商业操作系统有Windows系列和Unix系列,Windows系统的客户端版和服务器版价格相差较大,比如客户端Windows Xp只需几百到上千元,但Windows Server 2003/2008则需要几万到几十万元。开源的操作系统有FreeBSD、Linux,虽然免费,但由于易用性、惯性、软件兼容性等问题,目前还无法在桌面上与Windows竟争,应用主要集中在服务器。
DB:
数据库系统(Database),常见商业db有MsSQL、Oracle、Sybase、DB2等,但使用代价高昂,大多根据CPU及并发用户数收许可费,少则几万,多则几百万。除此之外则是主流开源数据库系统,如PostgreSQL、MySQL、Firebird等,这些开源db也有很成熟的应用,在某些领域并不输于商业db,开源不等于低端。
背景:
你的单位是否接过Microsoft、Oracle、Borland公司的版权电话?是否收到过律师函?是否因此而被迫买过某软件?探讨这个问题时,一个绕不开的话题就是版权和许可费。现在知识产权保护越来越严,你现在没有收到律师函不代表明天、明年它不来,是早做准备还是到时再说。
在软件项目管理中有一个规律是:越早处理花费越小,在软件发布时发现错误,修改错误的花费用是需求分析时的50到100倍,在项目运行两年后被迫迁移os和db所花费用绝对超过项目启动前选择合适os和db和百倍,也许大到购买商业系统花费的数倍,这时就没有迁移的必要了。
选择开源db和os的必要性
一.显见的必要性
数据库是业务系统的核心,负责数据的存贮,在项目规划时除了开发工具、操作系统平台外,最重要的就是数据库的选型,但由于D版问题隐藏了成本,很多集成商或客户都直接选择价格最贵、功能最全的企业版本,而不管项目的实际需求(也许实际业务每天只有10M不到的数据),按真正的成本计算,此db的价格可能会超过百万,远远超过整个集成系统标的的N倍。
数据库系统一般都按CPU和并发用户数收费,MsSQL价格要比Oracle低些,标准版本比企业版本要便宜一点,DB2和SyBase的价格不太清楚,一般来说,价格都在几万到几十万、上百万不等,下面链接是Microsoft提供的MSSqlServer2000与Oracle10g的价格对比:http://www.microsoft.com/china/sql/prodinfo/compare/oracle/pricecomparison.mspx
另外有些附加功能是另外收费的,如压缩、加密功能等。除了数据库的价格,如果选用商业服务器操作系统也是很大的开支,下面是Windows Server 2008的报价:
Windows Server 2008 标准版:999美元(含5个客户端访问许可)
Windows Server 2008 企业版:3999美元(含25个客户端访问许可)
Windows Server 2008 数据中心版:2999美元 / CPU
一般规模公司的服务器可能有5到10台,中等规模的企业服务器在20台以上也很正常。有时为了维护方便,很多单位对每个业务单独安装在物理机器上,自然需要多套os和db,乘上以上的单位价格就知道总共花费了。
二.预见的必要性
虽然现在使用D版数据库和操作系统隐藏了真实成本,但环境是不断变化的,随着版权保护的渐行,打击力度加大,不仅会影响新建系统的db/os选型,而对旧系统也有影响,经常会出现先使用再购买的情况。
旧系统有时会有升级需求,升级OS和DB需要不菲的许可费。
三.隐见的必要性
对项目使用开源os和db不论对开发方自身还是客户都是很有必要的,有的客户对此并不明白,认为项目标的中包括OS和DB,实际上却需要自己购买,本着对客户负责和自身发展的观点,使用开源操作系统和数据库系统是很有必要的。
选择开源db和os的可能性
一.技术可行性
操作系统:只是使用的习惯性问题,虽然FreeBSD/Linux推荐命令行方式,但如果不熟悉的话,可以安装X-Window界面降低适应曲线,并且作为服务器OS,安装配置完成后,人工的干预率是比较低的,完全不是问题。
数据库系统:与商业db相比,同是关系型数据库,理论是一致的,在SQL语句是只有少许差别,技术上没有问题,从以下几点说明:
1. 主流开源db完全支持所有企业特性,包括事务、热备份、故障点还原、复制、集群等,支持企业级应用。
2. 支持问题,有不少人认为开源db出问题后没人支持,但我认为这并不是大问题,当然如果你认为你的系统特别关键、特别重要的除外。可以回头想想,这么多年参与大大小小的开发和集成项目加起来可能有十几,使用的数据库集中在Oracle和MsSQL,有时也出现过问题,但基本不请原厂工程师来解决,因为代价实在太高,简单问题自己搞定,搞不定的系统注意勤备份,大不了丢失半天的工作也可以承受。以现在的眼光来看,这些服务器都可改为开源数据库。
二.市场可行性
在集成项目中,客户可能并不关心你使用什么db,只要好用即可,但你说要他再出10万元买一套SQL Server时估计马上就火了。根据客户的业务状况推荐相应的OS和DB(开源的或商业的)是一个比较好的选择。
开源数据库,只要能在技术和安全上给予保证,讲明利害关系,客户应该是接受的。虽然D版数据库也是免费,但毕竟是不合法的,也有悖于道德规范,还有就是存在一个非常巨大的潜在风险,万一某天Microsoft或Oracle追上门来可就惨了,特别是有些规模的企业更是受不了这个,你是把业务系统停掉算了,还是认购认罚,但这时的支出绝对不是小数目。
三.维护的可行性
系统上线后免不了要进行维护,特别是数据库系统的维护。数据库的安全性的核心问题是磁盘Raid冗余保护,另外就是备份策略,恢复则不是日常工作。Raid和备份策略配备好后手工参与的工作量并不高,或者通过开发Windows平台上的第三方工具来实现数据库备份策略来降低维护难度。
对于命令行的FreeBSD/Linux和PostgreSQL来说,非专业人员维护的确存在一定困难,但维护操作并非一定需要命令行,FreeBSD/Linux和PostgreSQL都有图形操作接口,在图形操作界面上维护和微软平台上并无太大差别。
从另一方面上讲,软件使用方对软件知识的缺乏时,维护工作将更加依赖于软件开发商,因此软件开发商将更容易获得软件的维护合同。
开源os/db与我公司开发路线的配合
我公司的开发主要走Microsoft路线,如果客户没有特殊要求一般是Windows Server、VS.net和Ms SQL Server的经典组合,应用服务器当然是IIS。目前dotNet的应用服务器只能在IIS上部署,虽然在Linux上有Mono的实现,但在生产上使用还有些风险。更换开发路线代价是巨大的,也没有必要,但更换数据库服务器却是可行的。
数据库更换为PostgreSQL,此数据库原生的开发一直是在类Unix上,只到8.x版才移植到Windwos平台,在类Unix上运行要好过在Windows上运行,并且一些第三方的数据库工具只支持FreeBSD/Linux,因此如果能配合FreeBSD/Linux操作系统使用,也会节约一大笔操作系统软件费用。
如果使用开源平台,我们则根据项目的具体情况,服务器软件可以做以下配置来适应我们用dotNet开发的系统:
1. 如果系统有两个服务器,则数据库服务器用FreeBSD + PostgreSQL,应用服务器保留Windows + IIS + dotNet。
2. 如果只有一台服务器,但如果有后续有项目,则考虑增购一台服务器,到时多个项目的数据库服务器集中在一台FreeBSD + PostgreSQL上,应用服务器集中在Windows + IIS上。
3. 如果只有一台服务器,同时需要运行数据库服务器和应用服务器,并且不考虑其他因素,则可使用Windows + IIS + dotNet + PostgreSQL。PostgreSQL在Windows平台上仍是一个很好的数据库系统。
从开发的方便性上讲,dotNet可以非常容易地配合PostgreSQL,程序员可以很容易地转到对PostgreSQL开发,因为:
1. 有开源项目维护PostgreSQL的Ado.net的接口实现,调用方式与MsSQL、Oracle并无多少区别,程序员只需了解极少的非标准SQL即可。
2. 我公司自行维护的数据库组件已集成了对PostgreSQL的访问,我们以前开发的数据库系统都是通过此组件访问MsSQL,此组件已隔离了不同数据库的区别,因此系统都可以支持多数据库。
开源平台的选型
开源的的操作系统和数据库系统有较多选择,各有优、缺点。在这个问题并不是说要固定在某个选择上,我认为应有个基本的选择,但根据具体项目的实际情况选择最合适的。就个人来说我比较推荐FreeBSD + PostgreSQL。
一. 数据库系统
目前常用的开源数据库系统有PostgreSQL、MySQL、Firebird,下面做简单介绍:
1. MySQL,最新版本是5.4,目前属于Oracle公司,采用双重许可证。这也许是国内开源数据库中装机量最大的,在Web应用上非常成功。数据库存贮引擎是可选的,各个引擎有不同的特点:
MyISAM引擎:不支持事务操作,无法支持多语句的原子操作,读写操作非常快,适用于网站论坛类似的业务,对偶尔的信息丢失不敏感。
InnoDB,引擎:支持事务,这种运行方式和其他关系数据库差不多,但在此引擎下与PostgreSQL相比没有优势。
2. Firebird, 是在Borland公司Interbase 6基础上发布的开源版本,很小巧(只有5M左右)但功能强大,有关系数据库的所有特性,最新版本是2.12,但好像更新有些慢。
3. PostgreSQL,学院派的代表,出生于加州大学Berkeley分校,采用BSD协议发行,开始于1986年,目前最近版本是8.37。它历史悠久,功能很强大,号称最先进的数据库。支持目前多种主流操作系统平台。PostgreSQL功能及历史请参考网络资源:http://www.freebsdchina.org/forum/viewtopic.php?t=2896
二.操作系统
为了发挥PostgreSQL的性能,选一款Unix操作系统是必须的,在开源操作系统上,主要有BSD系列和Linux系列,BSD系统中的代表是FreeBSD,而Linux上则百花齐放,两者相比,FreeBSD是个完全的操作系统发布版本,有较紧密的组织,代码控制较严格,更稳定;Linux则指的是核心部分,在核心之上分支众多,有全免费的也是收服务费的。
FreeBSD的简单历史:
1. 1969年AT&T贝尔实验室开发第一个Unix版本并且免费分发代码。
2. 在70年代末,加州大学Berkeley分校对Unix进行了较大修改,增加了很多先进的功能,形成了Unix的BSD分支,叫BSD Unix。
3. Novell将Unix商标赠送给X/Open──一个由众多 Unix厂家组成的联盟,这样这个联盟内的所有成员均可使用Unix商标。从此之后,Unix不再是专有产品了。因为Berkeley不是组织成员,故BSD协议的Unix不允许再叫Unix了。
4. 在90年代初BSD操作系统分裂了三个著名的操作系统,FreeBSD是其中的一个,1993年FreeBSD发布了1.0版本,由于版权官司,现在FreeBSD已不包括任何原Unix代码。
5. 目前FreeBSD的最新版本是7.2。
FreeBSD详细历史参考:http://1001night.blogbus.com/logs/2018269.html
FreeBSD与Linux的比较参考:http://www.freebsdchina.org/forum/viewtopic.php?t=1860
结论
根据我公司技术实力、技术路线,在目前市场环境下,本着对客户负责、对公司有利的态度,使用或部分使用FreeBSD/Linux+PostgreSQL方案是可行的,对信息系统的未来可持续性发展也是有利的。