如何理性選擇適合自己的數據庫?

發表于:2008-05-04來源:作者:點擊數: 標簽:數據庫理性選擇
有沒有這樣一個 數據庫 ?它不僅可以讓你來存儲你的所有數據,而且不用你去購買軟件授權,花很少的錢就可以獲得技術支持?;蛟S你認為這是白日做夢,實際上這樣的事情是確實存在的,它們的名字叫做“ 開源 數據庫”。 但是,開源數據庫和其他事物一樣,并非完

有沒有這樣一個數據庫?它不僅可以讓你來存儲你的所有數據,而且不用你去購買軟件授權,花很少的錢就可以獲得技術支持?;蛟S你認為這是白日做夢,實際上這樣的事情是確實存在的,它們的名字叫做“開源數據庫”。

    但是,開源數據庫和其他事物一樣,并非完美無缺,它可能會讓你付出另一種類型的代價,可能是比較低的數據處理數量、缺少的功能、受限制的圖形化管理,或者是一些其他商業數據庫有而開源數據庫不具備的的東西。 

    當前主流的商業數據庫有Oracle、微軟SQL Server、IBM DB2和Sybase Adaptive SQL Server。而在開源方面,主要有三家主流數據庫:MySQL、PostgreSQL和Ingres。所有這些數據庫管理系統都已經在市場上存在了十年以上。 

    這兩類數據庫都已經證明了自己可以勝任數據存儲和管理的需要。世界上大大小小的公司,從最小的新興公司到世界500強的大企業,再到政府部門,每天都在使用這些產品中的一種或多種,并放心地把它們的數據交給這些數據庫。

圖1:部分數據庫產品路線圖

    本篇文章通過對開源和商業數據庫的用戶及廠商的分析,可以看到開源數據庫正在通過不同的方面來完善自己。從商業的角度來看,開源數據庫正聯合起來來對抗它們的商業競爭對手。另外,在本文中我們還將討論,對于不同的應用情況是否具有選擇開源數據庫的理由。 

    希望這篇文章能成為一塊敲門磚、問路石,在你開始研究開源數據庫,在你考察是否將它們應用到你的企業中的時候,希望對你有些幫助作用。 


    大多開發者使用的數據庫都不止一個,有四個因素是我們很明顯要考慮的。首先是易用性,這是應用程序是否被選用的一個關鍵因素。圖形化管理界面也是被人們經常提到的。另外,在決定為每一個應用程序選用什么數據庫的時候,功能的深度也起著重要的作用。最后,軟件的成本問題也是大多數人所關注的。

  Oracle另一個強大的功能是在線表和索引重建。在很多數據庫中,需要離線進行重建,也就是說當索引被重建的時候,不允許訪問數據,因為這個操作要求獨占性訪問對象。當然,這不是Oracle的全部功能,只是其所能提供的高級功能的一些示例。 

    2. 商業數據庫之IBM DB2 

    在2004年,DB2數據庫的銷售主要集中在IBM大型機和它們自己的AS/400系列系統中。盡管根據2006 IDC的調查報告,DB2的市場占有率高居第二位,但是與Oracle相比,它的銷售額和市場占有率都要低很多。 

    現在除了IBM的專有操作系統外,DB2可以運行在Windows、LinuxUnix平臺上。新版的DB2 V9在XML處理方面具有較大的改進。在我最近的一個使用了其他數據庫的項目中,在規劃XML方面我們做了大量的額外工作。如果我們所使用的數據庫具有DB2 V9的相應功能,或許就不會有這么多麻煩了。
  另外,IBM正在通過其DB2 Everyplace進入移動領域,目前支持PDA和智能手機。 

    3. 商業數據庫之微軟SQL Server 

    和本篇文章中提到的其他數據庫不同的是,微軟的SQL Server只可以運行在其Windows操作系統平臺上。不過由于Windows操作系統的廣泛普及,缺乏對其他系統的支持并沒有阻擋SQL Server的市場份額的增長。 

    根據IDC的統計,微軟的SQL Server是市場份額增長最快的數據庫,市場份額僅次于DB2,排名第三。 

    在最新版本的SQL Server 2005中,增加了許多新的功能,使其進一步對Oracle夠成威脅。其中包括表分區、在線索引操作和很多其他管理功能。從下文中你將看到,很多用戶對SQL Server的直觀、易用的管理界面深表支持。
圖4:SQL Server 2005的產品線

 

    對比2004—2006年三大企業級數據庫的市場份額是漲幅變化,如下圖:

圖5:2004—2006年全球關系型DBMS軟件廠商利潤和市場份額分布

    4. 商業數據庫之Sybase 

    最新版本的Sybase Adaptive Server與以前的版本相比,具有更豐富的功能設置,但是與上面Oracle和DB2兩個商業數據庫相比還是少很多,舉個例子來說,它缺少對高可用群集和在線索引重建的支持。這或許是為什么在IDC的一次調查中,它僅排名第四,只有可憐的3.2%的市場份額。 

    Sybase比較強大的地方在于它對資源的低占有率上。在這一方面,Sybase 15還引入了新的“專利查詢過程技術”,顯示了增強的性能和降低的硬件資源消耗。 

    另一方面,Sybase正在通過其SQL Anywhere數據庫服務器進入移動領域。SQL Anywhere功能之一就是其常駐內存的數據庫管理系統,可以運行在Windows Mobile、Windows、Palm OS和Symbian上。

圖6:Syabse數據倉庫

    關于Sybase還有一個很有意思的歷史插曲,微軟的SQL Server是從Sybase開發而來的。微軟和Sybase簽訂了一個合約,微軟被授權可以銷售一個重新包裝的Sybase,或在它的基礎上開發一個它自己的版本。盡管微軟已經對其進行了很多修改,你依然可以在SQL Server的命令組成中看到兩者之間的淵源。 


    5.開源數據庫之MySQL 

    MySQL是開源數據庫中的佼佼者,它的用戶數是在同類開源數據庫中是最多的,它既可以被小的新興公司所使用,也可以被采用了操作系統集群的大型Web站點所使用。 

    MySQL擁有很多插入式的存儲引擎,用來給用戶提供不同的所需功能,而不是默認具有全部功能。這也是為什么MySQL會在數據恢復操作中具有最佳表現的另一個原因。 

    自從MySQL第一版發布以來,就提供一個存儲引擎接口。它讓用戶來根據需要選擇數據存儲引擎。MySQL既有事務安全(ACID兼容)的存儲引擎(諸如InnoDB、Falcon),也有不支持事務處理的存儲引擎(MyISAM)、日志引擎(不能被更新或刪除,Archive)和通過無共享體系結構實現高可用性的群集技術, MySQL還有專有的第三方引擎,例如InfoBright和Nitro。

圖6:Syabse數據倉庫

    關于Sybase還有一個很有意思的歷史插曲,微軟的SQL Server是從Sybase開發而來的。微軟和Sybase簽訂了一個合約,微軟被授權可以銷售一個重新包裝的Sybase,或在它的基礎上開發一個它自己的版本。盡管微軟已經對其進行了很多修改,你依然可以在SQL Server的命令組成中看到兩者之間的淵源。 


    5.開源數據庫之MySQL 

    MySQL是開源數據庫中的佼佼者,它的用戶數是在同類開源數據庫中是最多的,它既可以被小的新興公司所使用,也可以被采用了操作系統集群的大型Web站點所使用。 

    MySQL擁有很多插入式的存儲引擎,用來給用戶提供不同的所需功能,而不是默認具有全部功能。這也是為什么MySQL會在數據恢復操作中具有最佳表現的另一個原因。 

    自從MySQL第一版發布以來,就提供一個存儲引擎接口。它讓用戶來根據需要選擇數據存儲引擎。MySQL既有事務安全(ACID兼容)的存儲引擎(諸如InnoDB、Falcon),也有不支持事務處理的存儲引擎(MyISAM)、日志引擎(不能被更新或刪除,Archive)和通過無共享體系結構實現高可用性的群集技術, MySQL還有專有的第三方引擎,例如InfoBright和Nitro。

圖7:MySQL體系結構

    MySQL擁有很多實現特定功能的存儲引擎,但是并不建議你全部安裝它們。而像Google這樣的公司則編寫了自己的存儲引擎來加速它們的常用操作。 

    MySQL與Oracle相比的一個優勢就是它對資源的占用非常少。MySQL是實現數據恢復方面最快的數據庫,但是它的確缺少一些在Oracle中的功能。 

    MySQL從來沒有想過與其他數據庫在功能數量上一較高下,MySQL的目標是易用、穩定和性能。MySQL現在具有豐富的功能,已經得到了很多開發者的支持。 

    6. 開源數據庫之PostgreSQL 

    在開源數據庫中,PostgreSQL以其豐富的功能而顯得格外突出,其中包括存儲過程、表分區(partitioning)、多過程語言支持和多種數據類型和索引的支持。 

    另外,PostgreSQL的標準兼容性和嚴格的安全功能也被眾多用戶所稱道。PostgreSQL的在線事務處理(OLTP)是其最受歡迎的功能,在開源數據庫中,它的數據倉庫方面也是表現最好的。

圖8:PostgreSQL V8.1 架構

    由于PostgreSQL是一個被不同公司支持的社區控制型開源項目,很多公司提供對它的支持,諸如Sun、Fujitsu、SRA和Red Hat和很多新興公司和顧問公司。PostgrefSQL在日本的市場情況很不錯,僅次于Oracle。 

    7. 開源數據庫之Ingres 

    在Ingres 2006版中引入了很多新功能,其中一些功能是關于大規模部署方面的,例如鍵范圍表分區(key range table partitioning)和并行查詢支持。 

    另外,諸如存儲過程、觸發器和視圖功能早已被Ingres所支持,不過Ingres現在還不支持內部任務。 

    8.嵌入式數據庫應用 

    數據庫的一個比較特別的應用案例是嵌入式應用程序,在這方面應用中,低資源占用成為一個必需的要求。 

    MySQL由于其設計理念,在這一方面被應用的比較多。微軟的SQL Server 2005 Express版也被做為嵌入式數據庫使用,它被認為是微軟數據庫引擎(MSDE)的下一版本,而且它也是完全免費的。而Oracle則又通過收購得來的TimesTen內存數據庫來滿足嵌入式應用程序。

    Linux是開源數據庫的首選操作系統,因為它們都是開源而且完全免費的產品?,F在的消費電子產品市場中,Linux變種已經被廣泛應用。而這也使得開源數據庫們在嵌入式應用程序受益。

二、如何選擇適合自己的數據庫?


    1.按需求來選擇 

    事實上,現在沒有完美無缺的數據庫,無論是商業數據庫,還是開源數據庫。 

    我們發現,選擇一個數據庫的主要理由就是它的功能是否可以很好地支持你的應用程序。人們通常使用數據庫來完成的任務有:支持Web、事務處理、文本搜索,有的情況下復制也是一個重要的要求。 

    在事務處理方面,Oracle看上去更有領先優勢,接下來是微軟的SQL Server。沒有一個開源數據庫具有可以與Oracle相媲美的事務處理功能。 

    在那些要求功能豐富的情況下,開源數據庫們并不比商業數據庫有什么優勢。人們經常提到的商業數據庫的優勢功能有存儲過程、觸發器和一些安全功能。 

    不過,正如我們上面提到過的,自從Ingres問世以來就支持觸發器和存儲過程。PostgreSQL對這些功能也早已支持。在MySQL的新版中最近也增加了存儲過程和觸發器功能。 

    對于支持Web應用程序,MySQL看上去要比其他對手表現好。Web應用程序主要是對數據庫進行讀取操作。MySQL在這方面以速度快而見長。一些用戶表示,在快速閱讀操作方面,MySQL至少不比Oracle差。但是,當任務從閱讀數據庫轉向處理一個客戶購買操作的時候,用戶則可能更傾向于選擇Oracle而不是MySQL。 

    在復制和群集功能上,MySQL給人的印象差別很大。MySQL中的單向復制表現驚人,但是,MySQl的群集功能被應用的不多,因為它只是基于內存的。 

    2. 按易用性和管理來選擇 

    開源數據庫們主要是以命令行工具中管理。盡管也有一些圖形工具可用,但是與Oracle等商業數據庫自帶的圖形管理工具相比,它們還顯得不夠靈活和穩定。 

    在圖形化管理方面的贏家無疑是微軟。微軟的SQL Server管理工具不是基于瀏覽器的,而是自帶的一個終端平臺。這使得它有能力完成一些Web瀏覽器所不能實現的強大功能。一些用戶希望Oracle中的管理功能也和SQL Server中一樣好。 

    3. 按支持性來選擇 

    當討論開源軟件的時候我們聽到最頻繁的問題是:“我們從哪兒能得到支持?” 

    MySQL為它自己的客戶提供24*7、30分鐘響應時間的支持。在其Unlimited服務中還有很多不同的付費支持級別。正如上面所提到的,PostgreSQL的支持來自于不同的平臺廠商,支持的內容、成本、地區和要求因廠商不同而不完全一樣。 

    由于開源數據庫的源代碼可以被任何人查看和修改,這導致了幾個潛在的問題。 

    一個合法客戶對數據庫進行了修改會發生什么?Sun公司不會對這種情況提供支持,而MySQL公司將提供支持,但是需要滿足一些特定條件和情況。事實上,能對這些開源產品進行修改的客戶的數量是非常少的——這與產品的復雜度有關系。 

    另一個開源軟件的問題是,任何人可以對產品進行修改的現實會帶來一些潛在的漏洞或安全問題。諸如此類的事情已經發生過,客戶需要確信從熟悉的網站下載這些產品,并且確認它們可以通過MD5校驗。 

    4. 按成本因素來選擇 

    數據庫中成本因素是非常簡單的。 

    對于開源數據庫,你可以免費得到授權,但是同時也犧牲了一些功能。而對于商業數據庫,你可以使用更多強大的功能,但是你需要按每個拷貝或每個CPU來支付授權費用。 

    對于開源數據庫,在維護成本方面,盡管看上去你可以選擇不從廠商那兒購買支持合同,因為你擁有源代碼,但是實際上并不如此簡單。 

    雖然你可以選擇修改源代碼,但是當新版數據庫出來后,你所做的修改不得不重新進行實施,而且你曾經所做的修改可能已經沒有必要,因為新版中增加了相應的功能。對我們來說,唯一比較實際的做法就是成為這個數據庫開發社區中的一員,這可能需要你投入大量的時間,其成本或許會超過購買一個支持合同。 

    對于商業數據庫,你只有面臨一個選擇,如果你想得到來自它們的維護支持,那么就購買它們的支持合同。 

    三、結論 

    總體來說,選擇什么樣的數據庫要看你的應用程序的需要。如果它是以閱讀數據庫為主的Web應用,MySQL無疑是最佳選擇。而如果需要那些事務處理和復雜的數據庫功能,那么可能是Oracle和微軟的SQL Server的地盤。如果你需要一些商業數據庫的高級功,但又不想支付授權費用,那么看一下PostgreSQL或Ingres。對于嵌入式數據庫應用,MySQL和Sybase所占有的系統資源最少。 

    如果你因為害怕缺乏支持而對開源數據庫敬而遠之,那么我們的文章已經告訴你,你可以把這些擔心拋開了,三個主流開源數據庫都由實力強大的企業或組織來提供支持,響應時間和專業程度完全可以和商業數據庫廠商相媲美。 

    切記,不選最好的,只選最適合你的。

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97