為什麼很多公司都開始去oracle而使用mysql?
最近聽了阿里的一個分享會,發現他們完成了整體從oralce轉換為mysql的過程。不太理解為什麼要這樣做?
題主的問題:為什麼很多公司都開始去oracle而使用mysql?
關於這個問題已經看到很多很多很多次了,在瀏覽了各家之言後,就借知乎這塊寶地,我也寫一點我的看法,可能會有點長。
首先,題主直接問為什麼,這個明顯不符合知乎的規矩嘛,咱要先來看看是不是真的很多公司開始去oracle而使用mysql。
historical trend of the popularity ranking of database management systems
從圖片來看,oracle和mysql的流行程度沒有明顯的逆轉,oracle還是關係形資料庫中的老大。
我沒有找到在互聯網行業中的統計數據,希望有知友補充。
在知道了是不是之後,正式開始答題。
我本人是一個mysql dba,對於oracle了解不多,所以要我直接從正面去解答這個問題呢,多多少少都是會有一些偏袒的,所以我想把這個問題轉化一下,就是一個公司在作出資料庫選型轉變的時候,需要考慮哪些方面的因素?淘寶從oracle轉為mysql可以作為這個問題很好的一個例子。
成本因素
我們都知道mysql是開源的,也就是說完全免費,而oracle價格不菲,如果再考慮到搭載oracle的伺服器和存儲設備的話,那直接可以看見的成本差距確實很大,這是現實。但是這樣就簡單的判斷從oracle遷移到mysql就一定節約成本,我覺得這個事兒不好說。直接根據產品本身購買價格算成本的方式不能說錯,但是肯定不全面,還漏了不少東西要算。
風險成本:2008年的淘寶是一輛在高速公路上飛馳的汽車,業務發展是很快的,這個時候要遷移資料庫這樣的基礎架構,那必然是牽一髮而動全身的事情。就好比要給這輛在高速公路上的汽車換個引擎,車還不能熄火,這個事情本身的難度和風險就是很大的。
技術成本:其實上面提到了遷移過程的難度大。主要有幾個方面,業務不能停,數據一致性,大量的業務可能面臨解耦,重構等等,這些做完整體架構可能都變天了,這個是需要大量開發人員費時費力還不一定就能百分百做好的事兒。如果沒有一點前期的技術積累,幾乎不可能完成,淘寶這方面的實力確實國內領先(這裡感嘆一下)。
人力成本:大量開發人員做重構的時候還是要拿工資的吧。新技術的學習成本也要算進去,這個包括了運維的dba和各個業務的開發人員,凡是需要用db的人都要新學一遍,這也要花不少時間和精力。還有在決定遷移的這一刻,對於之前的一些技術的積累,包括人員的培養等方面,一定是有浪費的,物體的運動軌跡發生突變往往意味著能量損失,這是一個道理。隨著技術轉型,一批老的出色的oracle dba和開發人員的流失帶來的損失更難估量。
如果把這些七七八八都算進去的話,那還真的一定節約成本么?至少在短時間內,這個事兒不好說,反正我是老闆的話,我算不清。
業務因素
這裡可能用「業務場景」這個詞解釋更加合適,或者說這是一個資料庫選型的問題。根據淘寶架構師在公開場合的描述,當時淘寶的業務量發展太快了,這使得原本基於oracle舊架構的系統擴展性不能很好支撐整個業務了,架構解藕這件事已經是車到山前了,這就意味著業務需要分拆,資料庫需要分拆。如果業務只需要十幾個或者幾十個集群就能承載的話,那我覺得oracle完全ok,但是現在大型互聯網公司的業務規模都是需要上百集群,上千機器來承載,對於這樣的規模,mysql這樣輕量級的資料庫更合適。所以這裡不是誰更好的問題,只是哪種資料庫產品更適合當前及未來公司的業務場景,換句話說,就是「物盡其用」而已。現在不是也有很多數據從mysql向nosql遷移了么。
技術趨勢
當前互聯網技術發展有個整體的趨勢,就是開源產品為主流。oracle是這個世界上到目前為止最優秀的關係形資料庫產品,但是他閉源,閉源就意味著在整個互聯網大行業背景下,這個產品本身就可能變的越來越小眾,對於一家互聯網公司使用的基礎架構本身很小眾的話還不是什麼太大的問題,但是其導致的技術上的壁壘就很難接受了,自己最核心的基礎架構掌握在別人家手裡,核心技術都是人家的,這就好比芒刺在背。打個可能不太恰當的比方吧,有一天你LOL天梯打到了2000,但是你發現你的圈子裡已經沒什麼人玩這個了,別人都去玩另外一個遊戲了,而且還是別人自己開發的遊戲,代碼能自己改,能自己寫外掛能加英雄加功能。你當然可以繼續玩LOL,你可以始終是個頂級玩家,但是同時你失去了成為頂級遊戲開發者的機會。
說到這裡我想再延伸一下,有個成語叫「不破不立」,拿淘寶遷到mysql的例子來說的話(遷mysql我想可能只是一部分),淘寶在這個分拆重構的過程中積累了很多技術。淘寶內部人員也在公開場合也提到過,淘寶在那段時間誕生了很多出色的架構師,積累很多新技術,比如很多中間件,底層針對mysql的優化,運維工具等等,可能沒有當時的那次變革,阿里的RDS出現可能還要晚幾年,甚至出不來。
高層意志
我看到過有淘寶系的人說那次遷移其實是某博士的一次政治運動,反正咱不是阿里的人,咱就瞎猜了哈。遷移這事兒誰提出來的不好說,但是得到高層的首肯是必然的,甚至我覺得這樣的規模必然是有高層的壓力的,如果這個事情說服不了大老闆,很難想像下面上千的開發人員行動能統一。
大概就先到這吧,寫得有點亂,題主湊合看了,好像說了半天也沒說去oracle而使用mysql到底好不好,題主可以自己根據以上因素自己掂量掂量。至於淘寶從oracle遷到mysql好不好,我挺某博士。
利益相關:mysql dba樓主看到的只是表象,具體數字分析樓上已經有人給出;
從我的角度,為什麼大家會感覺到這種「很多公司都開始去oracle而使用mysql」?
理由有幾個:
1,輿論宣傳,目前的技術論壇或技術分析,由於oracle這種是比較成熟的解決方案,拿出來講新意略少,反而mysql比較好分享,給人也覺得似乎這公司(這人)技術比較領先;但分享mysql的多,不代表局勢就完全反轉;
2,接上面一個話題,這幾年的互聯網公司,大多沒什麼歷史系統負擔,加上 mysql也逐漸成熟可以滿足基本的需求(穩定性、擴充性等),所以可以直接使用mysql; 而目前在網路或者研討會分享的,感覺有60-70%都是互聯網背景的人在分享,所以也造成一種mysql已經「獨佔」天下的錯覺;
我自己能想到的理由:
oracle 要錢 mysql不要錢,分散式存儲用mysql方便
mysql經過這麼多年本身也成熟,比如備份、主備庫、有經驗的MYSQL的dba。
mysql開源,有技術資源的大公司可以定製開發些東西。
互聯網類的應用對資料庫依賴越來越小,比如觸發器、存儲過程 很多都不建議用,到最後資料庫完全就是用來存儲結構化重要數據的這麼一個東東,導致oracle優勢小了很多。
非結構化非核心的數據存儲用了nosql,對資料庫特殊數據類型的依賴小了。
複雜的數據運算有專門的分散式計算做比如Hadoop,對資料庫的特殊查詢比如分析函數依賴小了。
反正到最後發現oracle也就是存儲數據用的,其他的都沒用上。
我還是匿名吧
你聽的啥分享會啊,明明是遷到OceanBase啊。我覺得正祥解答得很白話很全面了(這次我竟然沒有黑阿里。
文章鏈接:資料庫要變天!阿里 OceanBase 五年破繭為蝶
OceanBase技術負責人正祥的新浪微博:weibo.com 的頁面。
————————————————————
之前我一篇文章預測阿里、百度、騰訊未來將是IT硬體廠商的最大對手,今天看到一則消息,淘寶頂級科學家陽振坤微博號@阿里正祥 ,發出一則消息。「從上周五開始,淘寶/天貓/聚划算在支付寶上的交易,100%都在OceanBase上了。你可能沒有什麼感覺。」
五年前立項,今天成果斐然,作為本該理性的媒體觀察者看到這則消息也不僅感慨萬分。
時代在變,阿里、百度、騰訊未來不僅是硬體廠商的最大對手,也會是軟體廠商的最大對手。
@歪脖大肚子Q問:假如Oracle的許可證費用足夠低,還會換用OB嗎?按照大部分人都解釋,可能從安全方面考慮,@王少亞認為關鍵不是費用,是可控性 。但是事實很簡單,就是Oracle要價太高。
淘寶頂級科學家陽振坤微博號@阿里正祥 回復@王少亞:很多人猜測答案是NO,非也,答案是YES,而且是在費用上,呵呵。
可以想像馬雲當時是多麼火大,你收我那麼多錢,跟我阿里的理念完全相反啊。我成本無限高,我怎麼服務中小企業!必須上馬。@阿里正祥表示:目前 OceanBase做到了商業資料庫成本的一半以下,這得益於OceanBase不再需要昂貴的共享存儲、高可靠的伺服器、資料庫軟體的許可費。 OceanBase還有很大的性能提升空間和成本降低空間。
今天真是最好的時代,也只有中國市場,也只有在今天的這個時代,才能誕生數千億條記錄、數百TB數據上的應用讓阿里是真槍實彈的研發。
有網友問為什麼不用MySQL?
@阿里正祥回答,「金融系統要求在主庫故障的時候不能丟失任何數據(地震等天災人禍除外),MySQL無法做到這一點(如果不使用共享存儲的話)。 」
對於是否增加硬體採購,@阿里正祥表示,機器確實增加了,但也沒有這個同學說的這麼誇張(一個同學認為機器增加了7-8倍),不知道這個數據從何而來。對於這個交易系統,跟商業資料庫相比,OceanBase成本更低,同時還提供了超過一倍的性能和容量。
看 看阿里普通員工的言論,@何_登成:作為一個參與者,我感覺很自豪。作為一個資料庫從業者/研發人員,我更深知做一個自研的資料庫有多麼難,更別說在世界 上最大的支付系統上線使用。新的里程碑,新的起點!我們資料庫團隊跟陽老師的研發團隊緊密合作,進一步打磨OB,以雲產品的形式輸出OB服務,讓更多公 司、朋友體驗到OB的優勢。
OceanBase 是一個支持海量數據的高性能分散式資料庫系統,實現了數千億條記錄、數百TB數據上的跨行跨表事務,由淘寶核心系統研發部、運維、DBA、廣告、應用研發 等部門共同完成。在設計和實現OceanBase的時候暫時摒棄了不緊急的DBMS的功能,例如臨時表,視圖(view),研發團隊把有限的資源集中到關 鍵點上,當前 OceanBase主要解決數據更新一致性、高性能的跨表讀事務、範圍查詢、join、數據全量及增量dump、批量數據導入。
目前OceanBase已經應用於淘寶收藏夾,用於存儲淘寶用戶收藏條目和具體的商品、店鋪信息,每天支持4~5千萬的更新操作。等待上線的應用還包括CTU、SNS等,每天更新超過20億,更新數據量超過2.5TB,並會逐步在淘寶內部推廣。
擴容(scalability)
"花在oracle上的錢給我啊,
我幫你用mysql解決問題。"
看了幾個問題的答案,真的呵呵了,忍不住說幾句。
在全世界範圍內,肯定還是oracle佔據主導優勢的,原因很簡單,大公司的項目都被已經鎖住了,遷移成本太大。而且不可能平滑遷移到mysql,注意我的說辭,是不可能!即時花費了很大的代價,遷移的斷檔導致的業務問題,也是這些大企業不能承受的,沒人樂意背這責任啊。所以oracle的先發優勢,就把換資料庫擋在了門外。
這也是為什麼要去oracle的原因,從公司技術考量,我們不可能將整體的東西交給別人來管控。要知道,oracle買東西可不是光賣你軟體的,是軟體和硬體一起賣!出了問題,你最後還是得找oracle,這就和windows伺服器一樣。但是從銀行業的角度來說,肯定是windows+oracle啊,因為一不差錢,二本來公司的技術就是醬油貨居多,出了問題有人找,挺好。
考慮一個問題,不能單單的看的太片面。如果你有帶領過1000號技術團隊的經驗,你就會發現,如果某個人在資料庫里做了個存儲過程、function這種東西,那就等著大家一起呵呵吧。所以現在資料庫的功能就是存數據,至於其他的,全部做非同步來實現業務。切開服務化,評價服務的重要性來保證主要服務的可用。這樣,資料庫的意義不同了!時代不一樣了,現在不是1995年,現在是2015+年了,已經過去了20年。20年前,20個人寫代碼,就是一個大團隊了,現在業務複雜多變,動不動就是300、500人的團隊。所以我們必須把資料庫看成單純的數據存儲,否則你會發現團隊里這麼人多良莠不齊帶來的可怕後果。別和我說測試能解決,我覺得稍微有點經驗的leader就知道讓測試把關有多不靠譜。所以我們需要的一整套的技術管理流程,只能切開,分離!
所以從本質上講,oracle牛的地方都沒用了。。。因為都被其他的中間件代替了啊。。。反正都是集群化么,多幾個中間件招幾個人就有了。成本由硬體成本轉嫁給了人力成本,其實總得算下來,還是能省一大筆錢的,大概50%左右吧(在日PV千萬級訪問的時候)。而且是公司越大越省錢,這道理很簡單,培養了專家了么,說不定還有一天打敗oracle了呢。
為什麼很多人會黑mysql呢?因為oracle多複雜啊。。。mysql就是太簡單了。。學那麼多年都白學了,不黑你才怪。問題是技術在進步,資料庫的功能越來越偏向於數據存儲了,oracle那麼多東西,真的沒法用。。。
這個 "很多公司" 里肯定沒有金融保險行業的;像Oracle這種擁有多年技術積累的大型商業資料庫所帶來的穩定性、時效性是其他開源資料庫無法比擬的。
用mysql替代oracle的用戶可以分為三種:1)應用太小且要求不高,mysql完全搞定,根本不需要oracle,又是免費的,不用白不用。2)系統太大,做最大的oracle集群也滿足不了其容量和性能的要求,用mysql做磚頭自己建存儲集群。3)不明真相的被忽悠的群眾。
對於一般的用戶,用oracle是最經濟的,用mysql所需要的投入不是他們能承受的。
大部分是因為沒錢沒技術。
如果把數據服務比作請客戶吃飯,可以把mysql比作大菜場,oracle就是五星級大飯店。
先考慮錢:
1. 又窮又沒技術的,菜市場門口有賣熟菜,但選擇不多。勝在價廉物美,並且如果你買了油炸雞塊。再去超市買幾瓶啤酒,在晚上吃的話,可以組成經典的「啤酒炸雞看星星」這種有b格的組合。另外有些熟菜攤可能是高級飯店出來為了「自由」做個體戶的!
2. 有錢沒技術的,對菜有要求的一般都會去五星級飯店,全方位保證,b格滿,安全衛生口味好,選擇多,而且有大龍蝦魚翅鮑魚滿足挑剔的食客。
下面考慮技術:1. 有點技術的可能會選擇菜市場,家用廚具還是有的,家裡沒有大油鍋,大骨刀,可能會讓菜市場口的熟食攤主把魚過個油,讓賣肉的把排條切好,然後自己做,其實大部分這樣做的人口味並不會比五星級更好,但肯定會省很多錢。偶爾也可以搞點五星級菜譜上沒有的,但自己客人又愛吃的菜。2. 有技術的也有可能選擇五星級飯店,畢竟如果預算夠,客戶要求高,五星級飯店總是個不錯的選擇,畢竟五星級飯店本身就有接待高級客戶的經驗,可以幫忙推薦菜譜,甚至針對特殊客群的套餐,同時出了事五星級飯店可以幫忙解決食客的投訴,公司內部問責了,菜不是我燒的,並且五星級都不滿意,是客戶腦子燒了,總之不是我的問題。3. 真正nb的公司才是嫌棄五星級只提供菜譜上的東西,並決定直接去菜市場買原材料回來自己加工一桌媲美甚至超越五星級的美食。
結論:大部分不選擇五星級飯店接待客人的,並不是因為自己做的比五星級飯店更好吃,搭配更好。畢竟不是每家人都擅長做菜,家裡有廚師比五星級大廚還nb的,也是少數中的少數。
也就阿里能拿出來講講,問題人家養了一個什麼團隊?你其他公司養的起么。。。
持續使用ORACLE中,還是比較方便,也是由於公司系統架構複雜數據量較大遷移不易.....該花的錢還得花,如果轉用MYSQL目測客戶的投訴能到下個世紀......
跟風
技術就跟服飾一樣,今年流行這個,過一段時間流行那個。。。。錢都是要出的,看你是想把錢給O公司還是MDBA,有錢的當然給O公司了,無錢的才會給MDBA。當然,還有一點,O公司的產品越來越智能化,需要DBA乾的活兒也越來越少,大夥都往MDBA轉,MDBA也就不值那麼特別值錢了。於是使用M就更便宜了。
去 IOE, a href="https://www.sogou.com/sgo?ie=utf8sourceid=qcbq=1query=%E6%A3%B1%E9%95%9C%E9%97%A8%E4%BA%8B%E4%BB%B6hdq=sogou-clse-7221e5c8ec6b08ef-0099duppid=1lxea=12-2-5-8.4.0.1062-3-CN2101-0-0-2-78278ABD0B9837C45ECB02BF8270E595-69interation=interV=kKIOkrELjboMmLkEkL8TkKIMkbELjbgQmLkElbcTkKIMkLELjbwJmLkEkL8TkKIMkbELjb8TkKIKmbELjboJmLkElbkTkKIKmrELjbkI_998568206">稜鏡門
應該不是大部分公司,而應該是大部分知名互聯網公司。
原因很簡單,oracle已經不能滿足他們的需求,或者成本太高無法接受,使用oracle的成本已經比自己養活一隻團隊改MySQL的成本要高。MySQL開源對頂尖的互聯網公司來說最大的好處就是有源碼,看哪裡不滿意就把哪裡改了,因為頂尖互聯網團隊的員工足夠NB。你說MySQL不穩定,那我把MySQL改成穩定的;性能差?那我把它某一方面的性能改強。多次修改後估計已經和社區版有很大差別了。基本上可以認為阿里或Facebook自己搞了(開發)個不怎麼開源的阿里版MySQL和Facebook版MySQL,和MySQL的關係估計和MariaDB與MySQL的關係有的一比,至於是否高度兼容就不太好說。貴
商業軟體好用但是得花錢買,開源軟體對水平要求高點,不是誰都玩得好。你把少一些的錢給一個玩開源的人來搞定項目,出問題也一樣找得到背鍋俠,豈不快哉?
系統逐漸切ob了
有一小點:相比較nosql,sql更擅長transaction,而恰巧是一般大公司所需要的。nosql在做transaction的時候需要roll back,很麻煩
推薦閱讀:
※大數據真的可以預測未來嗎?
※張佳瑋說2009年的第一中鋒是姚明是否有失偏頗?
※什麼技術可以爬取和分析旅遊網站的信息?(爬蟲,自然語言處理等大數據相關)
※大數據時代有沒有哪些讓你覺得不寒而慄的事情?