最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

有湖有倉(cāng),如何升級(jí)到湖倉(cāng)一體

2023-08-29 10:04 作者:偶數(shù)實(shí)驗(yàn)室  | 我要投稿


在之前的《湖倉(cāng)一體概念快問(wèn)快答》中我們介紹了從湖或倉(cāng)升級(jí)改造到湖倉(cāng)一體的基本思路,有不少小伙伴對(duì)升級(jí)遷移這個(gè)話題很感興趣,希望能講一些比較具體和通用的方法論。所以,本期文章聚焦討論湖倉(cāng)一體升級(jí)改造的可選方案。



很多企業(yè)在過(guò)去的 IT 基礎(chǔ)建設(shè)過(guò)程中,都已經(jīng)搭建了數(shù)據(jù)倉(cāng)庫(kù)或數(shù)據(jù)湖,或者兩者都有。其中數(shù)據(jù)倉(cāng)庫(kù)一般使用的是傳統(tǒng) Oracle 或者傳統(tǒng) MPP 數(shù)據(jù)庫(kù),如 Teradata 和 Greenplum,數(shù)據(jù)湖使用 Hadoop 大數(shù)據(jù)平臺(tái)。所以在考慮湖倉(cāng)一體升級(jí)改造時(shí),就會(huì)有一個(gè)疑問(wèn)——假如企業(yè)既有數(shù)據(jù)湖又有數(shù)據(jù)倉(cāng)庫(kù),該選擇基于湖還是倉(cāng)進(jìn)行湖倉(cāng)一體的升級(jí)改造呢?
討論通過(guò)湖或者倉(cāng)進(jìn)行湖倉(cāng)一體升級(jí),我們要知道現(xiàn)有的數(shù)據(jù)湖和數(shù)據(jù)倉(cāng)庫(kù)分別使用的什么架構(gòu),然后我們才能知道選擇什么路徑,使用什么技術(shù)。

數(shù)據(jù)湖采用了什么技術(shù)?

數(shù)據(jù)湖基本都是基于 Hadoop 構(gòu)建的,底層存儲(chǔ)是 HDFS,因此將數(shù)據(jù)湖改造成湖倉(cāng)一體理論上是可行的,但是需要注意的是,數(shù)據(jù)要采用①開放的格式,以及②存算分離改造。之所以對(duì) Hadoop 平臺(tái)進(jìn)行存算分離改造,是因?yàn)榇蠖鄶?shù)的 Hadoop 部署都是存算耦合的,存算分離改造的最佳方式就是引入支持存算分離、多計(jì)算集群架構(gòu)的分布式數(shù)據(jù)庫(kù)來(lái)實(shí)現(xiàn)數(shù)倉(cāng)/湖/集市的跑批和查詢功能,并且可以和其他多個(gè)引擎(如Spark/Flink 等)共享同一份數(shù)據(jù),數(shù)據(jù)的存儲(chǔ)依然可以使用之前的存儲(chǔ),比如HDFS和對(duì)象存儲(chǔ)。

數(shù)據(jù)倉(cāng)庫(kù)采用了什么技術(shù)?

目前的數(shù)據(jù)倉(cāng)庫(kù)基本都是基于傳統(tǒng)Oracle或者M(jìn)PP 數(shù)據(jù)庫(kù)構(gòu)建的。傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù),尤其是 OLTP 數(shù)據(jù)庫(kù)在海量數(shù)據(jù)的存儲(chǔ)、查詢以及分析方面出現(xiàn)了明顯的性能瓶頸。隨著分布式技術(shù)的產(chǎn)生和發(fā)展,出現(xiàn)了以 Teradata 為代表的 MPP 一體機(jī)數(shù)據(jù)庫(kù),以及 Greenplum 和 Vertica 等軟硬件分離的 MPP 數(shù)據(jù)庫(kù),2000年左右,很多企業(yè)開始采用 MPP 數(shù)據(jù)庫(kù)支持?jǐn)?shù)據(jù)倉(cāng)庫(kù)的建設(shè),當(dāng)然也有一些企業(yè)采用了共享存儲(chǔ)架構(gòu)的 Oracle?;诠蚕泶鎯?chǔ)架構(gòu)的數(shù)據(jù)庫(kù)集群規(guī)模通常在幾十節(jié)點(diǎn),MPP 基本在百節(jié)點(diǎn)級(jí)別,支持?jǐn)?shù)據(jù)體量有限,很難超過(guò) PB 級(jí)別,而且復(fù)雜查詢并發(fā)受限(幾十到百級(jí)別)。



MPP 存算耦合,擴(kuò)展能力有限,而湖倉(cāng)一體架構(gòu)的本質(zhì)要求是存算分離,因此要用支持存算分離、多計(jì)算集群架構(gòu)的分布式數(shù)據(jù)庫(kù)替換原來(lái)的 MPP,并和其他引擎(如 Spark/Flink 等)共享同一份數(shù)據(jù)。因此基于數(shù)倉(cāng)的湖倉(cāng)一體改造路徑是進(jìn)行傳統(tǒng)MPP產(chǎn)品替換,并對(duì)既有模型和應(yīng)用進(jìn)行改造。

如何實(shí)施升級(jí)改造?

實(shí)施遷移改造的方法與新建湖倉(cāng)一體平臺(tái)的方法相似,通過(guò)調(diào)研規(guī)劃、遷移范圍分析、遷移實(shí)施、遷移割接幾個(gè)步驟完成。



現(xiàn)狀調(diào)研

現(xiàn)狀調(diào)研是對(duì)原平臺(tái)現(xiàn)狀調(diào)研,通過(guò)了解現(xiàn)狀,識(shí)別差異,便于接下來(lái)設(shè)計(jì)遷移方案。從數(shù)據(jù)、架構(gòu)、應(yīng)用、管理等維度進(jìn)行分析和評(píng)價(jià),同時(shí)收集好各維度的既有資料。

數(shù)據(jù)來(lái)源

通常情況下原平臺(tái)(數(shù)據(jù)湖或者數(shù)據(jù)倉(cāng)庫(kù))已經(jīng)實(shí)現(xiàn)了不同數(shù)據(jù)源的接入,了解源系統(tǒng)(數(shù)據(jù)來(lái)源系統(tǒng),如業(yè)務(wù)系統(tǒng)、外部數(shù)據(jù)源等)的大致情況,可以在實(shí)施遷移至湖倉(cāng)平臺(tái)前,幫助項(xiàng)目團(tuán)隊(duì)更快了解整體數(shù)據(jù)架構(gòu)。

數(shù)據(jù)體量


明確數(shù)據(jù)湖或者數(shù)據(jù)倉(cāng)庫(kù)的數(shù)據(jù)體量,以便在接下來(lái)的基礎(chǔ)設(shè)施和擴(kuò)張需求方面進(jìn)行合理的設(shè)計(jì)和規(guī)劃,?數(shù)據(jù)總量(GB)?數(shù)據(jù)增量(GB/天或GB/月)?最大表數(shù)據(jù)量(GB)

數(shù)據(jù)類型

從數(shù)據(jù)倉(cāng)庫(kù)遷移至湖倉(cāng)平臺(tái),主要以結(jié)構(gòu)化數(shù)據(jù)為主,而從數(shù)據(jù)湖遷移至湖倉(cāng)平臺(tái)則還要關(guān)注非結(jié)構(gòu)化數(shù)據(jù)、文本數(shù)據(jù)等。

數(shù)據(jù)質(zhì)量

數(shù)據(jù)質(zhì)量通常應(yīng)該由專門的數(shù)據(jù)治理項(xiàng)目來(lái)負(fù)責(zé),但遷移項(xiàng)目的初期仍建議初步了解原數(shù)據(jù)湖或倉(cāng)的數(shù)據(jù)準(zhǔn)確性、完整性、一致性的大致水平。

數(shù)據(jù)模型

企業(yè)之前建立了數(shù)據(jù)倉(cāng)庫(kù)就會(huì)有數(shù)據(jù)模型,這里談到的模型通常是基于業(yè)務(wù)數(shù)據(jù)的邏輯模型。從設(shè)計(jì)到使用至今,數(shù)據(jù)模型應(yīng)該經(jīng)歷了很長(zhǎng)時(shí)間,可能已經(jīng)不能很好的支撐現(xiàn)有的應(yīng)用場(chǎng)景,需要確認(rèn)是否需要升級(jí)。升級(jí)數(shù)據(jù)模型需要注意的是,不同的數(shù)據(jù)層次應(yīng)該有針對(duì)性的使用不同的建模方法。
如果不需要升級(jí),則接下來(lái)進(jìn)行遷移即可;如果需要升級(jí),可以按照原來(lái)的模型設(shè)計(jì)方法進(jìn)行升級(jí),多數(shù)企業(yè)明細(xì)層的邏輯模型都是采用范式建模的方法,因此升級(jí)可以沿用原方式通過(guò)調(diào)研源系統(tǒng)和業(yè)務(wù)需求進(jìn)行數(shù)據(jù)表和數(shù)據(jù)字段的分析。

數(shù)據(jù)ETL

ETL是復(fù)雜的數(shù)據(jù)處理過(guò)程,需要了解現(xiàn)有的數(shù)據(jù)湖或倉(cāng)庫(kù)ETL系統(tǒng)的實(shí)現(xiàn)方式、技術(shù)選型、性能指標(biāo)等。實(shí)現(xiàn)方式要了解數(shù)據(jù)跑批及加工方式(如Perl、存儲(chǔ)過(guò)程或者其他方式),最好提供樣例參考。性能和響應(yīng)方面要確認(rèn)現(xiàn)有平臺(tái)的跑批時(shí)間要求、即席查詢時(shí)間響應(yīng)要求、入庫(kù)時(shí)間要求等,此外要盤點(diǎn)系統(tǒng)每日加載作業(yè)數(shù)量。

數(shù)據(jù)應(yīng)用

了解數(shù)據(jù)應(yīng)用的具體場(chǎng)景和應(yīng)用需求,例如數(shù)據(jù)分析、機(jī)器學(xué)習(xí)等。明確應(yīng)用對(duì)實(shí)時(shí)分析、即席查詢等方面的需求,以及數(shù)據(jù)可視化方面的需求,例如圖表、儀表板、報(bào)表等,針對(duì)有大量系統(tǒng)報(bào)表需求的業(yè)務(wù)場(chǎng)景,應(yīng)注意了解報(bào)表需求數(shù)量和時(shí)效。

基礎(chǔ)設(shè)施

調(diào)研原平臺(tái)基礎(chǔ)設(shè)施情況,如當(dāng)前有多少節(jié)點(diǎn)、單節(jié)點(diǎn)硬件配置。同時(shí)調(diào)研客戶數(shù)據(jù)存儲(chǔ)規(guī)劃,例如需要保存幾年數(shù)據(jù)、幾年后的數(shù)據(jù)總量規(guī)模。調(diào)研基礎(chǔ)設(shè)施規(guī)??梢悦鞔_新平臺(tái)的可用資源,為今后擴(kuò)展做好規(guī)劃。當(dāng)然湖倉(cāng)一體平臺(tái)的本質(zhì)要求存算分離、可擴(kuò)展,使用真正的湖倉(cāng)平臺(tái)在未來(lái)長(zhǎng)期運(yùn)營(yíng)過(guò)程中可以更容易進(jìn)行。此外,原平臺(tái)的CPU利用率、內(nèi)存利用率、磁盤空間、網(wǎng)絡(luò)帶寬、數(shù)據(jù)庫(kù)連接數(shù)等情況也應(yīng)掌握。

平臺(tái)用戶

調(diào)研原平臺(tái)的用戶情況,有助于在系統(tǒng)的性能、技術(shù)選型和平臺(tái)管理等方面進(jìn)行規(guī)劃,保證遷移后的順利使用,如用戶總體規(guī)劃情況、系統(tǒng)使用人數(shù)、系統(tǒng)訪問(wèn)頻次、系統(tǒng)查詢的高峰時(shí)間等。運(yùn)維團(tuán)隊(duì)作為平臺(tái)的特殊用戶群體,其人員構(gòu)成、崗位分工和職責(zé)也應(yīng)進(jìn)行調(diào)研。

管理流程

企業(yè)數(shù)據(jù)管理的相關(guān)流程通常和整個(gè)平臺(tái)技術(shù)路線密切相關(guān),調(diào)研原平臺(tái)管理流程對(duì)遷移的規(guī)劃、實(shí)施和運(yùn)維都有借鑒意義,可以在接下來(lái)湖倉(cāng)平臺(tái)上進(jìn)一步改善和提升。以下是幾個(gè)重要的管理流程。 數(shù)據(jù)需求收集流程; 數(shù)據(jù)開發(fā)和測(cè)試流程,例如數(shù)據(jù)采集、處理、分析等; 監(jiān)控和維護(hù)流程,如數(shù)據(jù)質(zhì)量監(jiān)測(cè)、性能監(jiān)控、故障排查等; 備份和恢復(fù)流程,包括備份頻率、備份存儲(chǔ)、恢復(fù)時(shí)間等; 安全和隱私保護(hù)措施,包括數(shù)據(jù)備份、加密、數(shù)據(jù)授權(quán)等。

資料收集

以上從數(shù)據(jù)、架構(gòu)、應(yīng)用、管理等方面的調(diào)研,通常是對(duì)應(yīng)一些原平臺(tái)既有的標(biāo)準(zhǔn)化文檔和清單,以下是典型且有必要收集的資料。文檔資料:驗(yàn)收文檔、接口規(guī)范、ER圖、操作手冊(cè)等;遷移清單:服務(wù)器清單、接口清單等比較基礎(chǔ)的清單,像ETL作業(yè)清單、庫(kù)、用戶、表、視圖等清單如果有則收集,沒有則將是我們下一步遷移范圍分析的重點(diǎn)工作;最新代碼:ETL作業(yè)及知識(shí)庫(kù)、DDL;流程梳理:系統(tǒng)數(shù)據(jù)流程、日常運(yùn)維流程;其他內(nèi)容:增量接口文件、數(shù)據(jù)庫(kù)訪問(wèn)用戶。

遷移范圍分析

遷移范圍分析是根據(jù)調(diào)研和收集資料內(nèi)容進(jìn)行分析和整理,形成原平臺(tái)遷移范圍說(shuō)明書。遷移內(nèi)容梳理和分析工作貌似可有可無(wú),實(shí)則非常重要,通過(guò)許多實(shí)際的遷移實(shí)施項(xiàng)目,我們發(fā)現(xiàn)精確的范圍分析非常重要。在范圍分析階段,哪怕是少分析了一張表或是一個(gè)視圖,都要推進(jìn)至最終的數(shù)據(jù)校驗(yàn)階段才能被發(fā)現(xiàn),這意味著必須有下一輪的遷移迭代,這個(gè)成本無(wú)疑是巨大的。

作業(yè)分析

通過(guò)作業(yè)依賴關(guān)系分析出原平臺(tái)各層需遷移的作業(yè)范圍清單。作業(yè)范圍分析一般可以通過(guò)作業(yè)依賴血緣圖,逆向分析出各層需遷移的相關(guān)作業(yè)。


腳本分析

由于作業(yè)配置與腳本有一定映射關(guān)系,所以可以根據(jù)前面步驟得到的需遷移作業(yè)范圍清單,分析出需遷移的腳本范圍清單。

模型分析

一般而言,由于各個(gè)腳本中使用的數(shù)據(jù)模型的方式是固定且有限的,所以可以通過(guò)關(guān)鍵字匹配識(shí)別出腳本中使用的所有數(shù)據(jù)模型。因此模型范圍的分析是通過(guò)寫腳本工具,實(shí)現(xiàn)對(duì)上一步驟得到的待遷移腳本范圍清單中所有腳本的批量采集,并獲得需遷移的模型范圍清單。
但這種方式只能識(shí)別部分模型,也就是在腳本中有直接使用到的表和視圖,至于這些表和視圖是怎么加工出來(lái)的,腳本工具就沒辦法獲取到。如果是物理表,它的數(shù)據(jù)血緣可能會(huì)體現(xiàn)在作業(yè)依賴上,當(dāng)然也不一定完全準(zhǔn)確。還有一些需要遷移的視圖、物理表是依賴于其他視圖、物理表生成的,這個(gè)依賴關(guān)系不會(huì)體現(xiàn)在作業(yè)依賴上,只體現(xiàn)在模型語(yǔ)句中,所以這需要在后續(xù)的轉(zhuǎn)換后模型創(chuàng)建步驟中,逐步發(fā)現(xiàn)缺失模型,不斷明確數(shù)據(jù)模型遷移內(nèi)容。

初始化數(shù)據(jù)分析

初始化數(shù)據(jù)范圍分析其實(shí)就是需遷移數(shù)據(jù)范圍分析。這步可能會(huì)比較復(fù)雜,因?yàn)楹芏嘣脚_(tái)負(fù)載太高,數(shù)據(jù)遷移速度不高,所以數(shù)據(jù)遷移范圍需要盡可能的小,同時(shí)又要滿足應(yīng)用加工需求。也就是說(shuō)要在滿足應(yīng)用加工需求的情況下,獲取數(shù)據(jù)遷移范圍的最小集。這就需要范圍分析人員了解應(yīng)用加工模型,以及應(yīng)用加工對(duì)各個(gè)數(shù)據(jù)實(shí)體精確的使用范圍,但通常遷移人員不是很了解應(yīng)用加工,所以只能深入各個(gè)腳本,通過(guò)閱讀代碼去獲取精確的數(shù)據(jù)遷移范圍。
通過(guò)以上的范圍分析,一般能獲取需遷移的作業(yè)范圍、腳本范圍、模型范圍和數(shù)據(jù)范圍,但可能無(wú)法通過(guò)一次分析確定準(zhǔn)確的遷移范圍,大概率需要在后面的遷移過(guò)程中不斷迭代和完善。范圍分析階段可能會(huì)出現(xiàn)的一些常見問(wèn)題如下。作業(yè)依賴不能完全體現(xiàn)原平臺(tái)實(shí)際的加工依賴,導(dǎo)致部分應(yīng)該遷移的內(nèi)容不能通過(guò)最開始的范圍分析梳理出來(lái),有些缺失的范圍需在后續(xù)的測(cè)試、數(shù)據(jù)驗(yàn)證階段發(fā)現(xiàn)。



除對(duì)應(yīng)用加工模型有經(jīng)驗(yàn)豐富人員外,初始化數(shù)據(jù)范圍分析通常需要分析人員通過(guò)深入腳本閱讀代碼的方式來(lái)分析、確定初始化的數(shù)據(jù)范圍,效率較低,且容易有遺漏、缺失。

遷移實(shí)施

模型遷移

模型遷移的“模型”指的是表、視圖等結(jié)構(gòu)。要實(shí)現(xiàn)整體遷移,首先要把模型遷移到湖倉(cāng)平臺(tái)中。在模型遷移范圍分析中,我們已經(jīng)討論過(guò)如何分析出具體有哪些表或者視圖,以及我們?cè)谶w移前對(duì)遷移范圍分析準(zhǔn)確性的預(yù)期。

批量模型轉(zhuǎn)換

根據(jù)原平臺(tái)和湖倉(cāng)一體新平臺(tái)的語(yǔ)法差異,通過(guò)DDL轉(zhuǎn)換工具將舊數(shù)據(jù)庫(kù)中的數(shù)據(jù)模型轉(zhuǎn)化成新數(shù)據(jù)庫(kù)的數(shù)據(jù)模型,生成相應(yīng)的建表語(yǔ)句。就是在新數(shù)據(jù)庫(kù)中有一套與舊數(shù)據(jù)庫(kù)實(shí)現(xiàn)的功能一致的表和視圖。

轉(zhuǎn)換后模型創(chuàng)建

轉(zhuǎn)換后模型創(chuàng)建通常需要耗費(fèi)一定的時(shí)間去迭代才能最終將轉(zhuǎn)換后的模型都創(chuàng)建成功。視圖創(chuàng)建的時(shí)候,容易出現(xiàn)該視圖所需要的其他視圖或者物理表未遷移,而導(dǎo)致該視圖創(chuàng)建不成功的情況。這就需要將該視圖需要的其他視圖或者物理表加入到遷移任務(wù)中,再重新梳理更新需要遷移的作業(yè)內(nèi)容、腳本內(nèi)容、模型內(nèi)容和數(shù)據(jù)內(nèi)容。更新完后,再將新分析并轉(zhuǎn)換完后的模型再進(jìn)行創(chuàng)建,若發(fā)現(xiàn)有模型缺失,則需要再更新各遷移范圍,依此類推,不斷地迭代更新遷移范圍。

腳本空跑

腳本空跑也是驗(yàn)證數(shù)據(jù)模型遷移范圍是否完備的重要一步,只有真正的腳本空跑過(guò)了,才能算是數(shù)據(jù)模型遷移范圍的基本確定,即便最后數(shù)據(jù)驗(yàn)證時(shí)發(fā)現(xiàn)一些模型的缺失,一般也不會(huì)太多。


數(shù)據(jù)遷移

數(shù)據(jù)準(zhǔn)備

數(shù)據(jù)遷移需要保證原平臺(tái)中的數(shù)據(jù)被無(wú)損、快速的裝載到湖倉(cāng)一體平臺(tái)中,因此我們需要開發(fā)數(shù)據(jù)導(dǎo)出和加載的遷移工具來(lái)完成原平臺(tái)到新湖倉(cāng)平臺(tái)的數(shù)據(jù)遷移工作。
數(shù)據(jù)遷移前要對(duì)表進(jìn)行梳理,根據(jù)表的存儲(chǔ)更新策略進(jìn)行分類。數(shù)據(jù)存儲(chǔ)更新策略可以分為當(dāng)前周期快照表、全部周期快照表、增量追加表、拉鏈表、變更日志表。當(dāng)前周期快照表、全部周期快照表相對(duì)較小,采用全量數(shù)據(jù)抽取的方式;增量追加表、拉鏈表通常較大,采用分階段抽取方式。

數(shù)據(jù)初始化

抽取前首先確定初始化切片日期,即以哪個(gè)業(yè)務(wù)日期作為初始化的切片日期。另外,要備份當(dāng)前表,因?yàn)閿?shù)據(jù)初始化是長(zhǎng)期過(guò)程,當(dāng)前表有時(shí)點(diǎn)問(wèn)題,如果某張當(dāng)前表沒有及時(shí)備份,那么等當(dāng)前表開始數(shù)據(jù)初始化遷移時(shí),可能已經(jīng)過(guò)了那個(gè)時(shí)點(diǎn),那么里面的初始化數(shù)據(jù)就是錯(cuò)誤的,所以當(dāng)前表需要及時(shí)備份,初始化時(shí)從備份表遷移數(shù)據(jù)。

數(shù)據(jù)遷移

數(shù)據(jù)抽取分三個(gè)階段,第一階段,截止某一切片日期,完成增量追加表、拉鏈表數(shù)據(jù)抽取,通過(guò)數(shù)據(jù)初始化的方式用數(shù)據(jù)遷移工具,從原平臺(tái)同步到湖倉(cāng)平臺(tái);第二階段補(bǔ)充抽取增量追加表、拉鏈表從上次截止時(shí)間點(diǎn)到今天的歷史數(shù)據(jù),抽取到最新狀態(tài),相當(dāng)于追平原平臺(tái)生產(chǎn)系統(tǒng)的最新數(shù)據(jù);第三階段接入增量數(shù)據(jù)到新系統(tǒng),以滿足新系統(tǒng)的ETL處理及應(yīng)用訪問(wèn)。

數(shù)據(jù)驗(yàn)證

數(shù)據(jù)一致性校驗(yàn)是遷移過(guò)程中最耗時(shí)的一個(gè)環(huán)節(jié),雖然可以采用人工批量的方式去校驗(yàn),但也有必要打磨數(shù)據(jù)一致性校驗(yàn)工具或者借助數(shù)據(jù)同步工具中的自動(dòng)數(shù)據(jù)校驗(yàn)功能,總之要關(guān)注和提升數(shù)據(jù)遷移的效率。數(shù)據(jù)遷移需要批量進(jìn)行驗(yàn)證初始化結(jié)果、范圍是否準(zhǔn)確,主要是確認(rèn)各張表的各個(gè)批次是否有丟失,每個(gè)批次數(shù)據(jù)量是否準(zhǔn)確。

其他處理

針對(duì)拉鏈表要進(jìn)行退鏈,由于初始化截面后的數(shù)據(jù)需要在初始化數(shù)據(jù)的基礎(chǔ)上進(jìn)行跑批加工,所以需要將已經(jīng)閉鏈的截面數(shù)據(jù)進(jìn)行退鏈處理。另外,初始化數(shù)據(jù)可能存在有空格等問(wèn)題需要處理,為了保證數(shù)據(jù)加工的一致性,需要對(duì)遷移后的數(shù)據(jù)統(tǒng)一做去空格處理。

腳本遷移

腳本遷移在整個(gè)遷移中非常重要。腳本的遷移其實(shí)就是語(yǔ)法的遷移,相比數(shù)據(jù)校驗(yàn),腳本遷移雖然不是耗時(shí)最長(zhǎng),但一定是最具技術(shù)挑戰(zhàn)的。腳本遷移我們按照轉(zhuǎn)換規(guī)則整理、工具轉(zhuǎn)換、手工轉(zhuǎn)換、空跑測(cè)試、帶數(shù)測(cè)試、數(shù)據(jù)驗(yàn)證等六個(gè)主要步驟實(shí)施。



轉(zhuǎn)換規(guī)則整理

腳本遷移過(guò)程中包含兩部分內(nèi)容。一部分是數(shù)據(jù)掃描、加載、數(shù)據(jù)校驗(yàn)、業(yè)務(wù)邏輯處理的腳本處理;另一部分是腳本中可能包含的對(duì)數(shù)據(jù)庫(kù)的 INSERT,UPDATE 和DELETE 操作,所以對(duì)腳本的遷移稱為 DML(Database Manipulation Language)遷移。
數(shù)據(jù)掃描加載的目的與 DML 用在處理數(shù)據(jù)倉(cāng)庫(kù)內(nèi)部的轉(zhuǎn)換和加載不同,數(shù)據(jù)掃描和加載是用于將外部數(shù)據(jù)源中的數(shù)據(jù),如將業(yè)務(wù)數(shù)據(jù)庫(kù)中的數(shù)據(jù)(如Oracle、MySQL中的數(shù)據(jù))加載到湖倉(cāng)平臺(tái)的表中,即在 ETL 過(guò)程中的數(shù)據(jù)抽取過(guò)程。
假設(shè)數(shù)據(jù)庫(kù)將數(shù)據(jù)按T+1的時(shí)間周期根據(jù)預(yù)定義的接口格式將數(shù)據(jù)導(dǎo)出到數(shù)據(jù)文件中。我們使用掃描程序定時(shí)掃描由業(yè)務(wù)數(shù)據(jù)庫(kù)中發(fā)送的數(shù)據(jù)文件,并且掃描程序會(huì)將數(shù)據(jù)發(fā)送給調(diào)度工具,通過(guò)在自動(dòng)化調(diào)度工具配置的每晚、每月或者在指定的時(shí)間驅(qū)動(dòng)由數(shù)據(jù)文件到湖倉(cāng)平臺(tái)的數(shù)據(jù)加載。
由于原平臺(tái)的 SQL 在某些細(xì)節(jié)上可能會(huì)和湖倉(cāng)平臺(tái)的 SQL 應(yīng)用有細(xì)微的區(qū)別,因此我們需要對(duì)這些有變化的 SQL 進(jìn)行改寫,在SQL處理過(guò)程中主要有三類內(nèi)容的需要處理:函數(shù)轉(zhuǎn)換、事務(wù)處理、多表關(guān)聯(lián)處理。
為了保證轉(zhuǎn)換后 DML 腳本轉(zhuǎn)換后的可用性和一致性,我們使用如下原則進(jìn)行轉(zhuǎn)換:? 保證原有業(yè)務(wù)邏輯、算法等功能的正確運(yùn)行? DML腳本和其他程序流程盡少改變? DML腳本或其他文件盡量少進(jìn)行修改? 轉(zhuǎn)換過(guò)程可以模式化

工具轉(zhuǎn)換

在原平臺(tái),尤其是傳統(tǒng)數(shù)倉(cāng)庫(kù)各個(gè)數(shù)據(jù)層次之間的 ETL 過(guò)程很多是通過(guò)腳本來(lái)完成的,腳本在自動(dòng)化調(diào)度工具的控制下來(lái)完成各數(shù)據(jù)層次之間的數(shù)據(jù)抽取、清理和轉(zhuǎn)換。遷移實(shí)施團(tuán)隊(duì)需要制作腳本自動(dòng)遷移工具,根據(jù)實(shí)際經(jīng)驗(yàn),腳本遷移工具都能實(shí)現(xiàn)90%以上的腳本自動(dòng)遷移。

手工轉(zhuǎn)換

自動(dòng)化工具可能無(wú)法處理處理復(fù)雜的腳本邏輯或者語(yǔ)法間的差異,對(duì)于不能實(shí)現(xiàn)自動(dòng)轉(zhuǎn)換的部分,需要根據(jù)一定的規(guī)則人工轉(zhuǎn)換。當(dāng)然,手工轉(zhuǎn)換也可能需要更多的時(shí)間和精力,容易出現(xiàn)錯(cuò)誤,不易管理,這也是為什么在很多大型的遷移項(xiàng)目中自動(dòng)腳本工具能夠完成超過(guò)95%的腳本轉(zhuǎn)換。

空跑測(cè)試

腳本遷移過(guò)程中進(jìn)行空跑測(cè)試是為了在實(shí)際運(yùn)行之前驗(yàn)證遷移后的腳本是否能夠在新環(huán)境中正常運(yùn)行。空跑測(cè)試是一種在模擬環(huán)境中運(yùn)行腳本,但實(shí)際上不會(huì)產(chǎn)生實(shí)際影響的測(cè)試方式。
遷移到新環(huán)境后,可能存在語(yǔ)法差異、編程語(yǔ)言版本不同等問(wèn)題??张軠y(cè)試可以幫助驗(yàn)證腳本是否符合新環(huán)境的語(yǔ)法和語(yǔ)義規(guī)則。同時(shí), 空跑測(cè)試能夠及早發(fā)現(xiàn)潛在的錯(cuò)誤,如變量名拼寫錯(cuò)誤、函數(shù)調(diào)用問(wèn)題等,從而減少在實(shí)際運(yùn)行中可能遇到的問(wèn)題。

帶數(shù)測(cè)試

帶數(shù)測(cè)試可以驗(yàn)證遷移后的腳本是否能夠正確處理真實(shí)數(shù)據(jù),執(zhí)行期望的邏輯和操作。在帶數(shù)測(cè)試中,可以發(fā)現(xiàn)在空跑測(cè)試中可能未暴露出的問(wèn)題。這可能包括數(shù)據(jù)轉(zhuǎn)換錯(cuò)誤、數(shù)據(jù)格式問(wèn)題、字段長(zhǎng)度等。

數(shù)據(jù)驗(yàn)證

數(shù)據(jù)驗(yàn)證可以驗(yàn)證遷移后的腳本是否在處理數(shù)據(jù)時(shí)保持了數(shù)據(jù)的準(zhǔn)確性,確保生成的結(jié)果與預(yù)期一致。檢查遷移后的腳本是否正確地處理了所有數(shù)據(jù)記錄,沒有丟失或遺漏任何數(shù)據(jù)。

作業(yè)遷移

調(diào)度里最小的單位是作業(yè)(JOB),作業(yè)遷移主要是將原本在原數(shù)據(jù)平臺(tái)調(diào)度系統(tǒng)中的作業(yè)配置及作業(yè)參數(shù)遷移到湖倉(cāng)一體平臺(tái)目標(biāo)調(diào)度系統(tǒng)中。作業(yè)的范圍由第一階段范圍分析及后續(xù)迭代版本產(chǎn)生。作業(yè)的準(zhǔn)確性需要由后續(xù)的跑批及數(shù)據(jù)準(zhǔn)確性來(lái)驗(yàn)證。為了保證跑批的準(zhǔn)確性,項(xiàng)目實(shí)施應(yīng)保證調(diào)度組、頻度、作業(yè)前置依賴等信息要與舊數(shù)據(jù)庫(kù)調(diào)度完全一致。如果舊調(diào)度新增或者變更,需要同步新增或者變更到新的調(diào)度中。

應(yīng)用遷移

應(yīng)用的遷移其實(shí)質(zhì)是將原平臺(tái)應(yīng)用中的標(biāo)準(zhǔn)擴(kuò)展 SQL 轉(zhuǎn)化成湖倉(cāng)一體平臺(tái)的目標(biāo)SQL,同時(shí)還要處理原平臺(tái)中的存儲(chǔ)過(guò)程、觸發(fā)器和用戶自定義函數(shù)等。應(yīng)用遷移需要設(shè)計(jì)開發(fā)文件輸出功能,對(duì)接下游系統(tǒng)。同時(shí)適配原有應(yīng)用接口,使得應(yīng)用通過(guò)JDBC/ODBC接口直接訪問(wèn)湖倉(cāng)平臺(tái)。典型的數(shù)據(jù)應(yīng)用包括報(bào)表、即席查詢、數(shù)據(jù)分析、機(jī)器學(xué)習(xí)等。

任務(wù)核對(duì)

核對(duì)標(biāo)任務(wù)的作業(yè)、腳本、報(bào)表等任務(wù),單元測(cè)試和集成測(cè)試過(guò)程中進(jìn)行多維度,多組合條件的任務(wù)核對(duì)測(cè)試。

性能優(yōu)化

開發(fā)階段針對(duì)數(shù)據(jù)庫(kù)級(jí)優(yōu)化、DDL 表級(jí)優(yōu)化,在上線后對(duì)性較慢 SQL 進(jìn)行優(yōu)化。

遷移割接

為了保證遷移實(shí)施過(guò)程中業(yè)務(wù)的穩(wěn)定性和平滑過(guò)渡,整個(gè)數(shù)據(jù)遷移實(shí)施會(huì)經(jīng)過(guò)三個(gè)階段的推進(jìn),這三個(gè)階段的劃分在數(shù)據(jù)遷移的部分也已經(jīng)討論過(guò)。第一個(gè)階段是首先確定時(shí)間窗口,完成全量表遷移,之后完成歷史數(shù)據(jù)遷移;第二階段是數(shù)據(jù)遷移同步完成后,通過(guò)任務(wù)追平遷移數(shù)據(jù)窗口后產(chǎn)生的數(shù)據(jù),系統(tǒng)進(jìn)入并行期,驗(yàn)證遷移后數(shù)據(jù)的正確及功能的適配;第三階段是新系統(tǒng)正式上線,原平臺(tái)下線,實(shí)現(xiàn)湖倉(cāng)平臺(tái)及應(yīng)用的完整切換,最終關(guān)閉原平臺(tái)流程,完成整個(gè)平臺(tái)的遷移。下圖分別為各階段過(guò)程。


有湖有倉(cāng),如何升級(jí)到湖倉(cāng)一體的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
彝良县| 屏南县| 保亭| 灵丘县| 喜德县| 万全县| 师宗县| 务川| 文化| 广宗县| 兰西县| 嵊州市| 育儿| 文成县| 德惠市| 永嘉县| 岳阳县| 香格里拉县| 巴彦县| 门头沟区| 浮山县| 五大连池市| 隆子县| 格尔木市| 丘北县| 江北区| 台南县| 涪陵区| 沅江市| 南华县| 镇赉县| 大理市| 广昌县| 兴业县| 蕉岭县| 霞浦县| 三门峡市| 临城县| 赤水市| 南汇区| 徐州市|