開源資料庫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是開源LAMP組合的標準元件:Linux、Apache、MySQL和Perl/PHP。根據Evans的調查,LAMP組合的快速推廣很大程度上代表著MySQL的被廣泛接受。根據Evans的調查報告,「MySQL的使用在未來將繼續呈現成長趨勢。」
2. 簡單性
與其他資料庫相比,MySQL 易學。
你不用花很多時間和金錢來培訓現有的職工,或是去花大錢僱用那些擁有各種證書的開發者。因為MySQL的維護和管理在很大程度上是「傻瓜型」的,這直接導致了人力成本上的節省,MySQL的用戶Spacemonkey實驗室的首席執行官Mitch Pirtle如此表示:「維護MySQL使得你不需要一個年薪15萬美元的DBA,而且使用它開發程式也是非常簡單的
。地使用MySQL資料庫進行開發
。性愛還有另一面。你部署、配置和維護這個資料庫所必不可少的一些功能
。
的功能
來拖累CPU或佔用記憶體。
、低成本
MySQL資料庫歸MySQL AB公司所有,但這個軟體是開源的,有一個社群版可以免費下載。的較低要求是其最大的優勢之一,不過需要注意的是:內存越多越好,因為所有的重要數據存儲都在內存中完成。於其他業務的啟動,諸如市場、廣告或研究和開發等。
即使對於MySQL的商業化的企業版來說,也沒有高昂的許可證成本,當你將其與像甲骨文和微軟之類的大型專有商業資料庫比較的話,你會發現實際上MySQL可以更少地佔用資金,前者的每CPU授權費用一般從4000美元到25000美元不等,而MySQL企業版的支援和維護成本就更低了,只需要每年花費2000到5000美元。易於部署、易於管理和易於維護
。具吸引力。 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顯然不具優勢。