標籤:
MySQL這個名字,起源不是很明確。一個比較有影響的說法是,基本指南和大量的庫和工具帶有首碼“my”已經有10年以上,而且不管怎樣,MySQL AB創始人之一的Monty Widenius的女兒也叫My。這兩個到底是哪一個給出了MySQL這個名字至今依然是個密,包括開發人員在內也不知道。
MySQL的海豚標誌的名字叫“sakila”,它是由MySQL AB的創始人從使用者在“海豚命名”的競賽中建議的大量的名字表中選出的。獲勝的名字是由來自非洲斯威士蘭的開源軟體開發人員Ambrose Twebaze提供。根據Ambrose所說,Sakila來自一種叫SiSwati的斯威士蘭方言,也是在Ambrose的家鄉烏幹達附近的坦桑尼亞的Arusha的一個小鎮的名字。
MySQL,雖然功能未必很強大,但因為它的開源、廣泛傳播,導致很多人都瞭解到這個資料庫。它的曆史也富有傳奇性。
MySQL的曆史最早可以追溯到1979年,那時Oracle也才小打小鬧,微軟的SQL Server影子都沒有。有一個人叫Monty Widenius, 為一個叫TcX的小公司打工,並用BASIC設計了一個報表工具,可以在4M主頻和16KB內在的電腦上運行。過了不久,又將此工具,使用C語言重寫,移植到Unix平台,當時,它只是一個很底層的面向報表的儲存引擎。這個工具叫做Unireg。
可是,這個小公司資源有限,Monty天賦極高,面對資源有限的不利條件,他反而更能發揮潛能,總是力圖寫出最高效的代碼。並因此養成了習慣。與Monty同在一起的還有一些別的同事,很少有人能堅持把那些代碼持續寫到20年後,而Monty卻做到了。
1990年,TcX的customer 中開始有人要求要為它的API提供SQL支援,當時,有人想到了直接使用商用資料庫算了,但是Monty覺得商用資料庫的速度難令人滿意。於是,他直接藉助於mSQL的代碼,將它整合到自己的儲存引擎中。但不巧的是,效果並不太好。於是, Monty雄心大起,決心自己重寫一個SQL支援。
1996年,MySQL 1.0發布,只面向一小撥人,相當於內部版本。到了96年10月,MySQL 3.11.1發布了,呵呵,沒有2.x版本。最開始,只提供了Solaris下的二進位版本。一個月後,Linux版本出現了。
緊接下來的兩年裡,MySQL依次移植到各個平台下。它發布時,採用的許可策略,有些與眾不同:允許免費商用,但是不能將MySQL與自己的產品綁定在一起發布。如果想一起發布,就必須使用特殊許可,意味著要花銀子。當然,商業支援也是需要花銀子的。其它的,隨使用者怎麼用都可以。這種特殊許可為MySQL帶來了一些收入,從而為它的持續發展打下了良好的基礎。(細想想,PostgreSQL曾經有幾年限入低穀,可能與它的完全免費,不受任何限制有關係)。
MySQL3.22應該是一個標誌性的版本,提供了基本的SQL支援。
1999-2000年,有一家公司在瑞典成立了,叫MySQLAB,公司名中的“AB”是瑞典語“aktiebolag”或“股份公司”的首字母縮寫。可將其翻譯為“MySQL有限公司”。事實上,MySQL有限公司和MySQLGmbH均是MySQL AB子公司的名稱。它們分別位於美國和德國。雇了幾個人,與Sleepycat合作,開發出了 Berkeley DB引擎, 因為BDB支援交易處理,所以,MySQL從此開始支援交易處理了。
2000年4月,MySQL對舊的儲存引擎進行了整理,命名為MyISAM。同時,2001年,Heikiki Tuuri向MySQL提出建議,希望能整合他們的儲存引擎InnoDB,這個引擎同樣支援交易處理,還支援行級鎖。
如今,遺憾的是,BDB和InnoDB好像都被Oracle收購了,為了消滅競爭者,哪怕是開源的,都是不擇手段。MySQL與InnoDB的正式結合版本是4.0。到了MySQL5.0,2003年12月,開始有View, 預存程序之類的東東,當然,其間, bug也挺多。
在2008年1月16號 MySQL被Sun公司收購。MySQL的創始人Michael “Monty” Widenius也弄出MariaDB來對抗MySQL。事情過去了幾年,現在Oracle還在不斷地為MySQL投入人力物力,MySQL也得到了進一步完善。然而與此同時,MySQL的衍生版以及NoSQL資料庫技術的發展也在不斷提速。業界的討論話題變成了該不該繼續使用MySQL。對此,我們整理了來自兩個陣營的聲音,給出了繼續使用和放棄MySQL的五個考慮因素。
正方:繼續使用MySQL
1. MySQL上的投資和創新比以往更多了
開源社區的傳統認識是Oracle需要MySQL是為了減少對於他們的關係型資料庫業務的威脅。 如果微軟是被譴責的對象,那麼這種譴責是對的,但這裡是Oracle。 它的旗艦級資料庫顯然要進階得多,而MySQL做到最好也只能沾到它的一點邊。
自從收購以來,Oracle已經擴大了MySQL團隊並且給予他們一個更加成熟的開發過程。相比於傳統開源項目由分散在這個星球上的人們協作完成,MySQL的開發和計劃更多地由Oracle驅動。
在這段時間裡,正如一位開發人員所說的那樣,這家公司已經在使代碼更加模組化。這意味著短期的工作,但卻有著長期的回報。在MySQL 5.6中,他們拆分了一個MySQL Server中的重要的鎖,也就是說,鎖開了(the LOCK_open),而這將帶來超過一倍的頂級效能提升。
更何況,MySQL的主儲存引擎是InnoDB,而Oracle在2005年收購了InnoDB 。這些同樣位於Oracle的InnoDB的開發人員們,正在為了更好的整合效能和MySQL與Oracle的資料庫團隊共同工作。
2. MySQL產品依然穩固.
MariaDB和開源倡導者抱怨說:新的代碼在MySQL 5.5沒有測試案例,一些企業版5.5內的特性是閉源的。這是一個開源純度的問題,當然,一個所有使用者都關心的事情。
而且,自二月份新版本發布以來,MySQL5.6被認為是一個堅實的、效能良好的產品,包含一些新的特性功能。Oracle花了兩年時間將這個裡程碑版本放到MySQL社區中測試及擷取反饋。
MySQL 5.6從之前的4個CPU線程到現在的64 CPU線程,並發串連的數量較之前幾乎增加了兩倍,體現出來的是讀速度4倍的提升,除此之外還有很多的改進需要花段時間來列出。
資料庫叢集和複製組的主席Robert Hodges說:他對MySQL的活力毫不質疑,他甚至還遇到一個擔憂Mysql會被 Oracle毀掉的經理人,現在的情況是 Oracle正在將MySQL變成一個企業級的資料庫管理系統。
3. MySQL被設計著眼於Web開發、雲端運算及大資料
Oracle在計算髮展趨勢上沒有瞎,並把重點放在網路,雲端運算和大資料等項目上。側重點在MySQL和MySQL cluster上,旨在提供伸縮擴充的高效能、高可用性、自愈性和資料的完整性、配置、監控及資源管理、開發的敏捷性和安全性等方面的改進。
為了支援雲端服務,MySQL通過GTIDs(全球的的交易標識符)這個新特性使得複製功能大大增強。 GTIDs使主從伺服器之間的複製進度跟蹤和變得簡單,可以更容易的從故障中恢複,同時提供靈活配置和多層複寫的持續管理。
2013四月,Oracle宣布發布Hadoop的MySQL外掛程式。該外掛程式實現了MySQL到Hadoop/Hive/HDFS間事件發生時的複製,補充了現有的基於批處理的Apache Sqoop串連。
諾基亞是在大資料環境擁抱MySQL的第一個公司,它營運著一個集中的PB層級的Hadoop叢集,這個叢集和規模100TB的Teradata企業級資料倉儲關聯著,大量的Oracle和MySQL資料節點及可視化技術使諾基亞世界各地60000+的使用者使用大規模資料存放區。而MariaDB呢,好像找不到大資料相關的任何事情。
4.MySQL企業版
MySQL企業版在甲骨文收購之前就推出了,但甲骨文已經顯著提高了產品。5.6版增加了高可用性功能,如複製,Oracle VM模板,DRBD,甲骨文的Solaris叢集,MySQL的Windows容錯移轉。它還引入了新的方法為新的和現有的應用程式執行基於策略的合規審計。
還有的企業監控器,它持續監控你的資料庫,並提供給您最佳實務來實施。它還提供了查詢分析器來監視應用程式的效能和Workbench,它提供了資料建模,SQL開發,伺服器配置,使用者管理和綜合管理工具。
5. 現在較之前有更多的MySQL項目
在MySQL AB被收購之前,它在在25個國家有400名員工,其中有70%在家裡辦公。是否在一定要在一個地方工作一直存在爭議。雅虎首席執行官Marissa Mayer說:她結束了在雅虎遠程工作的允許,做事情需要合作,即同一建築物裡。
一位Oracle的MySQL架構師在自己的部落格上說,Oracle已經變了,整個團隊協同工作,儘管有些在紅木海岸的巨塔、加利福尼亞或其他的地方,但都在為MySQL特定的項目工作。整個項目組在叢集上工作,其中一個工作群組負責可管理性,一個最佳化團隊致力於資料庫演算法的最佳化,另一個團隊解決複製(至關重要雲、大資料等),整個團隊使項目更具擴充性。
反方:放棄使用MySQL
1. MySQL不像其他關聯式資料庫管理系統般成熟.
MySQL開始時並不是作為一個RDBMS,但後來改變了方向包括進了更多的功能。隨著時間的發展,一些成熟的RDBMS被認為比MySQL具有更豐富的功能。如果你想要一個功能豐富的資料庫,你可以試一下PostgreSQL或閉源的選項,如Oracle或微軟的SQL Server。
PostgreSQL的貢獻者Selena Deckelmann說Postgres的被視為Web開發人員對關聯式資料庫有需求的新項目的正確選擇。“用JSON資料類型和PLV8,Postgres可能成為NoSQL的預設選擇”,她說。
2. MySQL是開源的...但只是有些而已
傳統來說,MySQL是一個開來源資料庫,但是在實踐中已經不是那種感覺了。在Oracle的大傘下,MySQL現在有專有的、閉源模組。“MySQL看上去仍然很活躍,但是Oracle卻陷入開發進程之中,拒絕發布bug的測試案例,MySQL的安全補丁在代碼上嚴格控制,將大量的開源開發人員分配到新綠洲。”Paula Rooney在ZDNet裡解釋說:是Oracle把MySQL捐獻給Apache的時候了嗎?
除Mysql之外沒有其他開源方案可選了嗎,不是的。MariaDB是MySQL的一個分支,仍然是“真正的開源”。SkySQL和Monty Program Ab(MariaDB的合作公司)在今年年初合并了,聲明如下:“MariaDB的所有代碼都在GPL,LPGL或BSD協議下面發行,MariaDB沒有如MySQL Enterprise Edition裡的那些閉源模組。事實上,所有MySQL 5.5 Enterprise Edition裡的閉源特性都可以在MariaDB開源版本裡找到。”
3. MySQL效能方面的縮放性不如其競爭者
MariaDB的官方部落格的提供了MySQL、MariaDB最新版本的詳細對比測試,雖然結果很接近,但MariaDB勝出。
PostgreSQL的貢獻者Selena Deckelmann說:Heroku Postgres因為幾個原因使它更具吸引力,其中包括縮放性。“可以說他們已經營運了最大的資料庫託管環境,可以自動處理應用程式的縮放,支援節點冷添加可以非常方便容易的嘗試新特性”,她這樣說,另外,她補充道:“他們剛宣布支援PLV8,允許你在資料庫中運行JavaScript而且能更好地利用在9.2及更高版本中可用的JSON資料類型。”
4. MySQL為Oracle擁有而不是社區
MySQL被甲骨文收購後沒有顯著的方面改變,但Oracle仍擁有它,這使得一些開發人員很緊張。“也許,最糟糕的是,開發社區工作者和在Oracle的MySQL開發人員一起工作是不可能的,”邁克爾“蒙蒂”紐斯,MySQL和MariaDB創始人這樣說。
紐斯指出,Oracle不接受補丁或提供一個未來的路線圖。“與MySQL開發人員談論如何?或當前代碼如何運行,這沒門”,他說。如果一個開源社區開發的資料庫對你很重要的話,紐斯推薦MariaDB(廢話!)因為它是建立在MySQL之上的。而且它提供了更多的功能、速度和穩定性,安全問題更少。
5. 可選的方案越來越多
在2013年6月的波士頓峰會上,Red Hat宣布和MySQL分道揚鑣,取而代之的是紅帽企業版和MariaDB上了同一條船。Fedora已經宣布將在Fedora 19切換到MariaDB分支。Slackware Linux宣布在2013年3月將MySQL切換到MariaDB,而且OpenSUSE在2013年1月也作出了類似的聲明。
不止在Linux陣營,2013年4月,Wikimedia基金會宣布全球第七大受歡迎網站Wikipedia正在切換至MariaDB。在聲明中,Wikimedia基金會網站的架構師Asher Feldman解釋稱,MariaDB的最佳化及增強Percona的XtraDB功能設定是切換的原因。“同樣重要的是,作為自由文化運動的支援者,維基基金會更傾向於自由軟體項目,那些在免費及企業版間沒有授權及分支代碼的項目。”他又補充到,“我們歡迎並支援MariaDB 基金會作為一個非盈利組織,尤其是在自由、開放以及MySQL相關的社區方面。”科技記者Steven J. Vaughan-Nichols在2012年底提到,不管你對Oracle或開源與專有軟體的比較持什麼看法,不管你正在使用的是Linux、Apache、MySQL、PHP/Python/Perl(LAMP)的什麼組合,MariaDB在世界最繁忙的Web網站中的優良表現會一步步吸引著你的注意力。
那麼大資料呢,技術嫻熟的公司知道,MySQL的忠實使用者清楚嗎? MySQL是不再是資料庫解決方案小池塘裡唯一的大魚了,相反,MySQL正面臨著Oracle免費版的挑戰,真正的開源後裔MariaDB、日益流行的PostgreSQL關係型資料庫以及日益增長的NoSQL市場,如果你還沒換掉MySQL,那現在有充足的理由重新考慮了。
--摘自互連網
MySQL 產品的起源和狀態