張瑞2005年加入阿裡巴巴運維部,負責數據庫管理與運維,架構改進與性能優化,經歷了阿裡巴巴數據庫技術的變革歷程,主導了ORACLE向MySQL的轉型。目前專注於數據庫高可用,分布式架構等領域的研究與應用。
張瑞談到,阿裡巴巴過去一直采用的是Oracle數據庫,並利用小型機和高端存儲設備提供高性能的數據處理和存儲服務。隨著互聯網業務的不斷發展,數據量和業務量呈爆發性增長,傳統的集中式Oracle數據庫架構在擴展性方面遭遇瓶頸。阿裡巴巴采用數據切分(sharding)的策略,將部分海量數據應用從集中式Oracle切換到分布式MySQL集群,從縱向擴展到水平擴展,解決了數據庫擴展性的問題,並用PC服務器替換了小型機。
數據庫應用的最大瓶頸是磁盤IO,而新的SSD存儲技術,可以提供非常高的IO能力。阿裡巴巴通過將SSD應用到數據庫上,利用flashcache等技術,大幅度提升了PC服務器的處理能力,取代了高端的存儲設備,減小了數據庫集群的規模,並降低了成本。
說起平時工作中的經驗,張瑞介紹說,在日常工作中,碰到的最大問題是數據遷移,尤其是不同類型的數據庫之間需要做數據同步,比如Oracle,MySQL,Greenplum等等,這些數據同步都很難找到現成的工具去完成,必須自己想辦法。數據遷移不僅要滿足一定的實時性要求,而且要對業務的影響最小,我們一般會采用全量與增量相結合的方式,並通過解析數據庫日志來實現增量數據同步,各種數據庫之間的同步采用統一的方案。
“每種數據庫都有其自身特點,正確使用才能發揮出最大的性能。我們主要使用Oracle和MySQL。ORACLE數據庫功能龐大,可靠性高,可以充分發揮出大型硬件的性能。MySQL作為使用最廣泛的開源數據庫,OLTP應用性能高,復制方案靈活。ORACLE與MySQL各有優缺點,我們采用集中式ORACLE與分布式MySQL相結合的方式,不僅僅要考慮功能和擴展性,還要考慮開發和管理的成本。”張瑞介紹說。
在技術選擇方面,張瑞表示,沒有最好的方案,只有最適合的方案。所以,阿裡巴巴在選擇數據庫產品時,主要是看功能是否滿足業務需求;二是成本問題,如ORACLE license費用;第三考慮人員的管理水平,不要盲目引進新的技術,帶來額外的風險。
最後,張瑞也談到了自己對數據庫未來發展的看法。他認為未來數據庫在三個技術方向值得關注:一是分布式數據庫;二是數據庫軟硬件一體機;三是SSD存儲。還有另外一個非常重要的發展方向是NoSQL,現在NoSQL產品眾多,甚至有很多說法NoSQL會取代關系型數據庫,我認為未來數據庫和NoSQL產品一定會長期共存,NoSQL更多是針對某個特定場景進行優化的解決方案,而數據庫是一種通用的產品,兩者並不矛盾,而是相互補充。傳統行業肯定更適合使用數據庫,而互聯網行業則會呈現百花齊放的景象。
編輯推薦】