您好,歡迎來電子發(fā)燒友網(wǎng)! ,新用戶?[免費(fèi)注冊(cè)]

您的位置:電子發(fā)燒友網(wǎng)>源碼下載>數(shù)值算法/人工智能>

實(shí)例分析OLTP類系統(tǒng)數(shù)據(jù)結(jié)轉(zhuǎn)

大?。?/span>0.7 MB 人氣: 2017-09-30 需要積分:1

  業(yè)務(wù)系統(tǒng)在長(zhǎng)期運(yùn)行的過程中會(huì)積累大量的數(shù)據(jù),這些數(shù)據(jù)有些是需要長(zhǎng)期保存的,例如一些訂單數(shù)據(jù),有些只需要短期保存,例如一些日志信息。業(yè)務(wù)數(shù)據(jù)一般都會(huì)有一個(gè)生命周期,生命周期內(nèi)的我們叫生產(chǎn)數(shù)據(jù),生命周期之外(即業(yè)務(wù)已經(jīng)關(guān)閉)的叫歷史數(shù)據(jù),我們這里提到的數(shù)據(jù)結(jié)轉(zhuǎn),指的是將需要長(zhǎng)期保存的歷史數(shù)據(jù)從生產(chǎn)庫(kù)遷移到歷史庫(kù)(轉(zhuǎn)),而將需要短期保存的數(shù)據(jù)定期刪除(結(jié))。

  我們已經(jīng)進(jìn)入了大數(shù)據(jù)時(shí)代,但在OLTP類系統(tǒng)中,關(guān)系型數(shù)據(jù)庫(kù)依然占據(jù)主導(dǎo)地位,在關(guān)系型數(shù)據(jù)庫(kù)中,如果不及時(shí)進(jìn)行數(shù)據(jù)結(jié)轉(zhuǎn),會(huì)嚴(yán)重影響系統(tǒng)的性能。

  關(guān)系型數(shù)據(jù)庫(kù)單機(jī)容量有限,因此業(yè)界普遍的做法是進(jìn)行垂直分庫(kù)和水平分片,一些大型互聯(lián)網(wǎng)企業(yè)由于業(yè)務(wù)量龐大,僅分片的集群規(guī)模就能達(dá)到上千節(jié)點(diǎn),再加上分庫(kù)的集群,規(guī)模非常巨大。傳統(tǒng)的數(shù)據(jù)歸檔方法往往針對(duì)單庫(kù)操作,難以處理如此大規(guī)模集群的數(shù)據(jù)歸檔。

  同時(shí),在大型互聯(lián)網(wǎng)企業(yè),每日的數(shù)據(jù)增長(zhǎng)量非常大,數(shù)據(jù)結(jié)轉(zhuǎn)的頻率遠(yuǎn)大于傳統(tǒng)行業(yè),這些行業(yè)的IT系統(tǒng)往往是7*24小時(shí)不間斷提供服務(wù),而且全天24小時(shí)的并發(fā)量都很大,因此數(shù)據(jù)結(jié)轉(zhuǎn)操作必須盡量減少對(duì)生產(chǎn)庫(kù)的性能影響。

  為此,我們自主研發(fā)了數(shù)據(jù)結(jié)轉(zhuǎn)平臺(tái),以解決大數(shù)據(jù)背景下的數(shù)據(jù)結(jié)轉(zhuǎn)問題。

  二、 技術(shù)架構(gòu)

  2.1 設(shè)計(jì)要點(diǎn)

 ?。?)盡量減少對(duì)生產(chǎn)庫(kù)的影響

  數(shù)據(jù)結(jié)轉(zhuǎn)操作沒有復(fù)雜的業(yè)務(wù)邏輯,因此對(duì)數(shù)據(jù)庫(kù)性能的影響主要體現(xiàn)在IO方面,減少對(duì)生產(chǎn)庫(kù)的影響,最主要的就是減少對(duì)生產(chǎn)庫(kù)的IO操作。目前我們采用的方案是通過從庫(kù)查詢數(shù)據(jù),將數(shù)據(jù)插入歷史庫(kù),然后再?gòu)闹鲙?kù)中刪除,如圖1數(shù)據(jù)結(jié)轉(zhuǎn)邏輯圖所示,將查詢的IO操作轉(zhuǎn)嫁到從庫(kù)上,可以大大減輕對(duì)主庫(kù)的影響。為了保障數(shù)據(jù)庫(kù)的高可用,業(yè)內(nèi)基本都采用了主從部署模式,因此這個(gè)方案具有很高的通用性。

  實(shí)例分析OLTP類系統(tǒng)數(shù)據(jù)結(jié)轉(zhuǎn)

  圖1 數(shù)據(jù)結(jié)轉(zhuǎn)邏輯圖

  (2)支持分庫(kù)分片集群

  我們希望數(shù)據(jù)結(jié)轉(zhuǎn)平臺(tái)的配置足夠簡(jiǎn)單并且易于理解。在和用戶的溝通過程中,我們發(fā)現(xiàn)他們最強(qiáng)烈的需求就是分庫(kù)分片集群的數(shù)據(jù)結(jié)轉(zhuǎn)。傳統(tǒng)的單機(jī)數(shù)據(jù)結(jié)轉(zhuǎn)操作可以抽象描述為:將數(shù)據(jù)庫(kù)實(shí)例A中表B的歷史數(shù)據(jù)結(jié)轉(zhuǎn)到歷史庫(kù)C,用戶的配置主要有4個(gè)元素:生產(chǎn)庫(kù)實(shí)例A、結(jié)轉(zhuǎn)表B、結(jié)轉(zhuǎn)條件和歷史庫(kù)。對(duì)于大規(guī)模的分庫(kù)分片集群規(guī)模,如果采用傳統(tǒng)單機(jī)數(shù)據(jù)結(jié)轉(zhuǎn)的配置方式,每一個(gè)數(shù)據(jù)庫(kù)實(shí)例都要配置4個(gè)元素,配置量非常大。

  在我們的方案中,按照?qǐng)D2所示對(duì)數(shù)據(jù)庫(kù)集群進(jìn)行劃分,將主庫(kù)、從庫(kù)、歷史庫(kù)作為一個(gè)結(jié)轉(zhuǎn)單元,對(duì)于分片的數(shù)據(jù)庫(kù)集群,表結(jié)構(gòu)相同,我們將其作為一個(gè)分組,對(duì)于分庫(kù)的集群,表結(jié)構(gòu)不同則劃分為不同的分組。用戶進(jìn)行配置的時(shí)候不是面向一個(gè)數(shù)據(jù)庫(kù)實(shí)例,而是面向一個(gè)分組,數(shù)據(jù)結(jié)轉(zhuǎn)操作抽象為:結(jié)轉(zhuǎn)分組X中表B的歷史數(shù)據(jù),用戶的配置元素有3個(gè):分組X、結(jié)轉(zhuǎn)表B和結(jié)轉(zhuǎn)條件。分組信息僅需配置一次。這樣大大簡(jiǎn)化了用戶的配置工作。

 ?。?)支持水平擴(kuò)展

  由于數(shù)據(jù)庫(kù)集群規(guī)模較大,數(shù)據(jù)結(jié)轉(zhuǎn)平臺(tái)應(yīng)該具備水平擴(kuò)展能力。我們采用的方案是將數(shù)據(jù)結(jié)轉(zhuǎn)最核心的組件定時(shí)任務(wù)和數(shù)據(jù)庫(kù)操作(數(shù)據(jù)結(jié)轉(zhuǎn)執(zhí)行器)獨(dú)立出來,進(jìn)行分布式部署。如下圖3所示,

  實(shí)例分析OLTP類系統(tǒng)數(shù)據(jù)結(jié)轉(zhuǎn)

  圖2 數(shù)據(jù)庫(kù)集群模型

  配置中心為用戶的入口,用戶通過配置中心定義數(shù)據(jù)結(jié)轉(zhuǎn)任務(wù),任務(wù)的關(guān)鍵屬性包括:觸發(fā)條件、執(zhí)行條件、目標(biāo)分組等,配置中心將結(jié)轉(zhuǎn)任務(wù)分發(fā)給代理程序,同時(shí)對(duì)代理程序的執(zhí)行狀態(tài)進(jìn)行監(jiān)控。結(jié)轉(zhuǎn)任務(wù)的觸發(fā)條件配置在代理程序中的定時(shí)任務(wù)中,而執(zhí)行條件和目標(biāo)分組則作為數(shù)據(jù)結(jié)轉(zhuǎn)執(zhí)行器的執(zhí)行參數(shù)。通過水平擴(kuò)展代理程序,我們對(duì)更多的數(shù)據(jù)庫(kù)進(jìn)行結(jié)轉(zhuǎn)。

非常好我支持^.^

(0) 0%

不好我反對(duì)

(0) 0%

實(shí)例分析OLTP類系統(tǒng)數(shù)據(jù)結(jié)轉(zhuǎn)下載

      發(fā)表評(píng)論

      用戶評(píng)論
      評(píng)價(jià):好評(píng)中評(píng)差評(píng)

      發(fā)表評(píng)論,獲取積分! 請(qǐng)遵守相關(guān)規(guī)定!

      ?