使用開(kāi)源操作系統(tǒng)及數(shù)據(jù)庫(kù)系統(tǒng)的可行性分析
名詞注釋:
操作系統(tǒng)OS:
操作系統(tǒng)(Operating System),目前主流的商業(yè)操作系統(tǒng)有Windows系列和Unix系列,Windows系統(tǒng)的客戶端版和服務(wù)器版價(jià)格相差較大,比如客戶端Windows Xp只需幾百到上千元,但Windows Server 2003/2008則需要幾萬(wàn)到幾十萬(wàn)元。開(kāi)源的操作系統(tǒng)有FreeBSD、Linux,雖然免費(fèi),但由于易用性、慣性、軟件兼容性等問(wèn)題,目前還無(wú)法在桌面上與Windows竟?fàn)?,?yīng)用主要集中在服務(wù)器。
數(shù)據(jù)庫(kù)系統(tǒng)DB:
數(shù)據(jù)庫(kù)系統(tǒng)(Database),常見(jiàn)商業(yè)db有MsSQL、Oracle、Sybase、DB2等,但使用代價(jià)高昂,大多根據(jù)CPU及并發(fā)用戶數(shù)收許可費(fèi),少則幾萬(wàn),多則幾百萬(wàn)。除此之外則是主流開(kāi)源數(shù)據(jù)庫(kù)系統(tǒng),如PostgreSQL、MySQL、Firebird等,這些開(kāi)源db也有很成熟的應(yīng)用,在某些領(lǐng)域并不輸于商業(yè)db,開(kāi)源不等于低端。
背景:
你的單位是否接過(guò)Microsoft、Oracle、Borland公司的版權(quán)電話?是否收到過(guò)律師函?是否因此而被迫買過(guò)某軟件?探討這個(gè)問(wèn)題時(shí),一個(gè)繞不開(kāi)的話題就是版權(quán)和許可費(fèi)?,F(xiàn)在知識(shí)產(chǎn)權(quán)保護(hù)越來(lái)越嚴(yán),你現(xiàn)在沒(méi)有收到律師函不代表明天、明年它不來(lái),是早做準(zhǔn)備還是到時(shí)再說(shuō)。
在軟件項(xiàng)目管理中有一個(gè)規(guī)律是:越早處理花費(fèi)越小,在軟件發(fā)布時(shí)發(fā)現(xiàn)錯(cuò)誤,修改錯(cuò)誤的花費(fèi)用是需求分析時(shí)的50到100倍,在項(xiàng)目運(yùn)行兩年后被迫遷移os和db所花費(fèi)用絕對(duì)超過(guò)項(xiàng)目啟動(dòng)前選擇合適os和db和百倍,也許大到購(gòu)買商業(yè)系統(tǒng)花費(fèi)的數(shù)倍,這時(shí)就沒(méi)有遷移的必要了。
選擇開(kāi)源db和os的必要性
一.顯見(jiàn)的必要性
數(shù)據(jù)庫(kù)是業(yè)務(wù)系統(tǒng)的核心,負(fù)責(zé)數(shù)據(jù)的存貯,在項(xiàng)目規(guī)劃時(shí)除了開(kāi)發(fā)工具、操作系統(tǒng)平臺(tái)外,最重要的就是數(shù)據(jù)庫(kù)的選型,但由于D版問(wèn)題隱藏了成本,很多集成商或客戶都直接選擇價(jià)格最貴、功能最全的企業(yè)版本,而不管項(xiàng)目的實(shí)際需求(也許實(shí)際業(yè)務(wù)每天只有10M不到的數(shù)據(jù)),按真正的成本計(jì)算,此db的價(jià)格可能會(huì)超過(guò)百萬(wàn),遠(yuǎn)遠(yuǎn)超過(guò)整個(gè)集成系統(tǒng)標(biāo)的的N倍。
數(shù)據(jù)庫(kù)系統(tǒng)一般都按CPU和并發(fā)用戶數(shù)收費(fèi),MsSQL價(jià)格要比Oracle低些,標(biāo)準(zhǔn)版本比企業(yè)版本要便宜一點(diǎn),DB2和SyBase的價(jià)格不太清楚,下面鏈接是Ms提供的與Oracle10g的價(jià)格對(duì)比:http://www.microsoft.com/china/sql/prodinfo/compare/oracle/pricecomparison.mspx
另外有些附加功能是另外收費(fèi)的,如壓縮、加密功能等。除了數(shù)據(jù)庫(kù)的價(jià)格,如果選用商業(yè)服務(wù)器操作系統(tǒng)也是很大的開(kāi)支,下面是Windows Server 2008的報(bào)價(jià):
Windows Server 2008 標(biāo)準(zhǔn)版:999美元(含5個(gè)客戶端訪問(wèn)許可)
Windows Server 2008 企業(yè)版:3999美元(含25個(gè)客戶端訪問(wèn)許可)
Windows Server 2008 數(shù)據(jù)中心版:2999美元 / CPU
一般規(guī)模公司的服務(wù)器可能有5到10臺(tái),中等規(guī)模的企業(yè)服務(wù)器在20臺(tái)以上也很正常。有時(shí)為了維護(hù)方便,很多單位對(duì)每個(gè)業(yè)務(wù)單獨(dú)安裝在物理機(jī)器上,自然需要多套o(hù)s和db,乘上以上的單位價(jià)格就知道總共花費(fèi)了。
二.預(yù)見(jiàn)的必要性
雖然現(xiàn)在使用盜版數(shù)據(jù)庫(kù)和操作系統(tǒng)隱藏了真實(shí)成本,但環(huán)境是不斷變化的,隨著版權(quán)保護(hù)的漸行,打擊力度加大,不僅會(huì)影響新建系統(tǒng)的db/os選型,而對(duì)舊系統(tǒng)也有影響,經(jīng)常會(huì)出現(xiàn)先使用再購(gòu)買的情況。
舊系統(tǒng)有時(shí)會(huì)有升級(jí)需求,升級(jí)OS和DB需要不菲的許可費(fèi)。
三.隱見(jiàn)的必要性
對(duì)項(xiàng)目使用開(kāi)源os和db不論對(duì)開(kāi)發(fā)方自身還是客戶都是很有必要的,有的客戶對(duì)此并不明白,認(rèn)為項(xiàng)目標(biāo)的中包括OS和DB,實(shí)際上卻需要自己購(gòu)買,本著對(duì)客戶負(fù)責(zé)和自身發(fā)展的觀點(diǎn),使用開(kāi)源操作系統(tǒng)和數(shù)據(jù)庫(kù)系統(tǒng)是很有必要的。
選擇開(kāi)源db和開(kāi)源操作系統(tǒng)的可能性
一.技術(shù)可行性
操作系統(tǒng):只是使用的習(xí)慣性問(wèn)題,雖然FreeBSD/Linux推薦命令行方式,但如果不熟悉的話,可以安裝X-Window界面降低適應(yīng)曲線,并且作為服務(wù)器OS,安裝配置完成后,人工的干預(yù)率是比較低的,完全不是問(wèn)題。
數(shù)據(jù)庫(kù)系統(tǒng):與商業(yè)db相比,同是關(guān)系型數(shù)據(jù)庫(kù),理論是一致的,在SQL語(yǔ)句是只有少許差別,技術(shù)上沒(méi)有問(wèn)題,從以下幾點(diǎn)說(shuō)明:
1. 主流開(kāi)源db完全支持所有企業(yè)特性,包括事務(wù)、熱備份、故障點(diǎn)還原、復(fù)制、集群等,支持企業(yè)級(jí)應(yīng)用。
2. 支持問(wèn)題,有不少人認(rèn)為開(kāi)源db出問(wèn)題后沒(méi)人支持,但我認(rèn)為這并不是大問(wèn)題,當(dāng)然如果你認(rèn)為你的系統(tǒng)特別關(guān)鍵、特別重要的除外??梢曰仡^想想,這么多年參與大大小小的開(kāi)發(fā)和集成項(xiàng)目加起來(lái)可能有十幾,使用的數(shù)據(jù)庫(kù)集中在Oracle和MsSQL,有時(shí)也出現(xiàn)過(guò)問(wèn)題,但基本不請(qǐng)?jiān)瓘S工程師來(lái)解決,因?yàn)榇鷥r(jià)實(shí)在太高,簡(jiǎn)單問(wèn)題自己搞定,搞不定的系統(tǒng)注意勤備份,大不了丟失半天的工作也可以承受。以現(xiàn)在的眼光來(lái)看,這些服務(wù)器都可改為開(kāi)源數(shù)據(jù)庫(kù)。
二.市場(chǎng)可行性
在集成項(xiàng)目中,客戶可能并不關(guān)心你使用什么db,只要好用即可,但你說(shuō)要他再出10萬(wàn)元買一套SQL Server時(shí)估計(jì)馬上就火了。根據(jù)客戶的業(yè)務(wù)狀況推薦相應(yīng)的OS和DB(開(kāi)源的或商業(yè)的)是一個(gè)比較好的選擇。
開(kāi)源數(shù)據(jù)庫(kù),只要能在技術(shù)和安全上給予保證,講明利害關(guān)系,客戶應(yīng)該是接受的。雖然D版數(shù)據(jù)庫(kù)也是免費(fèi),但畢竟是不合法的,也有悖于道德規(guī)范,還有就是存在一個(gè)非常巨大的潛在風(fēng)險(xiǎn),萬(wàn)一某天Microsoft或Oracle追上門來(lái)可就慘了,特別是有些規(guī)模的企業(yè)更是受不了這個(gè),你是把業(yè)務(wù)系統(tǒng)停掉算了,還是認(rèn)購(gòu)認(rèn)罰,但這時(shí)的支出絕對(duì)不是小數(shù)目。
開(kāi)源操作系統(tǒng)/db與我公司開(kāi)發(fā)路線的配合
我公司的開(kāi)發(fā)主要走M(jìn)icrosoft路線,如果客戶沒(méi)有特殊要求一般是Windows Server、VS.net和Ms SQL Server的經(jīng)典組合,應(yīng)用服務(wù)器當(dāng)然是IIS。目前dotNet的應(yīng)用服務(wù)器只能在IIS上部署,雖然在Linux上有Mono的實(shí)現(xiàn),但在生產(chǎn)上使用還有些風(fēng)險(xiǎn)。更換開(kāi)發(fā)路線代價(jià)是巨大的,也沒(méi)有必要,但更換數(shù)據(jù)庫(kù)服務(wù)器卻是可行的。
數(shù)據(jù)庫(kù)更換為PostgreSQL,此數(shù)據(jù)庫(kù)原生的開(kāi)發(fā)一直是在類Unix上,只到8.x版才移植到Windwos平臺(tái),在類Unix上運(yùn)行要好過(guò)在Windows上運(yùn)行,并且一些第三方的數(shù)據(jù)庫(kù)工具只支持FreeBSD/Linux,因此如果能配合FreeBSD/Linux操作系統(tǒng)使用,也會(huì)節(jié)約一大筆操作系統(tǒng)軟件費(fèi)用。
如果使用開(kāi)源平臺(tái),我們則根據(jù)項(xiàng)目的具體情況,服務(wù)器軟件可以做以下配置來(lái)適應(yīng)我們用dotNet開(kāi)發(fā)的系統(tǒng):
1. 如果系統(tǒng)有兩個(gè)服務(wù)器,則數(shù)據(jù)庫(kù)服務(wù)器用FreeBSD + PostgreSQL,應(yīng)用服務(wù)器保留Windows + IIS + dotNet。
2. 如果只有一臺(tái)服務(wù)器,但如果有后續(xù)有項(xiàng)目,則考慮增購(gòu)一臺(tái)服務(wù)器,到時(shí)多個(gè)項(xiàng)目的數(shù)據(jù)庫(kù)服務(wù)器集中在一臺(tái)FreeBSD + PostgreSQL上,應(yīng)用服務(wù)器集中在Windows + IIS上。
3. 如果只有一臺(tái)服務(wù)器,同時(shí)需要運(yùn)行數(shù)據(jù)庫(kù)服務(wù)器和應(yīng)用服務(wù)器,并且不考慮其他因素,則可使用Windows + IIS + dotNet + PostgreSQL。PostgreSQL在Windows平臺(tái)上仍是一個(gè)很好的數(shù)據(jù)庫(kù)系統(tǒng)。
從開(kāi)發(fā)的方便性上講,dotNet可以非常容易地配合PostgreSQL,程序員可以很容易地轉(zhuǎn)到對(duì)PostgreSQL開(kāi)發(fā),因?yàn)椋?/P>
1. 有開(kāi)源項(xiàng)目維護(hù)PostgreSQL的Ado.net的接口實(shí)現(xiàn),調(diào)用方式與MsSQL、Oracle并無(wú)多少區(qū)別,程序員只需了解極少的非標(biāo)準(zhǔn)SQL即可。
2. 我公司自行維護(hù)的數(shù)據(jù)庫(kù)組件已集成了對(duì)PostgreSQL的訪問(wèn),我們以前開(kāi)發(fā)的數(shù)據(jù)庫(kù)系統(tǒng)都是通過(guò)此組件訪問(wèn)MsSQL,此組件已隔離了不同數(shù)據(jù)庫(kù)的區(qū)別,因此系統(tǒng)都可以支持多數(shù)據(jù)庫(kù)。
開(kāi)源平臺(tái)的選型
開(kāi)源操作系統(tǒng)和數(shù)據(jù)庫(kù)系統(tǒng)有較多選擇,各有優(yōu)、缺點(diǎn)。在這個(gè)問(wèn)題并不是說(shuō)要固定在某個(gè)選擇上,我認(rèn)為應(yīng)有個(gè)基本的選擇,但根據(jù)具體項(xiàng)目的實(shí)際情況選擇最合適的。就個(gè)人來(lái)說(shuō)我比較推薦FreeBSD + PostgreSQL。
一. 數(shù)據(jù)庫(kù)系統(tǒng)
目前常用的開(kāi)源數(shù)據(jù)庫(kù)系統(tǒng)有PostgreSQL、MySQL、Firebird,下面做簡(jiǎn)單介紹:
1. MySQL,最新版本是5.4,目前屬于Oracle公司,采用雙重許可證。這也許是國(guó)內(nèi)開(kāi)源數(shù)據(jù)庫(kù)中裝機(jī)量最大的,在Web應(yīng)用上非常成功。數(shù)據(jù)庫(kù)存貯引擎是可選的,各個(gè)引擎有不同的特點(diǎn):
MyISAM引擎:不支持事務(wù)操作,無(wú)法支持多語(yǔ)句的原子操作,讀寫操作非??欤m用于網(wǎng)站論壇類似的業(yè)務(wù),對(duì)偶爾的信息丟失不敏感。
InnoDB,引擎:支持事務(wù),這種運(yùn)行方式和其他關(guān)系數(shù)據(jù)庫(kù)差不多,但在此引擎下與PostgreSQL相比沒(méi)有優(yōu)勢(shì)。
2. Firebird, 是在Borland公司Interbase 6基礎(chǔ)上發(fā)布的開(kāi)源版本,很小巧(只有5M左右)但功能強(qiáng)大,有關(guān)系數(shù)據(jù)庫(kù)的所有特性,最新版本是2.12,但好像更新有些慢。
3. PostgreSQL,學(xué)院派的代表,出生于加州大學(xué)Berkeley分校,采用BSD協(xié)議發(fā)行,開(kāi)始于1986年,目前最近版本是8.37。它歷史悠久,功能很強(qiáng)大,號(hào)稱最先進(jìn)的數(shù)據(jù)庫(kù)。支持目前多種主流操作系統(tǒng)平臺(tái)。PostgreSQL功能及歷史請(qǐng)參考網(wǎng)絡(luò)資源:http://www.freebsdchina.org/forum/viewtopic.php?t=2896
二.操作系統(tǒng)
為了發(fā)揮PostgreSQL的性能,選一款類Unix操作系統(tǒng)是必須的,在開(kāi)源操作系統(tǒng)上,主要有BSD系列和Linux系列,BSD系統(tǒng)中的代表是FreeBSD,而Linux上則百花齊放,兩者相比,F(xiàn)reeBSD是個(gè)較緊密的組織,代碼控制較嚴(yán)格,更穩(wěn)定;Linux上則分支眾多,有全免費(fèi)的也是收服務(wù)費(fèi)的。
FreeBSD的簡(jiǎn)單歷史:
1. 1969年AT&T貝爾實(shí)驗(yàn)室開(kāi)發(fā)第一個(gè)Unix版本并且免費(fèi)分發(fā)代碼。
2. 在70年代末,加州大學(xué)Berkeley分校對(duì)Unix進(jìn)行了較大修改,增加了很多先進(jìn)的功能,形成了Unix的BSD分支,叫BSD Unix,但后來(lái)Unix被注冊(cè),BSD協(xié)議的Unix不允許再叫Unix了。
3. 在90年代初BSD操作系統(tǒng)分裂了三個(gè)著名的操作系統(tǒng),F(xiàn)reeBSD是其中的一個(gè),1993年FreeBSD發(fā)布了1.0版本,由于版權(quán)官司,現(xiàn)在FreeBSD已不包括任何原Unix代碼。
4. 目前FreeBSD的最新版本是7.2。
FreeBSD詳細(xì)歷史參考:http://1001night.blogbus.com/logs/2018269.html
FreeBSD與Linux的比較參考:http://www.freebsdchina.org/forum/viewtopic.php?t=1860
【編輯推薦】