1. 程式人生 > >為什麼以阿里為代表的大廠都傾向去Oracle而使用MySQL?

為什麼以阿里為代表的大廠都傾向去Oracle而使用MySQL?

去IOE化”理念最早是由阿里巴巴提出。具體就是要把公司裡IBM伺服器、Oracle資料庫、EMC儲存都替換掉,更換為開源或國產化的選項。這些年國內的工程師資源變得日益豐富起來,部分高階工程師可以深入到底層去做一些工作,不僅限於深度定製開源資料庫。於是閉源產品在除錯難的問題上就變得突出。為什麼很多公司都開始去Oracle而使用MySQL,主要因為以下這些因素:

為什麼以阿里為代表的大廠都傾向去Oracle而使用MySQL?

 

成本因素:

我們都知道mysql是開源的,也就是說完全免費,而oracle價格不菲,如果再考慮到搭載oracle的伺服器和儲存裝置的話,那直接可以看見的成本差距確實很大,這是現實。但是這樣就簡單的判斷從oracle遷移到mysql就一定節約成本,我覺得這個事兒不好說。直接根據產品本身購買價格算成本的方式不能說錯,但是肯定不全面,還漏了不少東西要算。

風險成本:

2008年的淘寶是一輛在高速公路上飛馳的汽車,業務發展是很快的,這個時候要遷移資料庫這樣的基礎架構,那必然是牽一髮而動全身的事情。就好比要給這輛在高速公路上的汽車換個引擎,車還不能熄火,這個事情本身的難度和風險就是很大的。

技術成本:

主要有幾個方面,業務不能停,資料一致性,大量的業務可能面臨解耦,重構等等,這些做完整體架構可能都變天了,這個是需要大量開發人員費時費力還不一定就能百分百做好的事兒。如果沒有一點前期的技術積累,幾乎不可能完成。

人力成本:

大量開發人員做重構的時候還是要拿工資的吧。新技術的學習成本也要算進去,這個包括了運維的dba和各個業務的開發人員,凡是需要用db的人都要新學一遍,這也要花不少時間和精力。還有在決定遷移的這一刻,對於之前的一些技術的積累,包括人員的培養等方面,一定是有浪費的,物體的運動軌跡發生突變往往意味著能量損失,這是一個道理。隨著技術轉型,一批老的出色的oracle dba和開發人員的流失帶來的損失更難估量。

業務因素:

這裡可能用“業務場景”這個詞解釋更加合適,或者說這是一個數據庫選型的問題。根據淘寶架構師在公開場合的描述,當時淘寶的業務量發展太快了,這使得原本基於oracle舊架構的系統擴充套件性不能很好支撐整個業務了,架構解藕這件事已經是車到山前了,這就意味著業務需要分拆,資料庫需要分拆。如果業務只需要十幾個或者幾十個叢集就能承載的話,那我覺得oracle完全ok,但是現在大型網際網路公司的業務規模都是需要上百叢集,上千機器來承載,對於這樣的規模,mysql這樣輕量級的資料庫更合適。所以這裡不是誰更好的問題,只是哪種資料庫產品更適合當前及未來公司的業務場景,換句話說,就是“物盡其用”而已。現在不是也有很多資料從mysql向nosql遷移了麼。

技術趨勢:

當前網際網路技術發展有個整體的趨勢,就是開源產品為主流。oracle是這個世界上到目前為止最優秀的關係形資料庫產品,但是他閉源,閉源就意味著在整個網際網路大行業背景下,這個產品本身就可能變的越來越小眾,對於一家網際網路公司使用的基礎架構本身很小眾的話還不是什麼太大的問題,但是其導致的技術上的壁壘就很難接受了,自己最核心的基礎架構掌握在別人家手裡,核心技術都是人家的,這就好比芒刺在背。打個可能不太恰當的比方吧,有一天你LOL天梯打到了2000,但是你發現你的圈子裡已經沒什麼人玩這個了,別人都去玩另外一個遊戲了,而且還是別人自己開發的遊戲,程式碼能自己改,能自己寫外掛能加英雄加功能。你當然可以繼續玩LOL,你可以始終是個頂級玩家,但是同時你失去了成為頂級遊戲開發者的機會。

歡迎工作一到八年的Java工程師朋友們加入Java工程師學習交流群:795632998
群內提供免費的Java架構學習資料(裡面有高可用、高併發、高效能及分散式、Jvm效能調優、Spring原始碼,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多個知識點的架構資料)合理利用自己每一分每一秒的時間來學習提升自己,不要再用"沒有時間“來掩飾自己思想上的懶惰!趁年輕,使勁拼,給未來的自己一個交代!