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