国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種數(shù)據(jù)庫數(shù)據(jù)內(nèi)容高速比對方法與流程

      文檔序號(hào):11230520閱讀:618來源:國知局
      一種數(shù)據(jù)庫數(shù)據(jù)內(nèi)容高速比對方法與流程

      本發(fā)明涉及一種數(shù)據(jù)庫數(shù)據(jù)內(nèi)容高速比對方法,屬于數(shù)據(jù)庫數(shù)據(jù)復(fù)制技術(shù)領(lǐng)域。



      背景技術(shù):

      隨著信息技術(shù)的深入發(fā)展,應(yīng)用系統(tǒng)的不斷升級(jí),系統(tǒng)之間的集成貫通越來越多的需要數(shù)據(jù)交互,數(shù)據(jù)復(fù)制已經(jīng)逐步成為了信息系統(tǒng)融合的關(guān)鍵部分。然而,所有針對數(shù)據(jù)復(fù)制與交互都包含著一個(gè)基本的要求——源端與目標(biāo)端數(shù)據(jù)復(fù)制一致,數(shù)據(jù)庫數(shù)據(jù)內(nèi)容比對技術(shù)正是在這種要求下產(chǎn)生的。國內(nèi)外關(guān)系型數(shù)據(jù)庫數(shù)據(jù)比對技術(shù)主要采用串行數(shù)據(jù)比較的方法實(shí)現(xiàn)兩端數(shù)據(jù)比對,此類比對方法在面對海量數(shù)據(jù)時(shí),不能較好的解決數(shù)據(jù)庫數(shù)據(jù)比對效率問題,嚴(yán)重影響用戶體驗(yàn)。



      技術(shù)實(shí)現(xiàn)要素:

      為了解決上述技術(shù)問題,本發(fā)明提供了一種數(shù)據(jù)庫數(shù)據(jù)內(nèi)容高速比對方法。

      為了達(dá)到上述目的,本發(fā)明所采用的技術(shù)方案是:

      一種數(shù)據(jù)庫數(shù)據(jù)內(nèi)容高速比對方法,包括以下步驟,

      獲取數(shù)據(jù)庫源表和目標(biāo)表,分別對源表和目標(biāo)表中的數(shù)據(jù)排序;

      獲取源表中最小主鍵字段a和最大主鍵字段b,獲取目標(biāo)表中最小主鍵字段c和最大主鍵字段d;

      根據(jù)a、b、c、d的大小,定義若干個(gè)區(qū)間,根據(jù)各條數(shù)據(jù)主鍵字段的大小,對源表和目標(biāo)表中的數(shù)據(jù)進(jìn)行區(qū)間劃分;

      比較同一區(qū)間內(nèi)源表和目標(biāo)表中的數(shù)據(jù)。

      區(qū)間的劃分如下,

      當(dāng)a≤c、b≤d,則定義的區(qū)間為[a,c]、[c,b]、[b,d];根據(jù)各條數(shù)據(jù)主鍵字段的大小,源表中的數(shù)據(jù)被劃分成[a,c]和[c,b]兩個(gè)區(qū)間,目標(biāo)表中的數(shù)據(jù)被劃分成[b,d]和[c,b]兩個(gè)區(qū)間;

      當(dāng)a≤c、b≥d,則定義的區(qū)間為[a,c]、[c,d]、[d,b];根據(jù)各條數(shù)據(jù)主鍵字段的大小,源表中的數(shù)據(jù)被劃分成[a,c]、[c,d]和[d,b]三個(gè)區(qū)間,目標(biāo)表中的數(shù)據(jù)被劃分成[c,d]一個(gè)區(qū)間;

      當(dāng)a≥c、b≤d,則定義的區(qū)間為[c,a]、[a,b]、[b,d];根據(jù)各條數(shù)據(jù)主鍵字段的大小,源表中的數(shù)據(jù)被劃分成[a,b]一個(gè)區(qū)間,目標(biāo)表中的數(shù)據(jù)被劃分成[c,a]、[a,b]和[b,d]三個(gè)區(qū)間;

      當(dāng)a≥c、b≥d,則定義的區(qū)間為[c,a]、[a,d]、[d,b];根據(jù)各條數(shù)據(jù)主鍵字段的大小,源表中的數(shù)據(jù)被劃分成[a,d]和[d,b]二個(gè)區(qū)間,目標(biāo)表中的數(shù)據(jù)被劃分成[c,a]和[a,d]二個(gè)區(qū)間。

      比較同一區(qū)間內(nèi)源表和目標(biāo)表中數(shù)據(jù)的過程為,

      s41,分別獲取源表和目標(biāo)表中的一條數(shù)據(jù);

      s42,判斷兩條數(shù)據(jù)是否全部為空,如果是,則結(jié)束;如果不是則轉(zhuǎn)至s43;

      s43,判斷兩條數(shù)據(jù)是否全部不為空,如果是,則依次進(jìn)行主鍵字段比較和非主鍵字段比較,如果從源表獲取的數(shù)據(jù)為空,則判定目標(biāo)表數(shù)據(jù)大于源表數(shù)據(jù),分別獲取源表和目標(biāo)表中的下一條數(shù)據(jù),轉(zhuǎn)至步驟s42,如果從目標(biāo)表獲取的數(shù)據(jù)為空,則判定源表數(shù)據(jù)大于目標(biāo)表數(shù)據(jù),分別獲取源表和目標(biāo)表中的下一條數(shù)據(jù),轉(zhuǎn)至步驟s42。

      主鍵字段比較的過程為,

      比較兩條數(shù)據(jù)的主鍵字段類型,如果類型不相同,則判定兩條數(shù)據(jù)不相等,如果是相同類型,則進(jìn)行主鍵字段內(nèi)容比較,具體日下:

      當(dāng)源表數(shù)據(jù)主鍵字段內(nèi)容大于目標(biāo)表數(shù)據(jù)主鍵字段內(nèi)容,判定源表數(shù)據(jù)大于目標(biāo)表數(shù)據(jù),分別獲取源表和目標(biāo)表中的下一條數(shù)據(jù)進(jìn)行比較;

      當(dāng)源表數(shù)據(jù)主鍵字段內(nèi)容小于目標(biāo)表數(shù)據(jù)主鍵字段內(nèi)容,判定源表數(shù)據(jù)小于目標(biāo)表數(shù)據(jù),分別獲取源表和目標(biāo)表中的下一條數(shù)據(jù)進(jìn)行比較;

      當(dāng)源表數(shù)據(jù)主鍵字段內(nèi)容等于目標(biāo)表數(shù)據(jù)主鍵字段內(nèi)容,進(jìn)行非主鍵字段比較。

      非主鍵字段比較的過程為,

      比較兩條數(shù)據(jù)的非主鍵字段類型,如果類型不相同,則判定兩條數(shù)據(jù)不相等,如果是相同類型,則進(jìn)行非主鍵字段內(nèi)容比較,具體日下:

      當(dāng)源表數(shù)據(jù)非主鍵字段內(nèi)容大于目標(biāo)表數(shù)據(jù)主鍵字段內(nèi)容,判定源表數(shù)據(jù)大于目標(biāo)表數(shù)據(jù),分別獲取源表和目標(biāo)表中的下一條數(shù)據(jù)進(jìn)行比較;

      當(dāng)源表數(shù)據(jù)非主鍵字段內(nèi)容小于目標(biāo)表數(shù)據(jù)主鍵字段內(nèi)容,判定源表數(shù)據(jù)小于目標(biāo)表數(shù)據(jù),分別獲取源表和目標(biāo)表中的下一條數(shù)據(jù)進(jìn)行比較;

      當(dāng)源表數(shù)據(jù)非主鍵字段內(nèi)容等于目標(biāo)表數(shù)據(jù)非主鍵字段內(nèi)容,判定兩條數(shù)據(jù)相等,分別獲取源表和目標(biāo)表中的下一條數(shù)據(jù)進(jìn)行比較。

      比較過程可在預(yù)先定義的比較器內(nèi)進(jìn)行,比較器的大小根據(jù)實(shí)際計(jì)算資源、存儲(chǔ)資源配置情況動(dòng)態(tài)調(diào)整。

      本發(fā)明所達(dá)到的有益效果:本發(fā)明通過對源端與目標(biāo)端數(shù)據(jù)的批量提取并對數(shù)據(jù)分區(qū)批量比對,從而較快速的完成數(shù)據(jù)庫兩端數(shù)據(jù)比對;通過該方法可以快速高效的比對兩端數(shù)據(jù)差異,強(qiáng)化數(shù)據(jù)一致性檢查手段,可以對數(shù)據(jù)復(fù)制過程中產(chǎn)生的不一致及時(shí)做出調(diào)整,對確保數(shù)據(jù)庫的安全穩(wěn)定的運(yùn)行,具有重要的實(shí)際意義。

      附圖說明

      圖1為本發(fā)明的流程圖;

      圖2為數(shù)據(jù)對比的流程圖;

      圖3為數(shù)據(jù)對比的架構(gòu)圖。

      具體實(shí)施方式

      下面結(jié)合附圖對本發(fā)明作進(jìn)一步描述。以下實(shí)施例僅用于更加清楚地說明本發(fā)明的技術(shù)方案,而不能以此來限制本發(fā)明的保護(hù)范圍。

      如圖1所示,一種數(shù)據(jù)庫數(shù)據(jù)內(nèi)容高速比對方法,包括以下步驟:

      步驟1,獲取數(shù)據(jù)庫源表和目標(biāo)表,分別對源表和目標(biāo)表中的數(shù)據(jù)排序。

      具體過程為:

      s11,檢查數(shù)據(jù)庫源表與目標(biāo)表是否有主鍵,如果沒有則通過添加附加日志的方式增加主鍵;

      s12,采用jdbc或者odbc等方式獲取數(shù)據(jù)庫源表與目標(biāo)表;

      s13,采用執(zhí)行sql排序或者自定義排序的方式對數(shù)據(jù)排序。

      步驟2,獲取源表中最小主鍵字段a和最大主鍵字段b,獲取目標(biāo)表中最小主鍵字段c和最大主鍵字段d。

      步驟3,根據(jù)a、b、c、d的大小,定義若干個(gè)區(qū)間,根據(jù)各條數(shù)據(jù)主鍵字段的大小,對源表和目標(biāo)表中的數(shù)據(jù)進(jìn)行區(qū)間劃分。

      具體如下:

      當(dāng)a≤c、b≤d,則定義的區(qū)間為[a,c]、[c,b]、[b,d];源表中的數(shù)據(jù)被劃分成[a,c]和[c,b]兩個(gè)區(qū)間,目標(biāo)表中的數(shù)據(jù)被劃分成[b,d]和[c,b]兩個(gè)區(qū)間;

      當(dāng)a≤c、b≥d,則定義的區(qū)間為[a,c]、[c,d]、[d,b];源表中的數(shù)據(jù)被劃分成[a,c]、[c,d]和[d,b]三個(gè)區(qū)間,目標(biāo)表中的數(shù)據(jù)被劃分成[c,d]一個(gè)區(qū)間;

      當(dāng)a≥c、b≤d,則定義的區(qū)間為[c,a]、[a,b]、[b,d];源表中的數(shù)據(jù)被劃分成[a,b]一個(gè)區(qū)間,目標(biāo)表中的數(shù)據(jù)被劃分成[c,a]、[a,b]和[b,d]三個(gè)區(qū)間;

      當(dāng)a≥c、b≥d,則定義的區(qū)間為[c,a]、[a,d]、[d,b];源表中的數(shù)據(jù)被劃分成[a,d]和[d,b]二個(gè)區(qū)間,目標(biāo)表中的數(shù)據(jù)被劃分成[c,a]和[a,d]二個(gè)區(qū)間。

      步驟4,比較同一區(qū)間內(nèi)源表和目標(biāo)表中的數(shù)據(jù),位于不同區(qū)間的則認(rèn)為數(shù)據(jù)不同。

      根據(jù)上述劃分,當(dāng)a≤c、b≤d時(shí),比較[c,b]區(qū)間內(nèi)源表和目標(biāo)表中的數(shù)據(jù);當(dāng)a≤c、b≥d時(shí),比較[c,d]區(qū)間內(nèi)源表和目標(biāo)表中的數(shù)據(jù);當(dāng)a≥c、b≤d時(shí),比較[a,b]區(qū)間內(nèi)源表和目標(biāo)表中的數(shù)據(jù);當(dāng)a≥c、b≥d時(shí),比較[a,d]區(qū)間內(nèi)源表和目標(biāo)表中的數(shù)據(jù)。

      如圖2所示,比較過程如下:

      s41,分別獲取源表和目標(biāo)表中的一條數(shù)據(jù)(圖中rowsource為源表數(shù)據(jù),rowtarget為目標(biāo)表數(shù)據(jù));

      s42,判斷兩條數(shù)據(jù)是否全部為空,如果是,則結(jié)束;如果不是則轉(zhuǎn)至s43;

      s43,判斷兩條數(shù)據(jù)是否全部不為空,如果是,則依次進(jìn)行主鍵字段比較和非主鍵字段比較,如果從源表獲取的數(shù)據(jù)為空,則判定目標(biāo)表數(shù)據(jù)大于源表數(shù)據(jù),分別獲取源表和目標(biāo)表中的下一條數(shù)據(jù),轉(zhuǎn)至步驟s42,如果從目標(biāo)表獲取的數(shù)據(jù)為空,則判定源表數(shù)據(jù)大于目標(biāo)表數(shù)據(jù),分別獲取源表和目標(biāo)表中的下一條數(shù)據(jù),轉(zhuǎn)至步驟s42。

      其中,主鍵字段比較的過程為:

      比較兩條數(shù)據(jù)的主鍵字段類型,如果類型不相同,則判定兩條數(shù)據(jù)不相等,如果是相同類型,則進(jìn)行主鍵字段內(nèi)容比較,具體日下:

      當(dāng)源表數(shù)據(jù)主鍵字段內(nèi)容大于目標(biāo)表數(shù)據(jù)主鍵字段內(nèi)容,判定源表數(shù)據(jù)大于目標(biāo)表數(shù)據(jù),返回1,分別獲取源表和目標(biāo)表中的下一條數(shù)據(jù)進(jìn)行比較;

      當(dāng)源表數(shù)據(jù)主鍵字段內(nèi)容小于目標(biāo)表數(shù)據(jù)主鍵字段內(nèi)容,判定源表數(shù)據(jù)小于目標(biāo)表數(shù)據(jù),返回-1,分別獲取源表和目標(biāo)表中的下一條數(shù)據(jù)進(jìn)行比較;

      當(dāng)源表數(shù)據(jù)主鍵字段內(nèi)容等于目標(biāo)表數(shù)據(jù)主鍵字段內(nèi)容,返回0,進(jìn)行非主鍵字段比較。

      非主鍵字段比較的過程為:

      比較兩條數(shù)據(jù)的非主鍵字段類型,如果類型不相同,則判定兩條數(shù)據(jù)不相等,如果是相同類型,則進(jìn)行非主鍵字段內(nèi)容比較,具體日下:

      當(dāng)源表數(shù)據(jù)非主鍵字段內(nèi)容大于目標(biāo)表數(shù)據(jù)主鍵字段內(nèi)容,判定源表數(shù)據(jù)大于目標(biāo)表數(shù)據(jù),返回1,分別獲取源表和目標(biāo)表中的下一條數(shù)據(jù)進(jìn)行比較;

      當(dāng)源表數(shù)據(jù)非主鍵字段內(nèi)容小于目標(biāo)表數(shù)據(jù)主鍵字段內(nèi)容,判定源表數(shù)據(jù)小于目標(biāo)表數(shù)據(jù),返回-1,分別獲取源表和目標(biāo)表中的下一條數(shù)據(jù)進(jìn)行比較;

      當(dāng)源表數(shù)據(jù)非主鍵字段內(nèi)容等于目標(biāo)表數(shù)據(jù)非主鍵字段內(nèi)容,判定兩條數(shù)據(jù)相等,返回-0,分別獲取源表和目標(biāo)表中的下一條數(shù)據(jù)進(jìn)行比較。

      上述的比較過程可在預(yù)先定義的比較器內(nèi)進(jìn)行,對數(shù)據(jù)進(jìn)行比較,比較器的大小根據(jù)實(shí)際計(jì)算資源、存儲(chǔ)資源配置情況動(dòng)態(tài)調(diào)整;比較器可采用java、c/c++等編程語言自帶的比較函數(shù),也可以采用重寫比較方法實(shí)現(xiàn)數(shù)據(jù)比對。

      上述方法的原理如圖3所示,通過對源端與目標(biāo)端數(shù)據(jù)的提取,對數(shù)據(jù)分區(qū)比對,從而較快速的完成數(shù)據(jù)庫兩端數(shù)據(jù)比對;通過該方法可以快速高效的比對兩端數(shù)據(jù)差異,強(qiáng)化數(shù)據(jù)一致性檢查手段,可以對數(shù)據(jù)復(fù)制過程中產(chǎn)生的不一致及時(shí)做出調(diào)整,對確保數(shù)據(jù)庫的安全穩(wěn)定的運(yùn)行,具有重要的實(shí)際意義。

      以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明技術(shù)原理的前提下,還可以做出若干改進(jìn)和變形,這些改進(jìn)和變形也應(yīng)視為本發(fā)明的保護(hù)范圍。

      當(dāng)前第1頁1 2 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會(huì)獲得點(diǎn)贊!
      1