開源數據庫MySQL發展到今天已經具有了非常廣泛的用戶基礎,有人說它對傳統的商業數據庫發起了強力的挑戰,有人說,它在企業環境還有待於證明自己,本文就從這兩方面來分別列出MySQL是否值得我們選擇的五個理由。
一、MySQL值得我們選擇的五大理由
列舉選擇MySQL的理由的最困難的地方在於,如何對這些理由進行排序。這就如同我們經常爭論的故事:先有雞還是先有蛋?
MySQL的低成本來自於其簡單性嗎?它的普及性是由於其低成本嗎?其實,在MySQL的最“好”與最“不好”的功能之間沒有明顯的分界線,但它們組合在一起就形成了一副讓我們欣賞的作品。
不管怎麼樣,市場的結果已經證明MySQL具有性價比高、靈活、廣為使用和具有良好支持的特點。下面,我們列舉MySQL值得你選擇的五個頂尖理由。
1、普及性
人們常說“成功孕育成功”,這種說法明顯非常適合MySQL的情況。這個開源數據庫號稱在全世界有超過110萬份的完全安裝。最近由權威調查機構Evans數據公司進行的一項調查顯示,MySQL在過去兩年已經獲得了25%的市場份額。該調查公司還預測,相比其他的開源數據庫和閉源數據庫,越來越多的開發者將繼續選擇MySQL。Evans的總裁John Andrews表示,用戶對MySQL和其他開源數據庫的評價正在趕上甚至超過很多專有商業數據庫軟件。
由於MySQL數據庫已經如此普及,對企業來說它無疑是一個更好的選擇。
業界普遍的聲音認為:“MySQL是一個可靠的數據庫系統,無論是在嵌入式或大型群集系統的部署中,還是在基於Web的應用程序領域,用戶時常會發現其實自己並不是第一個選用MySQL數據庫的先驅者。”
MySQL在業界的流行所帶來的另一個好處是,人們總可以很輕松地發現本行業的解決方案。廠商都希望他們的開發工具和應用程序框架可以與MySQL數據庫兼容,因為每個人都在使用它。MySQL是開源LAMP組合的一個標准組件:Linux、apache、MySQL和Perl/PHP。根據Evans的調查,LAMP組合的迅速推廣很大程度上代表著MySQL的被廣泛接受。根據Evans的調查報告,“MySQL的使用在未來將繼續呈成長趨勢。”
2、簡單性
與其他數據庫相比,MySQL易學易用。
你不用花費很多時間和金錢來培訓現有的職工,或者去花大價錢雇用那些擁有各種證書的開發者。因為MySQL的維護和管理在很大程度上是“傻瓜型”的,這直接導致了人力成本上的節省,MySQL的用戶Spacemonkey實驗室的首席執行官Mitch Pirtle如此表示:“維護MySQL使得你不需要一個年薪15萬美元的DBA,而且使用它開發程序也是非常簡單的。”
“對於MySQL數據庫,無論是在開發方面,還是支持方面,現在有大量強大的工具可以選擇。每一個新手開發者可以輕松地使用MySQL數據庫進行開發。甚至一個有經驗的Windows管理者也可以輕松部署並開始學習它,而你不需投入一分錢來了解這個數據庫。
對於IT經理來說,令他們喜歡的MySQL的簡單性還有另一方面。MySQL可以運行的更快速。某些人或許會說MySQL缺少了一些人們想要的功能,但是MySQL的支持者們卻認為,MySQL所保留的功能都是精華,並且是你部署、配置和維護這個數據庫所必不可少的一些功能。
“通過有能力的DBA的一個簡單計劃,MySQL可以達到令人難以想像的運行速度,”一位資深DBA如此表示。MySQL中沒有多余的功能來拖累CPU或占用內存。如果你需要額外的功能的話,MySQL的普及性實際上可以讓你發現總有一個廠商會提供准確的解決方案,而這個方案會滿足你的需要和需求。
3、低成本
MySQL數據庫歸MySQL AB公司所有,但是這個軟件是開源的,有一個社區版可以免費下載。稍俱常識的新入門者都可以輕松實現在一個常見硬件上安裝和配置MySQL。MySQL對硬件的較低要求是其最大的優勢之一,不過需要注意的是:內存越多越好,因為所有的重要數據存儲都在內存中完成。一個免費的數據庫意味著,更多珍貴的資金可以用於其他業務的啟動,諸如市場、廣告或調研和開發等。
即使對於MySQL的商業化的企業版來說,也沒有高昂的許可證成本,當你將其與像甲骨文和微軟之類的大型專有商業數據庫比較的話,你會發現實際上MySQL可以更少地占用資金,前者的每CPU許可費用一般從4000美元到25000美元不等,而MySQL企業版的支持和維護成本就更低了,只需每年花費2000到5000美元。無論你是自掏腰包來創建一個新興公司,還是得到了風險投資商的贊助,使用MySQL都可以降低你所需要的人力成本,正如前文所提到的,MySQL易學、易部署、易管理和易維護。
對於現有業務,可以輕松移植到MySQL。當你需要替換掉老的硬件,當你需要削減歷史遺留下的老系統的時候,選用MySQL對於財務部門來說更具吸引力。MySQL部署迅速,因此移植過程不會導致生產中斷。而且,較短的學習曲線可以讓你的系統管理員迅速掌握它的運行和維護。而且,MySQL的易於維護和管理意味著目前的職員可以處理目前的工作。
4、良好的支持
MySQL的雙許可模式意味著,那些希望對數據庫具有額外控制的人可以直接從數據庫廠商那兒得到幫助。MySQL AB公司提供了支持和維護服務,諸如代碼更新和補丁修補服務等,每年訂閱費為大約3000美元。通過支付一定費用,客戶可以得到優先的24/7支持,訪問內容豐富的在線知識庫和聯系一個專門的技術負責經理。
對免費版的用戶也具有充足的支持服務。在dev.mysql.com上,一個大型的強大社區用戶和開發者可以討論所有關於MySQL的事情。這個站點擁有博客、指南、視頻、技術交流會、白皮書和論壇等方式的交流。你碰到的問題可能已經在社區中被別的人已經問過,即使沒有,你也可以提出問題或通過Google來搜索答案。社區的相關負責人士:“MySQL社區是活躍、友好和內容淵博的。”
5、靈活性和可擴展性
由於在MySQL中有如此眾多的額外功能可選,諸如存儲引擎等,你可以選擇最適合你公司的一個,或者嘗試選用多個引擎。MySQL開始非常小巧,但是可以隨著公司的成長而不斷地變強大。MySQL AB公司的一個高級開發者者表示,“這個特點使得MySQL可以根據你當前的系統的需要來進行調整。”
“MySQL實際上是一個數據庫家族,你可以從選擇一個並將其配置成可以滿足你的大多數情況,”開源顧問公司Ethiqa的總裁如此表示,“因此,你可以在開始的時候選擇一個小巧的版本產品,以後再根據需要來對其進行性能或大小上的擴展。”
你可以配置MySQL運行在微小的嵌入式應用程序中,處理的數據可能不足1Mb——而你也可以用它來處理數Tb的數據。MySQL獲得這種可擴展性的途徑之一是通過一個人們所熟知的存儲過程,這是一個運行在程序之外的微型、預編譯程序。這些過程被存儲和運行在數據庫服務器上,以減少在客戶端的處理過程,從而最大限度地提高了處理能力,因為通常情況下數據庫服務器會運行地更快。存儲過程並不是MySQL獨有的功能,但是這個最近新增加的功能使得這個數據庫比以前更具吸引力了。
MySQL已經為支持所有最流行的Web 2.0語言做好了准備,諸如Ruby、AJax等,當然還有PHP。有的業界分析師說過,“每一個Web 2.0公司實質上就是一個數據庫公司。”由於MySQL已經是一個運行了眾多知名Web 2.0網站的數據,包括Craigslist、Digg、Wikipedia和Google等,或許我們可以說每一個Web 2.0公司實質上是一個使用MySQL數據庫的公司。
二、不使用MySQL的五個理由
在我們工作的過程中,經常能聽到很多不使用MySQL的理由,雖然其中有一些是對MySQL的誤解,不過同樣也有一些是合情合理的。下面我將描述五個不使用MySQL的響亮理由。
首先我們要知道,或許有一項技術存在很多理由讓我們可以選擇使用它,但是讓我們不使用它往往只要有一個理由就足夠了。選擇一個軟件產品同樣也是如此。
1、MySQL的授權方式
MySQL采用雙重授權(Dual Licensed),它們是GPL和MySQL AB制定的商業許可協議。
如果你在一個遵循GPL的自由(開源)項目中使用MySQL,那麼你可以遵循GPL協議使用MySQL。然而,如果你的項目不是在GPL協議下的話,你必須為使用MySQL來支付許可費用,或者你可能因為這個因素而將你的項目改為遵循GPL,那麼你需要處理因此帶來的更多的支持工作,這有可能會帶來成本上的提高。在這種情況下,一些軟件發行商可能傾向於選擇別的開源數據庫,例如遵循BSD授權的PostgreSQL。
2、產品成熟性
到2009年,甲骨文的數據庫Oracle已經誕生了30周年,而MySQL卻連它的一半時間都沒有。微軟的SQL Server僅僅比MySQL大兩年,但是SQL Server的發布是建立在Sybase的基礎上,那時候Sybase已經誕生了6年的時間。至於其他值得關注的開源數據庫,PostgreSQL將在2009年達到20歲的生日。雖然MySQL並不是市場上最年輕的數據庫,但是卻有更多成熟的數據庫可供我們選擇。
當然,或許這並不是我們拒絕MySQL的一個有說服力的理由,但是對於一些比較守舊的IT經理來說,在為一些關鍵業務選擇平台的時候,平台的成熟性卻是必須要考慮的一個因素,在這一點上,MySQL無疑毫無優勢。
3、功能設置成熟性
要想在MySQL與其他數據庫之間進行一個面面俱到的功能設置對比,並不是一件容易的事情。隨著新軟件版本的發布或一些補丁的推出,曾經的功能列表可能會迅速變得過時了。而且,有些功能對有的應用程序非常重要,但是對別的應用程序則不一定。
有的時候,一些缺失的功能可以通過別的辦法來實現,例如,在MySQL 4.1以前,你可以通過使用join方法來替代子查詢的功能。在MySQL 5.0中,大多數關系型數據庫所要求的功能已經都具備,但是我們卻有理由懷疑這些功能在MySQL 5.0中的成熟性。充其量它們在MySQL中被支持的時間也就一年左右,而在其他關系型數據庫中則已經存在了近10年的時間。
4、認證的作用
盡管MySQL也有一個認證培訓項目,但是它的培訓卻要比Oracle或MS-SQL相差很遠。盡管有的使用MySQL的用戶表示,MySQL很容易上手,但是對於具有企業級數據庫需求的用戶來說,無疑希望員工得到系統、有深度的培訓,顯然MySQL在這一點上還做得很不夠。
一個相關的問題是第三方支持的資格問題,盡管直接來自廠商的支持和服務可以一定程度上減緩這個問題,但是,對於有的企業來說,通過強有力的本地化支持顯然更有吸引力。
5、關於可擴展的看法
關於這個理由我把它放在最後一位。在很多業界專家中有一個相當一致的觀點:MySQL不能很好的擴展。關於這點可能有很大的分歧,爭論的焦點主要集中於水平可擴展性和垂直可擴展性上。MySQL則更傾向於垂直可擴展性。
據我的觀察,現在有一個趨勢,那些經過正式培訓的數據庫管理員DBA更傾向於選擇一個專有關系數據庫,例如Oracle。對於一些具有專門數據庫管理員的比較大的環境來說,MySQL很難得到寵愛,這時候,關於MySQL是否真的具有良好的可擴展性的爭論已經沒有意義。
不可否認,MySQL也是一個很好的關系型數據庫,或許在技術上它與其他領先的關系數據庫相差並不大,或不具有劣勢。但是,對於一些企業環境來說,MySQL顯然不具有優勢。