使用開源操作系統及數據庫系統的可行性分析
名詞注釋:
操作系統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的價格不太清楚,下面鏈接是Ms提供的與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,乘上以上的單位價格就知道總共花費了。
二.預見的必要性
雖然現在使用盜版數據庫和操作系統隱藏了真實成本,但環境是不斷變化的,隨著版權保護的漸行,打擊力度加大,不僅會影響新建系統的db/os選型,而對舊系統也有影響,經常會出現先使用再購買的情況。
舊系統有時會有升級需求,升級OS和DB需要不菲的許可費。
三.隱見的必要性
對項目使用開源os和db不論對開發方自身還是客戶都是很有必要的,有的客戶對此并不明白,認為項目標的中包括OS和DB,實際上卻需要自己購買,本著對客戶負責和自身發展的觀點,使用開源操作系統和數據庫系統是很有必要的。
選擇開源db和開源操作系統的可能性
一.技術可行性
操作系統:只是使用的習慣性問題,雖然FreeBSD/Linux推薦命令行方式,但如果不熟悉的話,可以安裝X-Window界面降低適應曲線,并且作為服務器OS,安裝配置完成后,人工的干預率是比較低的,完全不是問題。
數據庫系統:與商業db相比,同是關系型數據庫,理論是一致的,在SQL語句是只有少許差別,技術上沒有問題,從以下幾點說明:
1. 主流開源db完全支持所有企業特性,包括事務、熱備份、故障點還原、復制、集群等,支持企業級應用。
2. 支持問題,有不少人認為開源db出問題后沒人支持,但我認為這并不是大問題,當然如果你認為你的系統特別關鍵、特別重要的除外。可以回頭想想,這么多年參與大大小小的開發和集成項目加起來可能有十幾,使用的數據庫集中在Oracle和MsSQL,有時也出現過問題,但基本不請原廠工程師來解決,因為代價實在太高,簡單問題自己搞定,搞不定的系統注意勤備份,大不了丟失半天的工作也可以承受。以現在的眼光來看,這些服務器都可改為開源數據庫。
二.市場可行性
在集成項目中,客戶可能并不關心你使用什么db,只要好用即可,但你說要他再出10萬元買一套SQL Server時估計馬上就火了。根據客戶的業務狀況推薦相應的OS和DB(開源的或商業的)是一個比較好的選擇。
開源數據庫,只要能在技術和安全上給予保證,講明利害關系,客戶應該是接受的。雖然D版數據庫也是免費,但畢竟是不合法的,也有悖于道德規范,還有就是存在一個非常巨大的潛在風險,萬一某天Microsoft或Oracle追上門來可就慘了,特別是有些規模的企業更是受不了這個,你是把業務系統停掉算了,還是認購認罰,但這時的支出絕對不是小數目。
開源操作系統/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,但后來Unix被注冊,BSD協議的Unix不允許再叫Unix了。
3. 在90年代初BSD操作系統分裂了三個著名的操作系統,FreeBSD是其中的一個,1993年FreeBSD發布了1.0版本,由于版權官司,現在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
【編輯推薦】