數(shù)據(jù)記錄核對(duì)方法及裝置的制造方法
【專利摘要】本申請(qǐng)?zhí)峁┮环N數(shù)據(jù)記錄核對(duì)方法及裝置。方法包括:獲取核對(duì)需求對(duì)應(yīng)的目標(biāo)數(shù)據(jù)庫事務(wù)的日志數(shù)據(jù),日志數(shù)據(jù)存儲(chǔ)有目標(biāo)數(shù)據(jù)庫事務(wù)所包括的數(shù)據(jù)庫操作的操作詳情與操作結(jié)果的對(duì)應(yīng)關(guān)系;根據(jù)數(shù)據(jù)庫操作的操作詳情與操作結(jié)果的對(duì)應(yīng)關(guān)系,確定待核對(duì)的結(jié)果記錄對(duì)應(yīng)的流水記錄;對(duì)待核對(duì)的結(jié)果記錄和待核對(duì)的結(jié)果記錄對(duì)應(yīng)的流水記錄進(jìn)行核對(duì)處理。本申請(qǐng)可以對(duì)數(shù)據(jù)庫中的流水表和結(jié)果表中的數(shù)據(jù)記錄進(jìn)行核對(duì)。
【專利說明】
數(shù)據(jù)記錄核對(duì)方法及裝置
【技術(shù)領(lǐng)域】
[0001]本申請(qǐng)涉及數(shù)據(jù)庫技術(shù)領(lǐng)域,尤其涉及一種數(shù)據(jù)記錄核對(duì)方法及裝置。
【【背景技術(shù)】】
[0002]隨著應(yīng)用的發(fā)展,對(duì)業(yè)務(wù)系統(tǒng)可用性的要求越來越高。為了提高業(yè)務(wù)系統(tǒng)的可用性,需要將業(yè)務(wù)系統(tǒng)產(chǎn)生的業(yè)務(wù)數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫中。同時(shí),隨著業(yè)務(wù)系統(tǒng)或其他系統(tǒng)的操作,數(shù)據(jù)庫中的每條業(yè)務(wù)數(shù)據(jù)都可能發(fā)生變化。業(yè)務(wù)數(shù)據(jù)的變化一般會(huì)產(chǎn)生兩條記錄:結(jié)果記錄和流水記錄。結(jié)果記錄只有一條,用于記錄變化后的業(yè)務(wù)數(shù)據(jù),會(huì)隨著業(yè)務(wù)數(shù)據(jù)的變化而變化;流水記錄一般會(huì)有多條,用于記錄造成數(shù)據(jù)變化的操作,可存儲(chǔ)于流水表中。
[0003]在應(yīng)用過程中,基于數(shù)據(jù)安全性、正確性或業(yè)務(wù)需求等考慮,可能需要對(duì)流水記錄和結(jié)果記錄進(jìn)行核對(duì),以便發(fā)現(xiàn)數(shù)據(jù)錯(cuò)誤或數(shù)據(jù)庫邏輯錯(cuò)誤等問題。最常用的核對(duì)方式是:定期將流水記錄和結(jié)果記錄導(dǎo)入數(shù)據(jù)倉庫,在倉庫中執(zhí)行分析類結(jié)構(gòu)化查詢語言(SQL)語句,以對(duì)一段時(shí)間段內(nèi)(如前一天)的流水記錄與結(jié)果記錄進(jìn)行核對(duì)。
[0004]發(fā)明人在本申請(qǐng)過程中經(jīng)研究發(fā)現(xiàn),由于數(shù)據(jù)倉庫無法保證在同一時(shí)間同時(shí)導(dǎo)入結(jié)果記錄和流水記錄,而結(jié)果記錄和流水記錄又是實(shí)時(shí)變化的,這就造成導(dǎo)入數(shù)據(jù)倉庫的兩種記錄無法一一對(duì)應(yīng),例如若先導(dǎo)入結(jié)果記錄,則后導(dǎo)入的流水記錄中可能包括在已導(dǎo)入結(jié)果記錄之后出現(xiàn)的新流水記錄;若先導(dǎo)入流水記錄,則后導(dǎo)入的結(jié)果記錄可能是在已導(dǎo)入流水記錄之后產(chǎn)生的新結(jié)果記錄。由于結(jié)果記錄和流水記錄之間無法對(duì)應(yīng),導(dǎo)致無法進(jìn)行數(shù)據(jù)記錄的核對(duì)。
【
【發(fā)明內(nèi)容】
】
[0005]本申請(qǐng)的多個(gè)方面提供一種數(shù)據(jù)記錄核對(duì)方法及裝置,用以對(duì)兩張表中的數(shù)據(jù)記錄進(jìn)行核對(duì)。
[0006]本申請(qǐng)的一方面,提供一種數(shù)據(jù)記錄核對(duì)方法,包括:
[0007]獲取核對(duì)需求對(duì)應(yīng)的目標(biāo)數(shù)據(jù)庫事務(wù)的日志數(shù)據(jù),所述日志數(shù)據(jù)存儲(chǔ)有所述目標(biāo)數(shù)據(jù)庫事務(wù)所包括的數(shù)據(jù)庫操作的操作詳情與操作結(jié)果的對(duì)應(yīng)關(guān)系;
[0008]根據(jù)所述數(shù)據(jù)庫操作的操作詳情與操作結(jié)果的對(duì)應(yīng)關(guān)系,確定待核對(duì)的結(jié)果記錄對(duì)應(yīng)的流水記錄;
[0009]對(duì)所述待核對(duì)的結(jié)果記錄和所述待核對(duì)的結(jié)果記錄對(duì)應(yīng)的流水記錄進(jìn)行核對(duì)處理。
[0010]本申請(qǐng)的另一方面,提供一種數(shù)據(jù)記錄核對(duì)裝置,包括:
[0011 ] 獲取模塊,用于獲取核對(duì)需求對(duì)應(yīng)的目標(biāo)數(shù)據(jù)庫事務(wù)的日志數(shù)據(jù),所述日志數(shù)據(jù)存儲(chǔ)有所述目標(biāo)數(shù)據(jù)庫事務(wù)所包括的數(shù)據(jù)庫操作的操作詳情與操作結(jié)果的對(duì)應(yīng)關(guān)系;
[0012]確定模塊,用于根據(jù)所述數(shù)據(jù)庫操作的操作詳情與操作結(jié)果的對(duì)應(yīng)關(guān)系,確定待核對(duì)的結(jié)果記錄對(duì)應(yīng)的流水記錄;
[0013]核對(duì)模塊,用于對(duì)所述待核對(duì)的結(jié)果記錄和所述待核對(duì)的結(jié)果記錄對(duì)應(yīng)的流水記錄進(jìn)行核對(duì)處理。
[0014]在本申請(qǐng)中,獲取核對(duì)需求對(duì)應(yīng)的目標(biāo)數(shù)據(jù)庫事務(wù)的日志數(shù)據(jù),根據(jù)該日志數(shù)據(jù)存儲(chǔ)的該目標(biāo)數(shù)據(jù)庫事物所包括的數(shù)據(jù)庫操作的操作詳情與操作結(jié)果的對(duì)應(yīng)關(guān)系,確定待核對(duì)的結(jié)果記錄對(duì)應(yīng)的流水記錄,對(duì)待核對(duì)的結(jié)果記錄與該結(jié)果記錄對(duì)應(yīng)的流水記錄進(jìn)行核對(duì)處理。本申請(qǐng)通過日志數(shù)據(jù)中存儲(chǔ)的數(shù)據(jù)庫操作的操作詳情與操作結(jié)果的對(duì)應(yīng)關(guān)系,可以找到與待核對(duì)的結(jié)果記錄對(duì)應(yīng)的流水記錄,實(shí)現(xiàn)待核對(duì)的結(jié)果記錄和流水記錄之間的對(duì)應(yīng),因此可以完成兩種記錄的核對(duì)。
【【附圖說明】】
[0015]為了更清楚地說明本申請(qǐng)實(shí)施例中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本申請(qǐng)的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0016]圖1a為本申請(qǐng)一實(shí)施例提供的一種應(yīng)用場(chǎng)景的系統(tǒng)架構(gòu)示意圖;
[0017]圖1b為本申請(qǐng)一實(shí)施例提供的數(shù)據(jù)記錄核對(duì)方法的流程示意圖;
[0018]圖2為本申請(qǐng)一實(shí)施例提供的數(shù)據(jù)記錄核對(duì)裝置的結(jié)構(gòu)示意圖。
【【具體實(shí)施方式】】
[0019]為使本申請(qǐng)實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本申請(qǐng)實(shí)施例中的附圖,對(duì)本申請(qǐng)實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本申請(qǐng)一部分實(shí)施例,而不是全部的實(shí)施例?;诒旧暾?qǐng)中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本申請(qǐng)保護(hù)的范圍。
[0020]在介紹本申請(qǐng)方法流程之前,先介紹一種本申請(qǐng)應(yīng)用場(chǎng)景的系統(tǒng)架構(gòu),例如可以是后續(xù)實(shí)施例中涉及的預(yù)算系統(tǒng)。如圖1a所示,該系統(tǒng)架構(gòu)包括:主數(shù)據(jù)庫10、備份數(shù)據(jù)庫20、業(yè)務(wù)調(diào)用者30和核對(duì)裝置40。
[0021]業(yè)務(wù)調(diào)用者30主要用于操作主數(shù)據(jù)庫10中的業(yè)務(wù)數(shù)據(jù),所述操作可以包括新增、修改、刪除等。業(yè)務(wù)調(diào)用者30對(duì)主數(shù)據(jù)庫10中的業(yè)務(wù)數(shù)據(jù)進(jìn)行操作會(huì)產(chǎn)生流水記錄和結(jié)果記錄;同時(shí),業(yè)務(wù)調(diào)用者30對(duì)主數(shù)據(jù)庫10的操作是以數(shù)據(jù)庫事務(wù)為單位進(jìn)行的,每個(gè)數(shù)據(jù)庫事務(wù)包括至少一個(gè)數(shù)據(jù)庫操作,每個(gè)數(shù)據(jù)庫事務(wù)都會(huì)產(chǎn)生對(duì)應(yīng)的日志數(shù)據(jù),用于記錄該數(shù)據(jù)庫事務(wù)所包括的數(shù)據(jù)庫操作的操作詳情與操作結(jié)果的對(duì)應(yīng)關(guān)系。
[0022]備份數(shù)據(jù)庫20用于對(duì)主數(shù)據(jù)庫10進(jìn)行備份,具體備份機(jī)制可采用現(xiàn)有技術(shù),在此不再贅述。例如,主數(shù)據(jù)庫10中的復(fù)制機(jī)制可以在秒級(jí)延遲之后將主數(shù)據(jù)庫10中的變更以事務(wù)提交的順序更新至備份數(shù)據(jù)庫20中。
[0023]核對(duì)裝置40是指具有對(duì)結(jié)果記錄和流水記錄進(jìn)行核對(duì)需求的裝置或系統(tǒng),用于在有核對(duì)需求時(shí),根據(jù)主數(shù)據(jù)庫10提供的數(shù)據(jù)庫事務(wù)的日志數(shù)據(jù),對(duì)結(jié)果記錄和流水記錄進(jìn)行核對(duì)。該日志數(shù)據(jù)存儲(chǔ)有相應(yīng)數(shù)據(jù)庫事務(wù)所包括的數(shù)據(jù)庫操作的操作詳情與操作結(jié)果的對(duì)應(yīng)關(guān)系。例如,主數(shù)據(jù)庫10可以采用replicat1n協(xié)議將數(shù)據(jù)庫事務(wù)的日志數(shù)據(jù)轉(zhuǎn)換成核對(duì)裝置40所能理解的格式,再將轉(zhuǎn)換后的日志數(shù)據(jù)提供給核對(duì)裝置40。r印Iicat1n協(xié)議的實(shí)現(xiàn)可以復(fù)用已有開源工具如canal實(shí)現(xiàn)。值得說明的是,這里的核對(duì)裝置40具體可以是后續(xù)實(shí)施例中的數(shù)據(jù)記錄核對(duì)裝置。
[0024]圖1b為本申請(qǐng)一實(shí)施例提供的數(shù)據(jù)記錄核對(duì)方法的流程示意圖。如圖1b所示,該方法包括:
[0025]101、獲取核對(duì)需求對(duì)應(yīng)的目標(biāo)數(shù)據(jù)庫事務(wù)的日志數(shù)據(jù),日志數(shù)據(jù)存儲(chǔ)有目標(biāo)數(shù)據(jù)庫事務(wù)所包括的數(shù)據(jù)庫操作的操作詳情與操作結(jié)果的對(duì)應(yīng)關(guān)系;
[0026]102、根據(jù)上述數(shù)據(jù)庫操作的操作詳情與操作結(jié)果的對(duì)應(yīng)關(guān)系,確定待核對(duì)的結(jié)果記錄對(duì)應(yīng)的流水記錄;
[0027]103、對(duì)上述待核對(duì)的結(jié)果記錄和待核對(duì)的結(jié)果記錄對(duì)應(yīng)的流水記錄進(jìn)行核對(duì)。
[0028]在數(shù)據(jù)庫應(yīng)用場(chǎng)景中,當(dāng)需要對(duì)結(jié)果記錄和流水記錄等進(jìn)行核對(duì)時(shí),就會(huì)產(chǎn)生核對(duì)需求,該核對(duì)需求用于指示對(duì)流水記錄和結(jié)果記錄進(jìn)行核對(duì),以便發(fā)現(xiàn)結(jié)果記錄和流水記錄是否能夠?qū)?yīng)上,通過該核對(duì)處理可以發(fā)現(xiàn)數(shù)據(jù)錯(cuò)誤、以及業(yè)務(wù)系統(tǒng)中向數(shù)據(jù)庫插入流水記錄等程序代碼的邏輯錯(cuò)誤等。
[0029]要實(shí)現(xiàn)核對(duì)目的,首先需要確定待核對(duì)的結(jié)果記錄以及與待核對(duì)的結(jié)果記錄對(duì)應(yīng)的流水記錄,若待核對(duì)的結(jié)果記錄與核對(duì)使用的流水記錄不對(duì)應(yīng),則無法完成核對(duì)。但是,由于數(shù)據(jù)庫中的結(jié)果記錄和流水記錄在不停的變化,尤其是結(jié)果記錄會(huì)實(shí)時(shí)被刷新,這些情況都不利于找到與待核對(duì)的結(jié)果記錄對(duì)應(yīng)的流水記錄。
[0030]針對(duì)該問題,本實(shí)施例獲取核對(duì)需求對(duì)應(yīng)的數(shù)據(jù)庫事務(wù)的日志數(shù)據(jù),該日志數(shù)據(jù)中存儲(chǔ)有該數(shù)據(jù)庫事務(wù)所包括的數(shù)據(jù)庫操作的操作詳情和操作結(jié)果的對(duì)應(yīng)關(guān)系。為便于描述,將核對(duì)需求對(duì)應(yīng)的數(shù)據(jù)庫事務(wù)稱為目標(biāo)數(shù)據(jù)庫事務(wù)。一般來說,數(shù)據(jù)庫事務(wù)可能包括一個(gè)或多個(gè)數(shù)據(jù)庫操作,每個(gè)數(shù)據(jù)庫操作的操作詳情對(duì)應(yīng)一系列流水記錄,整個(gè)數(shù)據(jù)庫事務(wù)的操作結(jié)果對(duì)應(yīng)一個(gè)結(jié)果記錄,但是該結(jié)果記錄會(huì)隨著后續(xù)數(shù)據(jù)庫事務(wù)的操作而發(fā)生變化。
[0031]上述目標(biāo)數(shù)據(jù)庫事務(wù)的日志數(shù)據(jù)包括了本次核對(duì)需求所需的有關(guān)信息,例如操作詳情與操作結(jié)果的對(duì)應(yīng)關(guān)系。根據(jù)該對(duì)應(yīng)關(guān)系可以找到待核對(duì)的結(jié)果記錄以及其對(duì)應(yīng)的流水記錄。
[0032]—種獲取目標(biāo)數(shù)據(jù)庫事務(wù)的日志數(shù)據(jù)的實(shí)施方式包括:根據(jù)上述核對(duì)需求,確定待核對(duì)時(shí)間段;根據(jù)待核對(duì)時(shí)間段,確定目標(biāo)時(shí)間段;獲取在目標(biāo)時(shí)間段內(nèi)產(chǎn)生的數(shù)據(jù)庫事務(wù)的日志數(shù)據(jù)作為目標(biāo)數(shù)據(jù)庫事務(wù)的日志數(shù)據(jù)。
[0033]例如,核對(duì)需求可以是對(duì)所指定的待核對(duì)時(shí)間段內(nèi)產(chǎn)生的流水記錄和結(jié)果記錄進(jìn)行核對(duì),該待核對(duì)時(shí)間段可以是從業(yè)務(wù)開始到當(dāng)前時(shí)間,也可以是任何一時(shí)間段,例如要求對(duì)2014年12月I日當(dāng)天產(chǎn)生的流水記錄和結(jié)果記錄進(jìn)行核對(duì)?;诖?,可以直接從核對(duì)需求中獲取待核對(duì)時(shí)間段。
[0034]又例如,核對(duì)需求可以是對(duì)指定的結(jié)果記錄進(jìn)行核對(duì),則可以以從核對(duì)需求中獲取待核對(duì)的結(jié)果記錄,以起始結(jié)果記錄對(duì)應(yīng)的起始時(shí)間和當(dāng)前結(jié)果記錄對(duì)應(yīng)的當(dāng)前時(shí)間確定根區(qū)間,采用二分法對(duì)根區(qū)間進(jìn)行處理,獲得待核對(duì)的結(jié)果記錄所在的時(shí)間段作為待核對(duì)時(shí)間段。例如,當(dāng)前結(jié)果記錄為30,起始結(jié)果為100,則核對(duì)需求可以是對(duì)結(jié)果記錄為50時(shí)的情況進(jìn)行核對(duì)。
[0035]進(jìn)一步,可以直接將待核對(duì)時(shí)間段作為目標(biāo)時(shí)間段,即獲取整個(gè)待核對(duì)時(shí)間段內(nèi)產(chǎn)生的數(shù)據(jù)庫事務(wù)的日志數(shù)據(jù)作為目標(biāo)數(shù)據(jù)庫事務(wù)的日志數(shù)據(jù)。
[0036]或者,考慮到距離待核對(duì)的結(jié)果記錄的產(chǎn)生時(shí)間指定時(shí)長,例如5分鐘內(nèi)的流水記錄可能會(huì)出現(xiàn)與該結(jié)果記錄不對(duì)應(yīng)的情況,而5分鐘之前的流水記錄一般不會(huì)出現(xiàn)不對(duì)應(yīng)的情況?;诖?,可以獲取從第一時(shí)間點(diǎn)到待核對(duì)時(shí)間段的終止點(diǎn)的時(shí)間間隔作為目標(biāo)時(shí)間段,第一時(shí)間點(diǎn)是終止點(diǎn)之前且與終止點(diǎn)相距指定時(shí)間間隔的時(shí)間點(diǎn)。指定時(shí)間間隔可以是5分鐘、3分鐘、10分鐘等等。
[0037]在一可選實(shí)施方式中,上述數(shù)據(jù)庫事務(wù)的日志一般存儲(chǔ)在主數(shù)據(jù)庫上,所以可以從主數(shù)據(jù)庫獲取目標(biāo)數(shù)據(jù)庫事務(wù)的日志數(shù)據(jù)。除此之外,主數(shù)據(jù)庫一般會(huì)將數(shù)據(jù)庫事務(wù)的日志數(shù)據(jù)發(fā)送給備份數(shù)據(jù)庫,以供備份數(shù)據(jù)庫進(jìn)行數(shù)據(jù)同步,當(dāng)備份數(shù)據(jù)庫同步結(jié)束后,將數(shù)據(jù)庫事務(wù)的日志數(shù)據(jù)刪除。也就是說,數(shù)據(jù)庫事務(wù)的日志數(shù)據(jù)也可以從備份數(shù)據(jù)庫上獲取到。
[0038]具體的,數(shù)據(jù)記錄核對(duì)裝置可以向主數(shù)據(jù)庫或備份數(shù)據(jù)庫發(fā)送獲取請(qǐng)求,以請(qǐng)求獲取目標(biāo)數(shù)據(jù)庫事務(wù)的日志數(shù)據(jù)。例如,該獲取請(qǐng)求可以攜帶有上述目標(biāo)時(shí)間段的標(biāo)識(shí)信息,用于指示需要獲取在該目標(biāo)時(shí)間段內(nèi)產(chǎn)生的數(shù)據(jù)庫事務(wù)的日志數(shù)據(jù)。主數(shù)據(jù)庫或備份數(shù)據(jù)庫接收獲取請(qǐng)求,根據(jù)獲取請(qǐng)求找到目標(biāo)數(shù)據(jù)庫事務(wù)的日志數(shù)據(jù),并返回所獲取的日志數(shù)據(jù)。數(shù)據(jù)記錄核對(duì)裝置接收主數(shù)據(jù)庫或備份數(shù)據(jù)庫根據(jù)獲取請(qǐng)求返回的目標(biāo)數(shù)據(jù)庫事務(wù)的日志數(shù)據(jù)。
[0039]在獲取目標(biāo)數(shù)據(jù)庫事務(wù)的日志數(shù)據(jù)后,可以根據(jù)目標(biāo)數(shù)據(jù)庫事務(wù)的日志數(shù)據(jù)中存儲(chǔ)的數(shù)據(jù)庫操作的操作詳情與操作結(jié)果的對(duì)應(yīng)關(guān)系,對(duì)數(shù)據(jù)庫操作進(jìn)行自平衡檢測(cè);當(dāng)數(shù)據(jù)庫操作通過自平衡檢測(cè)后,從流水表中獲取與數(shù)據(jù)庫操作的操作詳情對(duì)應(yīng)的流水記錄,作為待核對(duì)的結(jié)果記錄對(duì)應(yīng)的流水記錄。
[0040]可選的,數(shù)據(jù)記錄核對(duì)裝置可以從備份數(shù)據(jù)庫中獲取流水表,以便于從流水表中獲取待核對(duì)的結(jié)果記錄對(duì)應(yīng)的流水記錄。一般來說,主數(shù)據(jù)庫上產(chǎn)生數(shù)據(jù)庫事務(wù)時(shí),會(huì)以秒級(jí)同步到備份數(shù)據(jù)庫,也就是說備份數(shù)據(jù)庫上的流水表滿足核對(duì)對(duì)時(shí)間延遲的需求,并且從備份數(shù)據(jù)庫獲取流水表,可以避免對(duì)主數(shù)據(jù)庫性能的影響。
[0041]在確定待核對(duì)的結(jié)果記錄對(duì)應(yīng)的流水記錄后,數(shù)據(jù)記錄核對(duì)裝置可以對(duì)待核對(duì)的結(jié)果記錄和該結(jié)果記錄對(duì)應(yīng)的流水記錄進(jìn)行核對(duì)處理。
[0042]由上述可見,本實(shí)施例通過日志數(shù)據(jù)中存儲(chǔ)的數(shù)據(jù)庫操作的操作詳情與操作結(jié)果的對(duì)應(yīng)關(guān)系,可以找到與待核對(duì)的結(jié)果記錄對(duì)應(yīng)的流水記錄,實(shí)現(xiàn)待核對(duì)的結(jié)果記錄和流水記錄之間的對(duì)應(yīng),因此可以完成兩種記錄的核對(duì)。
[0043]下面以預(yù)算系統(tǒng)的對(duì)賬需求為例,詳細(xì)說明本申請(qǐng)的技術(shù)方案。
[0044]預(yù)算系統(tǒng)包括主數(shù)據(jù)庫和備份數(shù)據(jù)庫;主數(shù)據(jù)庫使用binlog文件存儲(chǔ)數(shù)據(jù)庫事務(wù)的日志數(shù)據(jù);主數(shù)據(jù)庫中流水表和余額表的變更以binlog事務(wù)增量的方式同步到備份數(shù)據(jù)庫,除外之外,主數(shù)據(jù)庫中余額表的變更也以binlog事務(wù)增量的方式同步給數(shù)據(jù)記錄核對(duì)裝置,以供該裝置進(jìn)行對(duì)賬。數(shù)據(jù)記錄核對(duì)裝置針對(duì)binlog中的增量數(shù)據(jù)(這些增量數(shù)據(jù)包括了新增的余額變化和余額變化后的值)和備份數(shù)據(jù)庫中擁有的基線數(shù)據(jù)進(jìn)行對(duì)賬。這種對(duì)賬方式,相比每天運(yùn)行一次的基于全量數(shù)據(jù)導(dǎo)入到數(shù)據(jù)倉庫的部署,提高了實(shí)時(shí)性。
[0045]具體的,預(yù)算系統(tǒng)包含兩張表:
[0046]預(yù)算表(budget),用于記錄余額,每條記錄對(duì)應(yīng)一個(gè)預(yù)算業(yè)務(wù)。本舉例中以一個(gè)預(yù)算示例;這里的預(yù)算表相當(dāng)于存儲(chǔ)上述結(jié)果記錄的表;
[0047]控制序列表(controlOrder),用于記錄每一次預(yù)算扣減,假設(shè)一個(gè)budget扣減兩次,產(chǎn)生兩條controlOrder記錄,這里的控制序列表相當(dāng)于存儲(chǔ)上述的流水記錄的表。
[0048]—次預(yù)算扣減服務(wù)將對(duì)主數(shù)據(jù)庫發(fā)起一個(gè)數(shù)據(jù)庫事務(wù),該數(shù)據(jù)庫事務(wù)包含兩條SQL語句:一個(gè)是對(duì)預(yù)算表更新余額字段,一個(gè)是在控制序列表中插入一條記錄。
[0049]假設(shè)預(yù)算初始余額為180元,兩個(gè)調(diào)用者并發(fā)發(fā)起扣減請(qǐng)求,并發(fā)I扣減15元,并發(fā)2扣減20元。假設(shè)并發(fā)I先處理完,則兩個(gè)并發(fā)處理完后,將產(chǎn)生兩組事件:
[0050]第I組:預(yù)算表中記錄的余額由180元變?yōu)?65元;控制序列表中新增一條15元的記錄col ;
[0051]第2組:預(yù)算表中記錄的余額由165元變?yōu)?45元;控制序列表中新增一條20元的記錄co2。
[0052]每組事件作為原子單元(即一個(gè)數(shù)據(jù)庫操作)存儲(chǔ)到binlog文件中。與此同時(shí)可以有別的并發(fā)扣減請(qǐng)求正在處理中。
[0053]此時(shí),若希望知道預(yù)算系統(tǒng)是否因?yàn)榇a缺陷或其他原因?qū)е骂A(yù)算余額由180元變成165元時(shí)控制序列表中沒有新增相應(yīng)的記錄或控制序列表中記錄的金額不是15元。本實(shí)施例采用以下方式解決此問題:
[0054]并發(fā)2執(zhí)行結(jié)束后,主數(shù)據(jù)庫通過如r印Iicat1n協(xié)議轉(zhuǎn)換模塊對(duì)上述兩組事件對(duì)應(yīng)binlog文件進(jìn)行格式轉(zhuǎn)換后發(fā)送給數(shù)據(jù)記錄核對(duì)裝置,同時(shí)主數(shù)據(jù)庫會(huì)在秒級(jí)延遲之后將變更以主庫事務(wù)提交的順序更新至備份數(shù)據(jù)庫中,此時(shí)備份數(shù)據(jù)庫中存儲(chǔ)有以下信息:預(yù)算表中記錄的余額145元、兩條記錄col和co2。由于備份數(shù)據(jù)庫的更新保持著主數(shù)據(jù)庫發(fā)生的事務(wù)的原子性,所以不會(huì)出現(xiàn)145元余額對(duì)應(yīng)控制序列表中一條記錄的情況。
[0055]基于上述,數(shù)據(jù)記錄核對(duì)裝置從binlog文件中獲取上述兩組事件,根據(jù)事件中記錄的信息發(fā)起自平衡檢查:
[0056]第I組:預(yù)算表中記錄的余額由180變至165,變化15 ;且能找到在控制序列表中對(duì)應(yīng)的插入事件且額度為15元;自平衡檢查完成;
[0057]第2組:預(yù)算表中記錄的余額由165變至145,變化20 ;且能找到本組在控制序列表中對(duì)應(yīng)的插入事件且額度為20元;自平衡檢查完成;
[0058]完成自平衡檢查后,再將事件組分別在備份數(shù)據(jù)庫中找到對(duì)應(yīng)的記錄col和co2,完成對(duì)賬。
[0059]兩個(gè)事件的變化值之和,即20+15 = 35,與初始余額180和待核對(duì)的余額145之差相同,對(duì)賬平衡。
[0060]由于binlog在每次DB事務(wù)提交時(shí)產(chǎn)生,秒級(jí)同步到對(duì)賬系統(tǒng),避免了基于數(shù)據(jù)倉庫導(dǎo)入的大延遲,具有較高的實(shí)時(shí)性。
[0061]由于binlog事件以一次完整的DB事務(wù)為單位,事件中同時(shí)包含了流水和余額前后值的對(duì)應(yīng)關(guān)系,避免了余額和流水對(duì)賬的不一致問題,解決率流水和余額無法對(duì)賬的問題。
[0062]需要說明的是,對(duì)于前述的各方法實(shí)施例,為了簡單描述,故將其都表述為一系列的動(dòng)作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本申請(qǐng)并不受所描述的動(dòng)作順序的限制,因?yàn)橐罁?jù)本申請(qǐng),某些步驟可以采用其他順序或者同時(shí)進(jìn)行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知悉,說明書中所描述的實(shí)施例均屬于優(yōu)選實(shí)施例,所涉及的動(dòng)作和模塊并不一定是本申請(qǐng)所必須的。
[0063]在上述實(shí)施例中,對(duì)各個(gè)實(shí)施例的描述都各有側(cè)重,某個(gè)實(shí)施例中沒有詳述的部分,可以參見其他實(shí)施例的相關(guān)描述。
[0064]圖2為本申請(qǐng)一實(shí)施例提供的數(shù)據(jù)記錄核對(duì)裝置的結(jié)構(gòu)示意圖。如圖2所示,該裝置包括:獲取模塊21、確定模塊22和核對(duì)模塊23。
[0065]獲取模塊21,用于獲取核對(duì)需求對(duì)應(yīng)的目標(biāo)數(shù)據(jù)庫事務(wù)的日志數(shù)據(jù),日志數(shù)據(jù)存儲(chǔ)有目標(biāo)數(shù)據(jù)庫事務(wù)所包括的數(shù)據(jù)庫操作的操作詳情與操作結(jié)果的對(duì)應(yīng)關(guān)系;
[0066]確定模塊22,用于根據(jù)獲取模塊21獲取的數(shù)據(jù)庫操作的操作詳情與操作結(jié)果的對(duì)應(yīng)關(guān)系,確定待核對(duì)的結(jié)果記錄對(duì)應(yīng)的流水記錄;
[0067]核對(duì)模塊23,用于對(duì)確定模塊22確定的待核對(duì)的結(jié)果記錄和待核對(duì)的結(jié)果記錄對(duì)應(yīng)的流水記錄進(jìn)行核對(duì)處理。
[0068]在一可選實(shí)施方式中,獲取模塊21的一種實(shí)現(xiàn)結(jié)構(gòu)包括:第一確定單元、第二確定單元和獲取單元。
[0069]第一確定單元,用于根據(jù)核對(duì)需求,確定待核對(duì)時(shí)間段;
[0070]第二確定單元,用于根據(jù)待核對(duì)時(shí)間段,確定目標(biāo)時(shí)間段;
[0071]獲取單元,用于獲取在目標(biāo)時(shí)間段內(nèi)產(chǎn)生的數(shù)據(jù)庫事務(wù)的日志數(shù)據(jù)作為目標(biāo)數(shù)據(jù)庫事務(wù)的日志數(shù)據(jù)。
[0072]在一可選實(shí)施方式中,第一確定單元具體用于:
[0073]從核對(duì)需求中獲取待核對(duì)時(shí)間段;或者
[0074]從核對(duì)需求中獲取待核對(duì)的結(jié)果記錄,以起始結(jié)果記錄對(duì)應(yīng)的起始時(shí)間和當(dāng)前結(jié)果記錄對(duì)應(yīng)的當(dāng)前時(shí)間確定根區(qū)間,采用二分法對(duì)根區(qū)間進(jìn)行處理,獲得待核對(duì)的結(jié)果記錄所在的時(shí)間段作為待核對(duì)時(shí)間。
[0075]在一可選實(shí)施方式中,第二確定單元具體用于:
[0076]直接將待核對(duì)時(shí)間段作為目標(biāo)時(shí)間段;或者
[0077]獲取從第一時(shí)間點(diǎn)到待核對(duì)時(shí)間段的終止點(diǎn)的時(shí)間間隔作為目標(biāo)時(shí)間段,第一時(shí)間點(diǎn)是終止點(diǎn)之前且與終止點(diǎn)相距指定時(shí)間間隔的時(shí)間點(diǎn)。
[0078]在一可選實(shí)施方式中,獲取模塊21具體用于:
[0079]向主數(shù)據(jù)庫或備份數(shù)據(jù)庫發(fā)送獲取請(qǐng)求;
[0080]接收主數(shù)據(jù)庫或備份數(shù)據(jù)庫根據(jù)獲取請(qǐng)求返回的目標(biāo)數(shù)據(jù)庫事務(wù)的日志數(shù)據(jù)。
[0081]在一可選實(shí)施方式中,確定模塊22具體用于:
[0082]根據(jù)數(shù)據(jù)庫操作的操作詳情與操作結(jié)果的對(duì)應(yīng)關(guān)系,對(duì)數(shù)據(jù)庫操作進(jìn)行自平衡檢測(cè);
[0083]當(dāng)數(shù)據(jù)庫操作通過自平衡檢測(cè)后,從流水表中獲取與數(shù)據(jù)庫操作的操作詳情對(duì)應(yīng)的流水記錄,作為待核對(duì)的結(jié)果記錄對(duì)應(yīng)的流水記錄。
[0084]本實(shí)施例提供的數(shù)據(jù)記錄核對(duì)裝置,獲取核對(duì)需求對(duì)應(yīng)的目標(biāo)數(shù)據(jù)庫事務(wù)的日志數(shù)據(jù),根據(jù)該日志數(shù)據(jù)存儲(chǔ)的該目標(biāo)數(shù)據(jù)庫事物所包括的數(shù)據(jù)庫操作的操作詳情與操作結(jié)果的對(duì)應(yīng)關(guān)系,確定待核對(duì)的結(jié)果記錄對(duì)應(yīng)的流水記錄,對(duì)待核對(duì)的結(jié)果記錄與該結(jié)果記錄對(duì)應(yīng)的流水記錄進(jìn)行核對(duì)處理。本實(shí)施例提供的數(shù)據(jù)記錄核對(duì)裝置通過日志數(shù)據(jù)中存儲(chǔ)的數(shù)據(jù)庫操作的操作詳情與操作結(jié)果的對(duì)應(yīng)關(guān)系,可以找到與待核對(duì)的結(jié)果記錄對(duì)應(yīng)的流水記錄,實(shí)現(xiàn)待核對(duì)的結(jié)果記錄和流水記錄之間的對(duì)應(yīng),因此可以完成兩種記錄的核對(duì)。
[0085]所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡潔,上述描述的系統(tǒng),裝置和單元的具體工作過程,可以參考前述方法實(shí)施例中的對(duì)應(yīng)過程,在此不再贅述。
[0086]在本申請(qǐng)所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的系統(tǒng),裝置和方法,可以通過其它的方式實(shí)現(xiàn)。例如,以上所描述的裝置實(shí)施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,例如多個(gè)單元或組件可以結(jié)合或者可以集成到另一個(gè)系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機(jī)械或其它的形式。
[0087]所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部單元來實(shí)現(xiàn)本實(shí)施例方案的目的。
[0088]另外,在本申請(qǐng)各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理單元中,也可以是各個(gè)單元單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上單元集成在一個(gè)單元中。上述集成的單元既可以采用硬件的形式實(shí)現(xiàn),也可以采用硬件加軟件功能單元的形式實(shí)現(xiàn)。
[0089]上述以軟件功能單元的形式實(shí)現(xiàn)的集成的單元,可以存儲(chǔ)在一個(gè)計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中。上述軟件功能單元存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)或處理器(processor)執(zhí)行本申請(qǐng)各個(gè)實(shí)施例所述方法的部分步驟。而前述的存儲(chǔ)介質(zhì)包括:U盤、移動(dòng)硬盤、只讀存儲(chǔ)器(Read-Only Memory, ROM)、隨機(jī)存取存儲(chǔ)器(Random Access Memory, RAM)、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。
[0090]最后應(yīng)說明的是:以上實(shí)施例僅用以說明本申請(qǐng)的技術(shù)方案,而非對(duì)其限制;盡管參照前述實(shí)施例對(duì)本申請(qǐng)進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本申請(qǐng)各實(shí)施例技術(shù)方案的精神和范圍。
【主權(quán)項(xiàng)】
1.一種數(shù)據(jù)記錄核對(duì)方法,其特征在于,包括: 獲取核對(duì)需求對(duì)應(yīng)的目標(biāo)數(shù)據(jù)庫事務(wù)的日志數(shù)據(jù),所述日志數(shù)據(jù)存儲(chǔ)有所述目標(biāo)數(shù)據(jù)庫事務(wù)所包括的數(shù)據(jù)庫操作的操作詳情與操作結(jié)果的對(duì)應(yīng)關(guān)系; 根據(jù)所述數(shù)據(jù)庫操作的操作詳情與操作結(jié)果的對(duì)應(yīng)關(guān)系,確定待核對(duì)的結(jié)果記錄對(duì)應(yīng)的流水記錄; 對(duì)所述待核對(duì)的結(jié)果記錄和所述待核對(duì)的結(jié)果記錄對(duì)應(yīng)的流水記錄進(jìn)行核對(duì)處理。2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述獲取核對(duì)需求對(duì)應(yīng)的目標(biāo)數(shù)據(jù)庫事務(wù)的日志數(shù)據(jù),包括: 根據(jù)所述核對(duì)需求,確定待核對(duì)時(shí)間段; 根據(jù)所述待核對(duì)時(shí)間段,確定目標(biāo)時(shí)間段; 獲取在所述目標(biāo)時(shí)間段內(nèi)產(chǎn)生的數(shù)據(jù)庫事務(wù)的日志數(shù)據(jù)作為所述目標(biāo)數(shù)據(jù)庫事務(wù)的日志數(shù)據(jù)。3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述根據(jù)所述核對(duì)需求,確定待核對(duì)時(shí)間段,包括: 從所述核對(duì)需求中獲取所述待核對(duì)時(shí)間段;或者 從所述核對(duì)需求中獲取所述待核對(duì)的結(jié)果記錄,以起始結(jié)果記錄對(duì)應(yīng)的起始時(shí)間和當(dāng)前結(jié)果記錄對(duì)應(yīng)的當(dāng)前時(shí)間確定根區(qū)間,采用二分法對(duì)所述根區(qū)間進(jìn)行處理,獲得所述待核對(duì)的結(jié)果記錄所在的時(shí)間段作為所述待核對(duì)時(shí)間。4.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述根據(jù)所述待核對(duì)時(shí)間段,確定目標(biāo)時(shí)間段,包括: 直接將所述待核對(duì)時(shí)間段作為所述目標(biāo)時(shí)間段;或者 獲取從第一時(shí)間點(diǎn)到所述待核對(duì)時(shí)間段的終止點(diǎn)的時(shí)間間隔作為所述目標(biāo)時(shí)間段,所述第一時(shí)間點(diǎn)是所述終止點(diǎn)之前且與所述終止點(diǎn)相距指定時(shí)間間隔的時(shí)間點(diǎn)。5.根據(jù)權(quán)利要求1-4任一項(xiàng)所述的方法,其特征在于,所述獲取核對(duì)需求對(duì)應(yīng)的目標(biāo)數(shù)據(jù)庫事務(wù)的日志數(shù)據(jù),包括: 向主數(shù)據(jù)庫或備份數(shù)據(jù)庫發(fā)送獲取請(qǐng)求; 接收所述主數(shù)據(jù)庫或備份數(shù)據(jù)庫根據(jù)所述獲取請(qǐng)求返回的所述目標(biāo)數(shù)據(jù)庫事務(wù)的日志數(shù)據(jù)。6.根據(jù)權(quán)利要求1-4任一項(xiàng)所述的方法,其特征在于,所述根據(jù)所述數(shù)據(jù)庫操作的操作詳情與操作結(jié)果的對(duì)應(yīng)關(guān)系,確定待核對(duì)的結(jié)果記錄對(duì)應(yīng)的流水記錄,包括: 根據(jù)所述數(shù)據(jù)庫操作的操作詳情與操作結(jié)果的對(duì)應(yīng)關(guān)系,對(duì)所述數(shù)據(jù)庫操作進(jìn)行自平衡檢測(cè); 當(dāng)所述數(shù)據(jù)庫操作通過自平衡檢測(cè)后,從流水表中獲取與所述數(shù)據(jù)庫操作的操作詳情對(duì)應(yīng)的流水記錄,作為所述待核對(duì)的結(jié)果記錄對(duì)應(yīng)的流水記錄。7.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述從流水表中獲取與所述數(shù)據(jù)庫操作的操作詳情對(duì)應(yīng)的流水記錄,作為所述待核對(duì)的結(jié)果記錄對(duì)應(yīng)的流水記錄之前,還包括: 從備份數(shù)據(jù)庫中獲取所述流水表。8.一種數(shù)據(jù)記錄核對(duì)裝置,其特征在于,包括: 獲取模塊,用于獲取核對(duì)需求對(duì)應(yīng)的目標(biāo)數(shù)據(jù)庫事務(wù)的日志數(shù)據(jù),所述日志數(shù)據(jù)存儲(chǔ)有所述目標(biāo)數(shù)據(jù)庫事務(wù)所包括的數(shù)據(jù)庫操作的操作詳情與操作結(jié)果的對(duì)應(yīng)關(guān)系; 確定模塊,用于根據(jù)所述數(shù)據(jù)庫操作的操作詳情與操作結(jié)果的對(duì)應(yīng)關(guān)系,確定待核對(duì)的結(jié)果記錄對(duì)應(yīng)的流水記錄; 核對(duì)模塊,用于對(duì)所述待核對(duì)的結(jié)果記錄和所述待核對(duì)的結(jié)果記錄對(duì)應(yīng)的流水記錄進(jìn)行核對(duì)處理。9.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述獲取模塊包括: 第一確定單元,用于根據(jù)所述核對(duì)需求,確定待核對(duì)時(shí)間段; 第二確定單元,用于根據(jù)所述待核對(duì)時(shí)間段,確定目標(biāo)時(shí)間段; 獲取單元,用于獲取在所述目標(biāo)時(shí)間段內(nèi)產(chǎn)生的數(shù)據(jù)庫事務(wù)的日志數(shù)據(jù)作為所述目標(biāo)數(shù)據(jù)庫事務(wù)的日志數(shù)據(jù)。10.根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述第一確定單元具體用于: 從所述核對(duì)需求中獲取所述待核對(duì)時(shí)間段;或者 從所述核對(duì)需求中獲取所述待核對(duì)的結(jié)果記錄,以起始結(jié)果記錄對(duì)應(yīng)的起始時(shí)間和當(dāng)前結(jié)果記錄對(duì)應(yīng)的當(dāng)前時(shí)間確定根區(qū)間,采用二分法對(duì)所述根區(qū)間進(jìn)行處理,獲得所述待核對(duì)的結(jié)果記錄所在的時(shí)間段作為所述待核對(duì)時(shí)間。11.根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述第二確定單元具體用于: 直接將所述待核對(duì)時(shí)間段作為所述目標(biāo)時(shí)間段;或者 獲取從第一時(shí)間點(diǎn)到所述待核對(duì)時(shí)間段的終止點(diǎn)的時(shí)間間隔作為所述目標(biāo)時(shí)間段,所述第一時(shí)間點(diǎn)是所述終止點(diǎn)之前且與所述終止點(diǎn)相距指定時(shí)間間隔的時(shí)間點(diǎn)。12.根據(jù)權(quán)利要求8-11任一項(xiàng)所述的裝置,其特征在于,所述獲取模塊具體用于: 向主數(shù)據(jù)庫或備份數(shù)據(jù)庫發(fā)送獲取請(qǐng)求; 接收所述主數(shù)據(jù)庫或備份數(shù)據(jù)庫根據(jù)所述獲取請(qǐng)求返回的所述目標(biāo)數(shù)據(jù)庫事務(wù)的日志數(shù)據(jù)。13.根據(jù)權(quán)利要求8-11任一項(xiàng)所述的裝置,其特征在于,所述確定模塊具體用于: 根據(jù)所述數(shù)據(jù)庫操作的操作詳情與操作結(jié)果的對(duì)應(yīng)關(guān)系,對(duì)所述數(shù)據(jù)庫操作進(jìn)行自平衡檢測(cè); 當(dāng)所述數(shù)據(jù)庫操作通過自平衡檢測(cè)后,從流水表中獲取與所述數(shù)據(jù)庫操作的操作詳情對(duì)應(yīng)的流水記錄,作為所述待核對(duì)的結(jié)果記錄對(duì)應(yīng)的流水記錄。
【文檔編號(hào)】G06F17/30GK105989059SQ201510065165
【公開日】2016年10月5日
【申請(qǐng)日】2015年2月9日
【發(fā)明人】邱碩, 王俊
【申請(qǐng)人】阿里巴巴集團(tuán)控股有限公司