開來源資料庫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顯然不具有優勢。