塗抹MySQL--第1章 開源運動與開源軟體MySQL - 1.2MySQL的悄然而至(4)

junsansi發表於2014-06-24

2.5 向前向前向前

自從進入被收購的漩渦,MySQL的發展雖然不至於完全停滯,可是也大受影響,Oracle深知,當務之急必須先維穩。因此完成對SUN公司的收購案,將MySQL納入囊中之後,將原有MySQL的版本劃分和分支重新整理,6.0版本被取消,5.15.5版本不斷進行BUG修復,並放出新的beta版本(不能否認,SUN公司之前也在進行若干準備工作)

Oracle對著業界喊:我們會支援MySQL,比SUN投入更多的精力,來開發和支援它;

Oracle對著社群喊:老鄉們,都出來吧,皇軍是來送糧食的。

201012月,MySQ 5.5 GA版本正式對外發布,對此,MySQL公司的前CEO(就是那位Marten Micko)曾評論說,5.5版本可能是有史以來最好的版本。我以一個過來人的身份,儘量站在客觀的角度來評價,我可以負責任地說,他說的是對的,在MySQL5.5版本中,Oracle完全像是在特性打包大放送。

提幾個比較重量級的變更吧。首先,MySQL預設的儲存引擎變更為InnoDB,儘管多少年前InnoDB就已經作為事實上的預設儲存引擎,但是其預設地位獲得官方承認,是從5.5版本開始的。除此之外,由於InnoDB引擎的開發商Innobase早已被Oracle公司收購,如今可算做同一家公司的內部專案,針對InnoDB引擎細節的提升相當的多,比如說對於適配Hash索引,I/O子系統效能提升,引入多回滾段,提供分組提交(Group Commit),對於多核的高效利用等等。

針對複製特性,在MySQL 5.5版本中,官方的半同步複製特性千呼萬喚始出來;分割槽特性方面,功能也得到較大增強,LIST分割槽和RANGE分割槽增加,基於指定列的列值做為分割槽條件,這樣就可以較為簡單地基於日期及字元值進行分割槽了,刪除記錄時,可以通過ALTER TABLE ... TRUNCATE PARTITION語句快速刪除指定分割槽的資料,這類改進對於熟悉Oracle資料庫的朋友們來說會感到頗為親切,沒錯,不管是語法還是功能,與Oracle資料庫中的同類功能一脈相承,MySQL 5.5版本對分割槽特性的功能提升,對於分割槽功能的深度使用者來說,絕對是項重大喜訊。

此外,在字符集方面,有一個細節不得不提,MySQL 5.5版本新引入了UTF16UTF32UTF8MB4字符集。同學們可能會想,新支援幾個字符集有什麼了不起,這也算重點特性嗎?呃,這個,可以算,因為這些字符集的引入很有背景。

MySQL資料庫真正興起,一個非常重要的原因是趕上了網際網路的浪潮,其自身也在網際網路企業中被廣泛使用。而隨著移動網際網路的興起,iPhone等蘋果裝置的暢銷,使用MySQL 5.1及之前版本來儲存資料的企業可能會發現,他們遇到問題了。對於iOS的內建表情(emoji)MySQL5.1及之前版本中,不管字符集如何設定,儲存時總會為亂碼,即使設定為UTF8字符集也無用,因為即使是UTF8字符集,儲存單個字元最大隻有3個位元組,但對於像emoji表情這樣的特殊字元,需要用4個字元來儲存,在5.1版本,對此毫無辦法。

MySQL 5.5版本新引入了UTF8MB4字符集,做為UTF8字符集的超集,它不僅能夠支援所有UTF8能夠支援的字元,而且還能夠使用4個位元組來儲存字元,這下需要使用emoji字元的應用有救了。國外的情況我們不瞭解,單就國內來說,著實掀起一陣升級至MySQL 5.5的浪潮(沒辦法,不升級不行啊,瞅瞅身邊智慧移動終端有多普及、移動網際網路有多火熱,這部分使用者的訴求老闆說了必須滿足,小小DBA哪敢忽視)

20132月,MySQL 5.6 GA版本正式釋出,毫無疑問,這是迄今為止最棒的一個版本。5.6版本中都提供哪些激動人心的功能,這裡不劇透了,同學們,本書中的所有操作,如非特別註明,正是基於最新的MySQL 5.6.12版本,後面有整整一本書的內容等待你們去發掘。

2.6 以開源的心態學開源

前面曾經提到過,MySQL資料庫得以興起,一項重要的原因就是趕上了網際網路的浪潮,切實滿足網際網路應用中的實際需求。

舉例來說,早在1996年,當PHP在網際網路開發中逐漸熱門起來的時候,他們就開始與PHP的建立人溝通聯絡,獲得一線的實際需求,比如分頁在網站中很常用,那麼他們就加入了LIMIT子句(在標準SQL語法的基礎之上擴充套件),這樣就非常實用。所以一開始,即使MySQL的功能不多(好吧,是很少),但是他們距離終端使用者非常近,提供了使用者想要的東西,並得到了使用者的認可。

開源,可視做幫助他們快速成長的另一大助力。他們從使用者那裡獲取真實的需求,同時,他們也能從開發者那裡得到眾多的反饋。因為開源,它的每一行程式碼都是開放的,所有人都能看到,當軟體出現BUG,很快就會有人告訴你問題並協助解決,同樣也有眾多的工程師開發自己感興趣的工具,並最終被整合到官方版本中,成為官方的產品。當然,大多數的工具不會被整合到官方產品中,但是這並不妨礙、也不會影響眾多開發者,持續提供新的工具或外掛的熱情。對於使用者來說,可能會需要用到某項功能,但因為該功能應用場景極窄,官方沒有可能進行鍼對性的開發,可是在開源生態圈中,就有機會遇到由第三方工程師開發的、提供相應功能的工具。

本書主題是講MySQL,不過並不限於MySQL,內容中將出現眾多第三方的開源工具(或指令碼),這也是開源軟體的特點之一。

傳統關係型資料庫軟體如ORACLE/MSSQL等,它們自身的功能就已足夠強大,再加上軟體廠商實力強悍,應用體系完整,由他們主導的情況下,恨不能所有東西都用他們自己的產品,這種模式並非絕對不好,只是某些情況下,使用者可能會有上船容易、想下去時艱難的感受。

開源軟體就是另一種風格了,以MySQL資料庫為例,儘管官方仍在不斷完善功能,但是相比其它大型資料庫軟體,仍然有明顯的差距。可是這一點為什麼沒有成為制約它發展的要素呢,就是因為有大量第三方軟體的支援。也許某項功能官方並未提供,或實現的並不優雅,沒關係,總能找到合乎需求的第三方工具。對於一些小需求,自己寫些小的指令碼更是普遍,更何況MySQL是開源軟體,對於技術功底深厚,動手能力強的朋友,還可以自己動手二次開發,實現自己專用的分支版本。

別人的東西可以直接拿來就用,不需要重複造輪子,同樣,自己寫出了得意的工具,也能夠分享出去,方便他人,回饋社群。這,就是開源。

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7607759/viewspace-1192634/,如需轉載,請註明出處,否則將追究法律責任。

相關文章