本發(fā)明涉及數(shù)據(jù)處理技術(shù)領(lǐng)域,具體地說(shuō)是一種實(shí)用性強(qiáng)、分布式系統(tǒng)數(shù)據(jù)提取方法。
背景技術(shù):
分布式數(shù)據(jù)庫(kù)系統(tǒng)包含分布式數(shù)據(jù)庫(kù)管理系統(tǒng)和分布式數(shù)據(jù)庫(kù),即分布式系統(tǒng)和目標(biāo)庫(kù)系統(tǒng)。在分布式數(shù)據(jù)庫(kù)系統(tǒng)中,一個(gè)應(yīng)用程序可以對(duì)數(shù)據(jù)庫(kù)進(jìn)行透明操作,數(shù)據(jù)庫(kù)中的數(shù)據(jù)分別在不同的局部數(shù)據(jù)庫(kù)中存儲(chǔ)、由不同的 DBMS進(jìn)行管理、在不同的機(jī)器上運(yùn)行、由不同的操作系統(tǒng)支持、被不同的通信網(wǎng)絡(luò)連接在一起。
一個(gè)分布式數(shù)據(jù)庫(kù)在邏輯上是一個(gè)統(tǒng)一的整體,在物理上則是分別存儲(chǔ)在不同的物理節(jié)點(diǎn)上。一個(gè)應(yīng)用程序通過(guò)網(wǎng)絡(luò)的連接可以訪問(wèn)分布在不同地理位置的數(shù)據(jù)庫(kù)。它的分布性表現(xiàn)在數(shù)據(jù)庫(kù)中的數(shù)據(jù)不是存儲(chǔ)在同一場(chǎng)地。更確切地講,不存儲(chǔ)在同一計(jì)算機(jī)的存儲(chǔ)設(shè)備上。這就是與集中式數(shù)據(jù)庫(kù)的區(qū)別。從用戶的角度看,一個(gè)分布式數(shù)據(jù)庫(kù)系統(tǒng)在邏輯上和集中式數(shù)據(jù)庫(kù)系統(tǒng)一樣,用戶可以在任何一個(gè)場(chǎng)地執(zhí)行全局應(yīng)用。就好像那些數(shù)據(jù)是存儲(chǔ)在同一臺(tái)計(jì)算機(jī)上,有單個(gè)數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)管理一樣,用戶并沒(méi)有什么感覺(jué)不一樣。
分布式數(shù)據(jù)庫(kù)系統(tǒng)是在集中式數(shù)據(jù)庫(kù)系統(tǒng)的基礎(chǔ)上發(fā)展起來(lái)的,是計(jì)算機(jī)技術(shù)和網(wǎng)絡(luò)技術(shù)結(jié)合的產(chǎn)物。
在現(xiàn)有的分布式數(shù)據(jù)庫(kù)系統(tǒng)中,經(jīng)常要進(jìn)行數(shù)據(jù)提取,但現(xiàn)有的數(shù)據(jù)提取方案不能很好的確保分布式系統(tǒng)中數(shù)據(jù)和目標(biāo)庫(kù)數(shù)據(jù)一致,可用性不強(qiáng),而且數(shù)據(jù)提取都是單獨(dú)進(jìn)行,數(shù)據(jù)的提取率也不高,基于此,現(xiàn)提供一種分布式系統(tǒng)數(shù)據(jù)提取方法。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的技術(shù)任務(wù)是針對(duì)以上不足之處,提供一種實(shí)用性強(qiáng)、分布式系統(tǒng)數(shù)據(jù)提取方法。
一種分布式系統(tǒng)數(shù)據(jù)提取方法,其實(shí)現(xiàn)過(guò)程為:
首先將分布式系統(tǒng)數(shù)據(jù)通過(guò)RocketMQ傳輸?shù)侥繕?biāo)庫(kù)中的臨時(shí)表中,當(dāng)各個(gè)分布式系統(tǒng)的數(shù)據(jù)都傳輸完畢之后,通過(guò)數(shù)據(jù)開(kāi)放功能將目標(biāo)庫(kù)中的臨時(shí)表數(shù)據(jù)轉(zhuǎn)儲(chǔ)到正式表中;
每天通過(guò)數(shù)據(jù)校驗(yàn)功能,定時(shí)校驗(yàn)?zāi)繕?biāo)庫(kù)數(shù)據(jù)和分布式系統(tǒng)數(shù)據(jù)是否一致,不一致的情況通過(guò)Kettle工具進(jìn)行數(shù)據(jù)補(bǔ)救,確保分布式系統(tǒng)數(shù)據(jù)和目標(biāo)庫(kù)數(shù)據(jù)一致。
將分布式系統(tǒng)數(shù)據(jù)通過(guò)RocketMQ傳輸?shù)侥繕?biāo)庫(kù)中的臨時(shí)表中的具體過(guò)程為:
在分布式系統(tǒng)中設(shè)置數(shù)據(jù)上傳定時(shí)器,數(shù)據(jù)上傳定時(shí)器定時(shí)調(diào)用應(yīng)用程序,應(yīng)用生產(chǎn)者讀取存放數(shù)據(jù)的數(shù)據(jù)庫(kù),將數(shù)據(jù)傳輸?shù)侥繕?biāo)庫(kù)系統(tǒng)中的RocketMQ隊(duì)列中;
目標(biāo)庫(kù)系統(tǒng)中RocketMQ隊(duì)列將數(shù)據(jù)推送給應(yīng)用消費(fèi)者,應(yīng)用消費(fèi)者將接收到的數(shù)據(jù)插入到目標(biāo)庫(kù)的臨時(shí)表中。
數(shù)據(jù)傳輸?shù)侥繕?biāo)庫(kù)系統(tǒng)的過(guò)程中記錄生產(chǎn)者日志,便于監(jiān)控?cái)?shù)據(jù)生產(chǎn)情況;數(shù)據(jù)插入到目標(biāo)庫(kù)過(guò)程中記錄消費(fèi)者日志,便于監(jiān)控?cái)?shù)據(jù)消費(fèi)情況。
通過(guò)目標(biāo)庫(kù)系統(tǒng)中數(shù)據(jù)開(kāi)放功能將臨時(shí)表數(shù)據(jù)轉(zhuǎn)儲(chǔ)到正式表的具體過(guò)程為:
在目標(biāo)庫(kù)系統(tǒng)中設(shè)置數(shù)據(jù)開(kāi)放定時(shí)器,該數(shù)據(jù)開(kāi)放定時(shí)器調(diào)用數(shù)據(jù)開(kāi)放功能,數(shù)據(jù)開(kāi)放功能校驗(yàn)?zāi)繕?biāo)庫(kù)中數(shù)據(jù)跟分布式系統(tǒng)中數(shù)據(jù)是否一致,如果數(shù)據(jù)一致,則將目標(biāo)庫(kù)中臨時(shí)表數(shù)據(jù)轉(zhuǎn)儲(chǔ)到目標(biāo)庫(kù)正式表中,該過(guò)程記錄數(shù)據(jù)開(kāi)放日志,便于監(jiān)控?cái)?shù)據(jù)開(kāi)放情況。
當(dāng)數(shù)據(jù)開(kāi)放定時(shí)器校驗(yàn)數(shù)據(jù)不一致時(shí),根據(jù)數(shù)據(jù)開(kāi)放日志排查出原因,進(jìn)行數(shù)據(jù)補(bǔ)救,當(dāng)目標(biāo)庫(kù)臨時(shí)表數(shù)據(jù)和目標(biāo)庫(kù)正式表數(shù)據(jù)一致之后,數(shù)據(jù)手工開(kāi)放功能將目標(biāo)庫(kù)中臨時(shí)表數(shù)據(jù)轉(zhuǎn)儲(chǔ)到目標(biāo)庫(kù)正式表中,在該補(bǔ)救過(guò)程中更新數(shù)據(jù)開(kāi)放日志,便于監(jiān)控?cái)?shù)據(jù)開(kāi)放情況。
本發(fā)明的一種分布式系統(tǒng)數(shù)據(jù)提取方法,具有以下優(yōu)點(diǎn):
該發(fā)明的一種分布式系統(tǒng)數(shù)據(jù)提取方法,采用先將數(shù)據(jù)插入到目標(biāo)庫(kù)的臨時(shí)表中,然后采用數(shù)據(jù)開(kāi)放功能校驗(yàn)分布式系統(tǒng)中數(shù)據(jù)和目標(biāo)庫(kù)中數(shù)據(jù)是否一致,數(shù)據(jù)一致的情況下才轉(zhuǎn)儲(chǔ)到正式表,確保了抽取數(shù)據(jù)一致性;使用數(shù)據(jù)校驗(yàn)功能,定時(shí)每天校驗(yàn)分布式系統(tǒng)中歷史數(shù)據(jù)跟目標(biāo)庫(kù)中歷史數(shù)據(jù)是否一致,發(fā)現(xiàn)不一致的情況下,使用kettle工具進(jìn)行歷史數(shù)據(jù)補(bǔ)救,確保了歷史數(shù)據(jù)的一致性;在分布式系統(tǒng)端,數(shù)據(jù)提取的過(guò)程是并行進(jìn)行的,提高了數(shù)據(jù)提取效率;分布式系統(tǒng)中數(shù)據(jù)生產(chǎn)過(guò)程、目標(biāo)系統(tǒng)中數(shù)據(jù)消費(fèi)過(guò)程和數(shù)據(jù)開(kāi)放過(guò)程中都進(jìn)行日志記錄,便于整個(gè)數(shù)據(jù)提取過(guò)程的錯(cuò)誤原因排查和監(jiān)控,實(shí)用性強(qiáng),適用范圍廣泛,易于推廣。
附圖說(shuō)明
附圖1為將分布式系統(tǒng)數(shù)據(jù)傳輸?shù)侥繕?biāo)庫(kù)系統(tǒng)示意圖。
附圖2為數(shù)據(jù)定時(shí)由臨時(shí)表轉(zhuǎn)存到正式表示意圖。
附圖3為數(shù)據(jù)手工由臨時(shí)表轉(zhuǎn)存到正式表示意圖。
具體實(shí)施方式
下面結(jié)合附圖及具體實(shí)施例對(duì)本發(fā)明作進(jìn)一步說(shuō)明。
如附圖1、圖2、圖3所示,本發(fā)明提供一種分布式系統(tǒng)數(shù)據(jù)提取方法,將多個(gè)分布式系統(tǒng)中數(shù)據(jù)傳輸?shù)侥繕?biāo)庫(kù),確保截止到一個(gè)時(shí)間點(diǎn)內(nèi)分布式系統(tǒng)中數(shù)據(jù)和目標(biāo)庫(kù)中數(shù)據(jù)一致,提高數(shù)據(jù)傳輸?shù)目捎眯浴?/p>
其實(shí)現(xiàn)過(guò)程為:
首先將分布式系統(tǒng)數(shù)據(jù)通過(guò)RocketMQ傳輸?shù)侥繕?biāo)庫(kù)中的臨時(shí)表中,當(dāng)各個(gè)分布式系統(tǒng)的數(shù)據(jù)都傳輸完畢之后,通過(guò)數(shù)據(jù)開(kāi)放功能將目標(biāo)庫(kù)中的臨時(shí)表數(shù)據(jù)轉(zhuǎn)儲(chǔ)到正式表中;
每天通過(guò)數(shù)據(jù)校驗(yàn)功能,定時(shí)校驗(yàn)?zāi)繕?biāo)庫(kù)數(shù)據(jù)和分布式系統(tǒng)數(shù)據(jù)是否一致,不一致的情況通過(guò)Kettle工具進(jìn)行數(shù)據(jù)補(bǔ)救,確保分布式系統(tǒng)數(shù)據(jù)和目標(biāo)庫(kù)數(shù)據(jù)一致。
其中,RocketMQ 是一款分布式、隊(duì)列模型的消息中間件,具有以下特點(diǎn):能夠保證嚴(yán)格的消息順序;提供豐富的消息拉取模式;高效的訂閱者水平擴(kuò)展能力;實(shí)時(shí)的消息訂閱機(jī)制;億級(jí)消息堆積能力。
Kettle工具為Pentaho Data Integration,是Pentaho生態(tài)系統(tǒng)中默認(rèn)的ETL工具。Kettle是一款開(kāi)源的etl工具,純java編寫,數(shù)據(jù)抽取高效穩(wěn)定(數(shù)據(jù)遷移工具)。Kettle中有兩種腳本文件,transformation和job,transformation完成針對(duì)數(shù)據(jù)的基礎(chǔ)轉(zhuǎn)換,job則完成整個(gè)工作流的控制。
更為具體的,本發(fā)明對(duì)上述步驟進(jìn)行詳細(xì)描述。
將分布式系統(tǒng)數(shù)據(jù)通過(guò)RocketMQ傳輸?shù)侥繕?biāo)庫(kù)中的臨時(shí)表中:
在分布式系統(tǒng)中,數(shù)據(jù)上傳定時(shí)器定時(shí)調(diào)用應(yīng)用程序,應(yīng)用生產(chǎn)者讀取數(shù)據(jù)庫(kù),將數(shù)據(jù)傳輸?shù)侥繕?biāo)庫(kù)系統(tǒng)中的RocketMQ隊(duì)列中。該過(guò)程中各個(gè)分布式系統(tǒng)定時(shí)器可以同時(shí)啟用,提高數(shù)據(jù)提取效率。該過(guò)程會(huì)記錄生產(chǎn)者日志,便于監(jiān)控?cái)?shù)據(jù)生產(chǎn)情況。
目標(biāo)庫(kù)系統(tǒng)中RocketMQ隊(duì)列將數(shù)據(jù)推送給應(yīng)用消費(fèi)者,應(yīng)用消費(fèi)者將接收到的數(shù)據(jù)插入到目標(biāo)庫(kù)的臨時(shí)表中。該過(guò)程會(huì)記錄消費(fèi)者日志,便于監(jiān)控?cái)?shù)據(jù)消費(fèi)情況。
目標(biāo)庫(kù)系統(tǒng)中數(shù)據(jù)開(kāi)放功能將臨時(shí)表數(shù)據(jù)轉(zhuǎn)儲(chǔ)到正式表:
目標(biāo)庫(kù)系統(tǒng)中數(shù)據(jù)開(kāi)放定時(shí)器調(diào)用數(shù)據(jù)開(kāi)放功能,數(shù)據(jù)開(kāi)放功能會(huì)校驗(yàn)?zāi)繕?biāo)庫(kù)中數(shù)據(jù)跟分布式系統(tǒng)中數(shù)據(jù)是否一致,如果數(shù)據(jù)一致,則將目標(biāo)庫(kù)中臨時(shí)表數(shù)據(jù)轉(zhuǎn)儲(chǔ)到目標(biāo)庫(kù)正式表中。該過(guò)程記錄數(shù)據(jù)開(kāi)放日志,便于監(jiān)控?cái)?shù)據(jù)開(kāi)放情況。
數(shù)據(jù)開(kāi)放定時(shí)器校驗(yàn)數(shù)據(jù)不一致的情況下,會(huì)導(dǎo)致目標(biāo)庫(kù)臨時(shí)表數(shù)據(jù)沒(méi)能轉(zhuǎn)儲(chǔ)到目標(biāo)庫(kù)正式表。根據(jù)數(shù)據(jù)開(kāi)放日志排查出原因,進(jìn)行數(shù)據(jù)補(bǔ)救,當(dāng)目標(biāo)庫(kù)臨時(shí)表數(shù)據(jù)和目標(biāo)庫(kù)正式表數(shù)據(jù)一致之后,數(shù)據(jù)手工開(kāi)放功能將目標(biāo)庫(kù)中臨時(shí)表數(shù)據(jù)轉(zhuǎn)儲(chǔ)到目標(biāo)庫(kù)正式表中。該過(guò)程更新數(shù)據(jù)開(kāi)放日志,便于監(jiān)控?cái)?shù)據(jù)開(kāi)放情況。
分布式系統(tǒng)中歷史數(shù)據(jù)補(bǔ)救:
當(dāng)分布式系統(tǒng)中歷史數(shù)據(jù)發(fā)生變化的情況下,會(huì)造成分布式系統(tǒng)中歷史數(shù)據(jù)跟目標(biāo)庫(kù)中歷史數(shù)據(jù)不一致。使用數(shù)據(jù)校驗(yàn)功能,定時(shí)每天校驗(yàn)分布式系統(tǒng)中歷史數(shù)據(jù)跟目標(biāo)庫(kù)中歷史數(shù)據(jù)是否一致,發(fā)現(xiàn)不一致的情況下,使用kettle工具進(jìn)行歷史數(shù)據(jù)補(bǔ)救。
本發(fā)明的分布式系統(tǒng)數(shù)據(jù)提取方法具有高可用性,此外,本發(fā)明還具有數(shù)據(jù)一致性、提取高效性和便捷性,具體為:
數(shù)據(jù)一致性。采用先將數(shù)據(jù)插入到目標(biāo)庫(kù)的臨時(shí)表中,然后采用數(shù)據(jù)開(kāi)放功能校驗(yàn)分布式系統(tǒng)中數(shù)據(jù)和目標(biāo)庫(kù)中數(shù)據(jù)是否一致,數(shù)據(jù)一致的情況下才轉(zhuǎn)儲(chǔ)到正式表,確保了抽取數(shù)據(jù)一致性;使用數(shù)據(jù)校驗(yàn)功能,定時(shí)每天校驗(yàn)分布式系統(tǒng)中歷史數(shù)據(jù)跟目標(biāo)庫(kù)中歷史數(shù)據(jù)是否一致,發(fā)現(xiàn)不一致的情況下,使用kettle工具進(jìn)行歷史數(shù)據(jù)補(bǔ)救,確保了歷史數(shù)據(jù)的一致性。
數(shù)據(jù)提取高效性。在分布式系統(tǒng)端,數(shù)據(jù)提取的過(guò)程是并行進(jìn)行的,提高了數(shù)據(jù)提取效率。
監(jiān)控和排錯(cuò)方便。分布式系統(tǒng)中數(shù)據(jù)生產(chǎn)過(guò)程、目標(biāo)系統(tǒng)中數(shù)據(jù)消費(fèi)過(guò)程和數(shù)據(jù)開(kāi)放過(guò)程中都進(jìn)行日志記錄,便于整個(gè)數(shù)據(jù)提取過(guò)程的錯(cuò)誤原因排查和監(jiān)控。
上述具體實(shí)施方式僅是本發(fā)明的具體個(gè)案,本發(fā)明的專利保護(hù)范圍包括但不限于上述具體實(shí)施方式,任何符合本發(fā)明的一種分布式系統(tǒng)數(shù)據(jù)提取方法的權(quán)利要求書的且任何所屬技術(shù)領(lǐng)域的普通技術(shù)人員對(duì)其所做的適當(dāng)變化或替換,皆應(yīng)落入本發(fā)明的專利保護(hù)范圍。