去O的話題,可謂由來已久。從十年前阿里提出了這一口號,并率先在公司內(nèi)部實現(xiàn)了數(shù)據(jù)庫的整體去O開始,到后面從互聯(lián)網(wǎng)公司到傳統(tǒng)企業(yè)也紛紛跟進,可以說去O的理念已逐步深入人心。但到直到現(xiàn)在,我們可以看到Oracle在國內(nèi)的市場依然占有相當大的比例。即使在對外的很多去O宣傳中,也大多是以非重度O記案例或非關(guān)鍵業(yè)務(wù)系統(tǒng)居多,大量核心、關(guān)鍵業(yè)務(wù)系統(tǒng)仍然采用O的方案。那造成這一現(xiàn)象的原因是什么呢?本文嘗試對去O可能存在的難點及應(yīng)對策略加以分析。下面文字代表個人觀點,僅供參考。
1. 難點:功能完備度
Oracle從上世紀七十年來發(fā)展而來,經(jīng)過四、五十年的發(fā)展,其功能的完備程度達到相當高的水平。可以說,Oracle仍然是數(shù)據(jù)庫業(yè)內(nèi)功能最為強大的一款產(chǎn)品。從早期關(guān)系模型的實現(xiàn)、率先提出集群理念、到引入多模異構(gòu)存儲、軟硬件一體化、人工智能在數(shù)據(jù)庫的應(yīng)用等等。Oracle在產(chǎn)品能力上不斷增強。在本世紀早期的一段時間內(nèi),開源、大數(shù)據(jù)、云等確實對Oracle造成了一定的沖擊,但后者加速迭代更新速度,可以說現(xiàn)在Oracle更是一個“全能”選手。在各個領(lǐng)域,均有著不俗的表現(xiàn),甚至從某種程度來講,技術(shù)選型采用Oracle基本都可以滿足功能需要。但也正是這一現(xiàn)象,造成去O的選擇是困難的,很難找到一款產(chǎn)品可以完美替代Oracle的全部產(chǎn)品能力。所以,去O的過程往往不是一個簡單的“蘋果換桔子”的問題,而是需要從應(yīng)用架構(gòu)、基礎(chǔ)架構(gòu)、數(shù)據(jù)庫架構(gòu)綜合考慮,進而造成較大的困難。舉個簡單的例子,很多案例中是采用MySQL作為Oracle的替代方案。但在真正使用中,會發(fā)現(xiàn)很多問題。排除底層的內(nèi)核差異等外,僅從承載數(shù)據(jù)規(guī)模來看,兩者的差異就很大。當數(shù)據(jù)量增大后,容量、性能問題暴露出來,你不得不去考慮使用類似分庫分表等方案來解決,但這勢必會帶來應(yīng)用架構(gòu)的調(diào)整。在應(yīng)用通過改造、引入中間件等解決這一問題后,又會發(fā)現(xiàn)數(shù)據(jù)分片后的整體分析變的困難,此時又需要引入分析類產(chǎn)品,還要解決數(shù)據(jù)同步等問題。可以看到一個看似簡單的底層數(shù)據(jù)庫技術(shù)選型的改變,變得越來越復(fù)雜。如果上述過程是在“在線”的狀態(tài)下完成,這個過程又將難上加難。綜上可見,Oracle全面而強大的功能,是在去O中不得不去面對的問題。
應(yīng)對策略
在應(yīng)對策略上,首先要接受這一事實,功能差異是客觀存在的。不存在一個完美的產(chǎn)品可以替代Oracle。此時能做的更多是細化場景分析,找出更適合項目情況的技術(shù)方案(或方案組合)。細化場景的目的,就是在于對功能需求做減法,找出替換功能邊界,進而為后面的選型提供參考依據(jù)。如果是一個重度O的用戶,就需要梳理所有場景,提出若干種差異化的技術(shù)方案來滿足不同的需要。甚至針對同一場景,也要有幾種方案可選,以面對成本、風(fēng)險等其他因素的考慮。例如下圖是多年前在公司整理的去O方案總結(jié),其中場景部分正是基于上面的考慮。
2. 難點:性能有差異
性能問題,可以說是數(shù)據(jù)庫使用中大家最為關(guān)注的,也是在很多評測中經(jīng)常拿來說事的,但這點是需要理性來看待的。性能指標,是受到工作負載(workload)、軟硬件環(huán)境、測試方法、驗收指標等很多種因素有關(guān)。很多數(shù)據(jù)庫在評測中談到性能碾壓Oracle,此時要辯證來看待。例如前一階段國內(nèi)數(shù)據(jù)庫廠商OceanBase,在TPCC的評測中再次刷新了此前成績,可以說性能指標遙遙領(lǐng)先,這點也確實看到國內(nèi)廠商取得了長足的進步,值得夸獎;但同時也要理性看待,性能打榜成績不能完全代表性能好。客戶更為關(guān)注的是在通用場景下的性能表現(xiàn)及性能上持續(xù)穩(wěn)定輸出。基于這兩點,Oracle產(chǎn)品無疑做的非常出色。這里面重點談到兩點,一是Oracle的優(yōu)化器能力,二是其軟硬一體機方案。如果說數(shù)據(jù)庫是基礎(chǔ)軟件的皇 、 冠的話,那么優(yōu)化器就是皇、 冠上的明珠。優(yōu)化器的好壞,直接反應(yīng)數(shù)據(jù)庫的性能表現(xiàn)。筆者之前曾有過這樣的體驗,某項目去O遷移(包括應(yīng)用改造等)總共花費三天時間,但上線后的優(yōu)化足足花了一個月,甚至很多代碼不得不重寫。造成這一問題的原因,正是優(yōu)化器的差異造成同樣語句,在不同數(shù)據(jù)庫的表現(xiàn)差異巨大。通俗來說,就是寫的很爛的SQL,在Oracle中也可以執(zhí)行的很好。第二點是軟硬一體化方案,這方面Oracle是走在各廠商的前列,其最早提出一體機的理念,經(jīng)過十余年的迭代發(fā)展,其綜合性能表現(xiàn)令人印象深刻。其將最新的硬件技術(shù),與數(shù)據(jù)庫軟件相結(jié)合,爆發(fā)出強大能量。可以說在極致性能表現(xiàn)場景下,一體機仍然是非常好的一種選擇。
應(yīng)對策略
如何面對性能的差異呢?企業(yè)要做到以下幾點:一是理性看待性能指標,提出適合自己的性能要求。過高的指標要求,只會帶來后面技術(shù)選型的偏差。比單一指標更為重要的是,性能指標的多維度。要結(jié)合場景提出自己的指標規(guī)范,是滿足低延遲,還是滿足大吞吐;是滿足高并發(fā),還是滿足穩(wěn)態(tài)輸出。針對這些,要提出一個綜合性的測試標準。二是構(gòu)建適合企業(yè)自身的測試集,TPCC等測試標準可以用來參考,但不要完全依賴而是從更貼近企業(yè)業(yè)務(wù)入手,構(gòu)建自有的測試集。三是關(guān)注長期發(fā)展,做有預(yù)測性的性能評估。產(chǎn)品的性能表現(xiàn)是存在所謂拐點現(xiàn)象,很難做到完全線性擴展,要在評估初期就關(guān)注到這點,并根據(jù)業(yè)務(wù)發(fā)展做好預(yù)測評估及可能的備選方案。四是注意新技術(shù)的tradeoff。很多新技術(shù)確實給人眼前一亮的感覺,例如性能表現(xiàn)非常好,但此時要理性注意到其背后的取舍問題,進而評估是否選擇及可能的解決方案。例如以Redis為代表的KV產(chǎn)品,在某些場景有很好的性能表現(xiàn),但它的背后是舍棄了什么?什么場景適合它?后端架構(gòu)如何適配這一技術(shù),在解決了性能問題的同時,避免其他可能帶來的問題?
3. 難點:生態(tài)完整性
Oracle的生態(tài),無疑是其成功的主要因素之一。其發(fā)展的四、五十年來,在很多領(lǐng)域是其引領(lǐng)了整個行業(yè)的發(fā)展,其產(chǎn)品實現(xiàn)方式,很大程度上也成為了事實標準。后續(xù)的很多企業(yè)在產(chǎn)品設(shè)計上,也參考了Oracle的做法,某種程度將Oracle成了數(shù)據(jù)庫的代名詞。伴隨著其成熟穩(wěn)定的生態(tài),也有很多相關(guān)企業(yè),從底層基礎(chǔ)設(shè)施廠商、到數(shù)據(jù)庫周邊的備份、監(jiān)控,到上層的數(shù)據(jù)建模、治理,再到應(yīng)用軟件開發(fā),這些企業(yè)伴隨著Oracle共同發(fā)展,共存共榮。例如:Oracle在傳統(tǒng)金融領(lǐng)域布局多年,服務(wù)了大量銀行客戶。而這些銀行的業(yè)務(wù)系統(tǒng),則是有很多ISV來開發(fā)支持,他們已經(jīng)非常習(xí)慣使用Oracle作為底層數(shù)據(jù)的存儲、計算基礎(chǔ),此時更換數(shù)據(jù)庫已不是簡單的一替了之,而是需要大量的應(yīng)用系統(tǒng)改造適配的過程。這其中還需要考慮新老系統(tǒng)的共存、數(shù)據(jù)遷移帶來的應(yīng)用適配等種種問題。可以說這方面帶來的工作量,是整個去O工作中的主體部分,也是關(guān)乎到其最終替換效果能否達到預(yù)期的關(guān)鍵。此前看到的陸金所的分享,正是在業(yè)務(wù)梳理、服務(wù)化改造到后面遷移、切流等做了大量工作后,才逐步將數(shù)據(jù)庫從Oracle遷移到MySQL上。
應(yīng)對策略
面對Oracle成熟的生態(tài),作為企業(yè)要做好充分的準備,認識到去O工作不是簡單的底層替換而已,要從方方面面著手準備。后者所占的工作比例,甚至超過前者,而這些“細節(jié)”會決定最終的實際效果。那么作為技術(shù)提供方來說,不要試圖僅僅通過全新建立生態(tài)來替代Oracle,而是可做兩手準備,做好一定的適配Oracle的工作。一方面,要盡量兼容Oracle的生態(tài)標準,方便其周邊生態(tài)企業(yè)可以非常低成本的切換過來。這也是我目前認為國內(nèi)產(chǎn)品做的相對薄弱的部分,很多產(chǎn)品都號稱可完美地兼容Oracle,是實際效果往往大打折扣。第二方面是做好差異化聲明。一個產(chǎn)品要完美地兼容另一款產(chǎn)品是不可能的,雙方的差異勢必存在。重要的是,將這個差異明確地傳達給客戶,不要等上線后才發(fā)現(xiàn)兩者的行為不同。第三方面是做好遷移輔助工作,可通過文檔、工具、專家服務(wù)等形式,提供給客戶遷移輔助能力。比如阿里的ADAM平臺,就是一款遷移評估產(chǎn)品,可以很方便地評估兩者的差異并給出建議、甚至是部分遷移邏輯的實現(xiàn)。這樣可大大減少客戶遷移的憂慮。
4. 難點:成本不便宜
成本,是大家經(jīng)常來談到去O可能帶來收益的一個說辭,但這里是有一個誤區(qū)的。僅僅從字面成本代表的經(jīng)濟投入來說,去O往往就是不劃算的;再從外延所涉及的人力成本、時間成本、風(fēng)險成本、機會成本來說,更是如此。先從經(jīng)濟成本來看,Oracle采取的綁定資源的許可證+后期服務(wù)費的方式,是比較昂貴的;而且往往在議價方面也是比較強勢。很多企業(yè)也是看到這一點,因而才考慮去O的。
選擇了去O,僅從經(jīng)濟投入角度也會帶來很大一筆投入。這里面可能包括選擇其他商業(yè)產(chǎn)品(或商業(yè)服務(wù))可能的投入,需構(gòu)建新的服務(wù)體系帶來的人力投入,上下游適配帶來的更換類、改造類的投入等等。
再從人力成本來看,引入一款或多款新的數(shù)據(jù)庫/大數(shù)據(jù)類產(chǎn)品來替代O,需要人力投入;如引入例如分庫分表等中間件產(chǎn)品,在應(yīng)用架構(gòu)上、應(yīng)用開發(fā)上也是需要人力投入的。如采用的是開源產(chǎn)品,還需要企業(yè)有很好的掌控開源產(chǎn)品能力,在必要內(nèi)核上及構(gòu)建周邊生態(tài)工具平臺上同樣需要人力投入。
三從時間成本來看,去O往往有個周期較長的過程,是需要花費較長的時間成本。企業(yè)是否有足夠的時間來完成這一過程?是否在快速業(yè)務(wù)發(fā)展中,有足夠的空間來做?是采取大刀闊斧還是小步快跑的方式,這些都是與企業(yè)整體發(fā)展節(jié)奏相關(guān),需要統(tǒng)籌來考慮。
四方面的風(fēng)險成本,也是不可回避的一個問題。做任何技術(shù)決策都可能帶來風(fēng)險,針對這樣的風(fēng)險企業(yè)是否有足夠的認知?為規(guī)避這一風(fēng)險,是否采取了必要的措施?而這些措施,是否又帶來了額外的經(jīng)濟、人力、時間成本,甚至新的風(fēng)險點…(好吧,有點燒腦)
應(yīng)對策略
面對上述種種成本,企業(yè)該如何來解決呢?這里能采取的應(yīng)對策略就是充分評估,將上述可能的成本因素都羅列出來。針對不同的解決方案,在不同成本投入上有所差異,這也是后面做選型時的重要考量因素之一。此外,還需要從長遠及戰(zhàn)略層面考慮這一問題,不要僅依靠成本說話。該需要長期投入的,要舍得投入;該納入企業(yè)技術(shù)戰(zhàn)略決策的,要敢于投入。不要被短時的成本收益所左右。
5. 難點:服務(wù)健全性
很多企業(yè)選擇Oracle,是看中其良好的服務(wù)能力。所謂的“交鑰匙”項目,讓企業(yè)可以更安心在自身業(yè)務(wù)上,而不是技術(shù)本身。能夠達成這點,一方面是Oracle產(chǎn)品本身發(fā)展多年,其功能完備度已經(jīng)很高,并已形成了很好的交付能力;第二方面,完備的生態(tài)帶來的交付閉環(huán),大量的服務(wù)類企業(yè)保證了很好的交付質(zhì)量。相比較而言,無論是國產(chǎn)數(shù)據(jù)庫或者開源產(chǎn)品,都需要企業(yè)在產(chǎn)品服務(wù)上面有更多的關(guān)注。
應(yīng)對策略
針對這點,作為甲方的企業(yè)要更多做好選擇把關(guān)工作,選擇那些真正有實力交付的企業(yè)及產(chǎn)品。特別是某些基于開源產(chǎn)品衍生而言的商業(yè)產(chǎn)品,企業(yè)是否對內(nèi)核有足夠的把控力,尤為關(guān)鍵。此外,在其服務(wù)體系(流程、標準等)、客戶案例等,都需要加以考慮。如果是企業(yè)選擇自研或開源方案解決,則需要構(gòu)建其成熟的運維體系,這點可參照商業(yè)解決方案。對涉及數(shù)據(jù)安全、可用性等關(guān)鍵指標,做好必要的預(yù)案并定期演練。而作為乙方來說,提升交付服務(wù)能力是需要一個過程,要承認與傳統(tǒng)商業(yè)數(shù)據(jù)庫廠商服務(wù)積累多年的差距。有意識地去模仿構(gòu)建成熟的服務(wù)體系,同時加大對生態(tài)合作伙伴的支持,讓大家共同參與到服務(wù)中來。
6. 難點:風(fēng)險可控度
風(fēng)險問題,是大家做去O選擇時不得不面對的問題。作為基礎(chǔ)軟件,出現(xiàn)bug是難以避免的,但以O(shè)racle為代表的大型商業(yè)數(shù)據(jù)庫,經(jīng)過多年的打磨積累已經(jīng)可以做到風(fēng)險可控。Oracle從最早物理邏輯的備份恢復(fù)、到高可用集群(RAC)、到數(shù)據(jù)衛(wèi)士(DataGuard),再到獨立的備份一體機。經(jīng)歷了數(shù)十年的發(fā)展,在多方面做到數(shù)據(jù)保障。這也是之前用戶,敢于將核心、關(guān)鍵業(yè)務(wù)放在上面的原因之一。某種程度上講,用戶可以接受一定的服務(wù)降級,但在關(guān)鍵的數(shù)據(jù)安全、可用性上面,是需要嚴格得到保障的。與之相對比,去O之后的方案同樣需要規(guī)避上述可能的風(fēng)險。
應(yīng)對策略
為解決上述問題,甲方企業(yè)需要本著嚴謹?shù)脑瓌t,將可能的風(fēng)險因素都納入到評測之后,以此來考察候選方案。同時,在推進過程中可以按照“先邊緣、后核心;先局部、后整體”的原則,來推進去O工作。在這一過程中,不斷完善打磨整個方案。作為乙方產(chǎn)品,如何能夠打消客戶的顧慮,讓客戶可以無憂選擇也是非常值得探討的。比如支持產(chǎn)品混部,將自有產(chǎn)品放在后端,通過全部只讀-》讀寫混合-》全部可寫的步驟,逐步替代的方式減少出現(xiàn)風(fēng)險的可能。在比如支持前端路由選擇,嘗試使用小部分業(yè)務(wù)流量來驗證,并逐步擴大等等。通過這些手段的使用,逐步提升用戶使用的信心。同時,針對產(chǎn)品自身質(zhì)量,同樣需要嚴格把關(guān),做好交付輸出。
7. 寫在最后
如何理性看點去O的價值?或者說,企業(yè)為何做出這樣的選擇?一方面,隨著國內(nèi)外形勢變化,對國產(chǎn)化、自主可控有著實際要求。針對某些關(guān)鍵行業(yè)、關(guān)鍵領(lǐng)域,在政策上是有明確要求的。除此之外,企業(yè)更多選擇去O是從成本、擴展性及自身技術(shù)戰(zhàn)略出發(fā)的一種選擇。此時,是需要企業(yè)冷靜思考,做出最合適企業(yè)自身的選擇。從近年來的發(fā)展趨勢來看,越來越多的企業(yè)開始將去O作為企業(yè)未來技術(shù)發(fā)展戰(zhàn)略,同時也有很多的國產(chǎn)數(shù)據(jù)庫或云數(shù)據(jù)庫廠商加入到這一浪潮之中。這為國內(nèi)的數(shù)據(jù)庫發(fā)展帶來新的發(fā)展機遇。去O本身并不是目的,如何在未來基礎(chǔ)軟件使用發(fā)展上有著自主能力才是關(guān)鍵。大勢所趨,乘風(fēng)而上;希望更多企業(yè)在去O中磨練自身能力,同時助力開源、國產(chǎn)數(shù)據(jù)庫技術(shù)長遠發(fā)展。
責(zé)任編輯:lq
-
軟件開發(fā)
+關(guān)注
關(guān)注
0文章
624瀏覽量
27454 -
數(shù)據(jù)庫
+關(guān)注
關(guān)注
7文章
3850瀏覽量
64697 -
Oracle
+關(guān)注
關(guān)注
2文章
296瀏覽量
35237
發(fā)布評論請先 登錄
相關(guān)推薦
軟件定義汽車(SDV)開發(fā)有哪些挑戰(zhàn)?SDV開發(fā)策略分享:福特汽車采用Jama Connect提升開發(fā)效率與質(zhì)量
芯片的失效性分析與應(yīng)對方法
![芯片的失效性<b class='flag-5'>分析</b>與<b class='flag-5'>應(yīng)對</b>方法](https://file.elecfans.com/web2/M00/43/36/poYBAGJ82TeAPsAHAAA_r6nG8nE277.jpg)
變頻器的應(yīng)用誤區(qū)和弊端及應(yīng)對策略
海外HTTP安全挑戰(zhàn)與應(yīng)對策略
淺析新能源汽車火災(zāi)原因及對策
![淺析新能源汽車火災(zāi)原因及<b class='flag-5'>對策</b>](https://file1.elecfans.com//web1/M00/F2/AE/wKgaoWcIg2SALD5OAAWSMODlIQw368.png)
人工智能在精益轉(zhuǎn)型中的挑戰(zhàn)與應(yīng)對策略
淺談新能源汽車火災(zāi)原因及對策分析
![淺談新能源汽車火災(zāi)原因及<b class='flag-5'>對策</b><b class='flag-5'>分析</b>](https://file1.elecfans.com//web2/M00/03/BA/wKgZombGkSOAIebSAAUF613UrFA593.png)
評論