Prestomall 是一家成立於 2014 年的東南亞電商企業,此前這家企業一直使用的是 Oracle 數據庫。全部業務所有由一套 Oracle 數據庫支持,同時還有一套 Oracle 數據庫用來支撐測試環境。數據庫
2018 年 8 月,距離 Oracle 數據庫軟件受權證到期還有 3 個月的時間,Prestomall 決定再也不使用 Oracle 數據庫,並開始尋找替代方案。爲何 Prestomall 決定在這個時候去 Oracle 呢?選定的替代方案是什麼呢?整個遷移過程又是如何作的?...... 爲了搞清楚這些問題,InfoQ 採訪了參與 Prestomall 去 Oracle 全過程的阿里雲技術團隊。安全
過去幾年,隨着整個東南亞移動互聯網的發展,Prestomall 也迎來了增加黃金期。以營收規模計算,過去 3 個財年,該公司實現了 256% 的增加。Prestomall 業務的成功使得公司須要處理的數據量出現井噴式的增加,IT 費用也隨之水漲船高,這也是 Prestomall 決定去 Oracle 的主要緣由。架構
Oracle 的 License 費用過高了,隨着 Prestomall 客戶量和數據量的增長,這部分費用佔據了大部分的 IT 預算,制約了其業務的發展,因此在受權還剩三個月的時候,Prestomall 開始尋找 Oracle 的替代方案。分佈式
另外,隨着業務的快速發展,現有的 Oracle 數據庫垂直架構限制了其彈性增加的需求,傳統數據庫不適應快速的互聯網 + 發展,這也使得 Prestomall 下定決心替換 Oracle。學習
減小 IT 費用是 Prestomall 去 Oracle 的主要緣由,因此最初在選擇替代方案時,IT 費用是一個重要的指標,同時因爲受權即將到期,遷移時間也是須要考慮的重要因素。測試
最開始的選型方案:更傾向於開源數據庫阿里雲
據瞭解,Prestomall 最初想到的替代方案有三種,分別是:spa
Prestomall 想要完全去 Oracle,擺脫傳統傳統商業數據庫廠商的鎖定,因此排除了第一種和第三種方案。其實保留 Oracle 或者使用其它商業數據庫本就是權宜之舉,除非沒有可行的辦法或者時間來不及,纔會保留 Oracle,畢竟業務的正常運行是必需要保障的事情。不過,Prestomall 團隊也意識到,若是繼續拖延的話,將來去 Oracle 的困難和挑戰將會更大。調試
通過一番評估以後,Prestomall 團隊更傾向於選擇開源數據。在備選的開源數據庫產品中,PostgreSQL 比 MySQL 提供了更多的 SQL 功能,應用方面也與 Oracle 更加貼近,而且遷移成本也較低,天然成爲了技術選型的第一選擇。
在有了初步的技術選型以後,Prestomall 團隊就遷移方案作了進一步細化的評估:rest
第一, 選取的數據庫與已有的 Oracle 有多大的兼容性 ?
第二, 延用已有的本地部署解決方案,仍是遷移上雲?
第三, 遷移的工做量和時間究竟會多久?
第四, 採用新的技術方案,是否有足夠的技術支持?
最終選型方案:PolarDB + ADAM + DTS + 專家服務
Prestomall 最終選定的替代方案是 PolarDB + ADAM + DTS + 專家服務。說實話,這個方案有點出人意料,畢竟最開始這個方案並無出如今 Prestomall 的選擇列表中,並且 Prestomall 原有的 Oracle 數據庫是部署在本地的,選擇了 PolarDB 就意味着數據庫要遷移上雲。
最終方案中的 PolarDB 是阿里雲自主研發的關係型分佈式雲原生數據庫,兼容三種數據庫引擎:MySQL、PostgreSQL、高度兼容 Oracle 語法;ADAM 是數據庫和應用遷移服務,可覆蓋 Oracle 遷移的全生命週期;DTS 支持 RDBMS、NoSQL、OLAP 等數據源間的數據交互,集數據遷移 / 訂閱 / 同步於一體。
那麼,爲何最終會選擇這個方案呢?阿里雲數據庫與應用遷移產品總監楊霖表示主要緣由其實有三個:
🔸一是上雲適配業務發展。以前 Prestomall 使用的是本地 Oracle 數據庫,而選擇 PolarDB 就能夠享受到雲數據庫彈性擴展的能力,按需申請資源,對於電商企業而言這種模式很是適配業務。
🔸二是遷移成本最優。這裏的成本不僅僅是指遷移後數據庫資源的使用費用,同時也包括了遷移的工做量、代碼的修改量以及遷移時間等其它成本。通過評估,PolarDBD 與 Oracle 數據庫的兼容性很是高,總體遷移成本最優。
🔸三是風險總體可控,技術支持有保障。2000 年,阿里開始使用 Oracle 數據庫,2008 年,決定去 Oracle 數據庫。當前 Prestomall 的遭遇,跟十年前的阿里同樣,而在過去十幾年中,阿里的技術人員趟出了從 Oracle-RAC 數據庫到 PolarDB,從雲下到雲上的搬遷,積累了不少經驗,並沉澱了相似 ADAM、DTS 這樣的產品。這些成功經驗對 Prestomall 來講有着很大的吸引力。
據透露,在最初的提案階段,阿里雲數據庫團隊經過 ADAM 給出了一個超詳細的改造計劃,包括 DB 層面如何去自動映射、自動解析、自動轉換,以及應用層每一行代碼如何改造。同時,還對不一樣數據庫產品的兼容性作了比較定量的代碼改造分析。
阿里雲數據庫國際站產品負責人德邁介紹:「使用 ADAM 分析以後,咱們發現,若是不使用 ADAM,從 Oracle 遷移到 PostgreSQL,80% 以上的代碼是須要修改的,若是使用 ADAM 遷移到 PostgreSQL,10% 左右的代碼是須要修改的,而若是遷移到 PolarDB,只有 5% 的代碼是須要修改的。」而這也是 PolarDB 入選最終遷移方案的重要緣由。
肯定了遷移方案以後,接下來要作的就是具體的遷移工做了。據瞭解,Prestomall 整個去 Oracle 能夠六個階段:
🔸第一步是去 Oracle 的技術選型,前面咱們詳細介紹了選型過程,這裏再也不贅述。
🔸第二步是去 Oracle 的賦能,即在實現與 Oracle 數據庫解耦的同時,實現業務 IT 架構升級,得到更大的業務自由度。
🔸第三步是業務改造,對於全部想要去 Oracle 的客戶來講,這是最難的部分。業務改造面臨的兩大問題是工做量評估和兼容性。
🔸第四步是數據遷移,不只要保證全量和增量數據的一致性,同時還要提供數據迴流的能力,讓數據上得來下得去。
🔸第五步是測試與調優,雖然 PolarDB 與 Oracle 兼容,可是始終是兩個產品,各自有各自的產品特性,所以遷移上去以後還須要作進一步的調試。
🔸第六步是割接與護航,在完成上線割接以後,還會有兩個星期的阿里技術專家的保駕護航。
值得一提的是,在遷移過程當中,ADAM 有兩個功能發揮了很大的做用,一個是自動轉換的功能,能夠幫助使用者將原有的 Oracle SQL 自動改形成 PolarDB 兼容的 SQL。另外一個是自動學習功能,雖然 PolarDB 與 Oracle 是高度兼容的,但也會有語法差別,而 ADAM 的 SQL 語法染色功能會使用不一樣的顏色來標註語法差別,幫助使用者快速領悟到語法差別規則。
據瞭解,目前 Prestomall 的業務流量幾乎所有遷移到了 PolarDB 上,只剩郵件系統中的兩張表還在作反向同步。
另外提到數據庫遷移,不少人都會關心安全性的問題,尤爲 Prestomall 做爲東南亞的一家電商平臺,在流程方面會更關注業務保護。據阿里雲高級 DBA 專家鄭旦介紹,在數據保護和業務穩定方面,阿里雲主要作了兩個層面的工做:第一個層面,DTS 不只完成了數據遷移的工做,同時還在這個過程當中作了數據校驗;第二個層面,ADAM 對 Prestomall 系統的兼容性和兼容性結果作了一致性的檢查。
業界一直有「天下苦 Oracle 久矣」的說法,可是在實際去 Oracle 的過程當中,總會犯難。那麼,業界在去 Oracle 實踐時,一般都有哪些選擇呢?
查看更多:https://yqh.aliyun.com/detail..._content=g_1000104983
上雲就看雲棲號:更多雲資訊,上雲案例,最佳實踐,產品入門,訪問:https://yqh.aliyun.com/