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