本發(fā)明涉及數(shù)據(jù)建模和信息采集技術(shù)領(lǐng)域,特別涉及一種基于數(shù)據(jù)建模及實(shí)現(xiàn)數(shù)據(jù)增量的數(shù)據(jù)抽取工具。
背景技術(shù):
由于納稅人辦理納稅業(yè)務(wù)每日產(chǎn)生的大量業(yè)務(wù)數(shù)據(jù),使得源業(yè)務(wù)表數(shù)據(jù)量越來越大,服務(wù)器壓力越來越大,查詢速度越來越慢。
數(shù)據(jù)同步有兩種方式:一種是增量的同步,另一種是全量的同步。兩種方式各個(gè)各的好處,也各自的問題:
(1)增量同步,主要是在原來數(shù)據(jù)的基礎(chǔ)上利用自增量字段進(jìn)行數(shù)據(jù)抽取,如果源表數(shù)據(jù)修改,很容易造成數(shù)據(jù)的不一致;
(2)全量同步一般不會造成數(shù)據(jù)的不一致情況,但隨著數(shù)據(jù)量的增加,全量數(shù)據(jù)到最后往往會非常龐大,造成數(shù)據(jù)抽取緩慢。
基于上述問題,本發(fā)明提出了一種基于數(shù)據(jù)建模及實(shí)現(xiàn)數(shù)據(jù)增量的數(shù)據(jù)抽取工具。在優(yōu)化查詢效率和減少服務(wù)器壓力的前提下,根據(jù)業(yè)務(wù)需求分類建立數(shù)據(jù)模型并定制抽取計(jì)劃,既減輕了服務(wù)器壓力,也及時(shí)完成數(shù)據(jù)更新,確保了業(yè)務(wù)數(shù)據(jù)的時(shí)效性。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明為了彌補(bǔ)現(xiàn)有技術(shù)的缺陷,提供了一種簡單高效的基于數(shù)據(jù)建模及實(shí)現(xiàn)數(shù)據(jù)增量的數(shù)據(jù)抽取工具。
本發(fā)明是通過如下技術(shù)方案實(shí)現(xiàn)的:
一種基于數(shù)據(jù)建模及實(shí)現(xiàn)數(shù)據(jù)增量的數(shù)據(jù)抽取工具,其特征在于,其應(yīng)用包括以下步驟:
(1)創(chuàng)建數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)結(jié)構(gòu)包括表基本信息、字段信息和索引信息;
(2)創(chuàng)建抽取規(guī)則,抽取方式包括增量抽取和全量抽取,抽取規(guī)則組件包括查詢組件,更新組件,刪除組件和擴(kuò)展組件,建立源表與目標(biāo)表的對應(yīng)關(guān)系;
(3)定制抽取計(jì)劃,定制調(diào)度時(shí)間、頻率、周期;
(4)調(diào)度管理,分析數(shù)據(jù)模版使用的組件和數(shù)據(jù)形成規(guī)則,并最終生成說明文檔。
所述步驟(1)中,數(shù)據(jù)結(jié)構(gòu)是執(zhí)行抽取規(guī)則和抽取計(jì)劃的基礎(chǔ),系統(tǒng)會根據(jù)數(shù)據(jù)結(jié)構(gòu)生成數(shù)據(jù)模版;其基本信息包括表名、表顯示名稱、是否建表等字段的維護(hù);其字段信息包括字段名稱、字段顯示名稱、主鍵標(biāo)志、是否為空、序號等字段的維護(hù);其索引信息是針對數(shù)據(jù)模版表建立索引字段,優(yōu)化查詢效率。
所述步驟(2)中,抽取規(guī)則是實(shí)現(xiàn)數(shù)據(jù)模版增量抽取的核心;所述查詢組件用于執(zhí)行數(shù)據(jù)查詢插入操作;所述更新組件用于源表和數(shù)據(jù)模版效驗(yàn);所述刪除組件用于全量抽取,為了防止數(shù)據(jù)重復(fù),在執(zhí)行查詢插入數(shù)據(jù)前先執(zhí)行清空表數(shù)據(jù)操作;所述擴(kuò)展組件用于自定義編輯存儲過程。
所述步驟(4)中,調(diào)度管理包括血統(tǒng)分析和建立數(shù)據(jù)文檔;所述血統(tǒng)分析是指分析數(shù)據(jù)模版使用的組件,并圖形化展示抽取類型;所述建立數(shù)據(jù)文檔是指分析數(shù)據(jù)形成規(guī)則,并最終生成一份說明文檔。
所述基于數(shù)據(jù)建模及實(shí)現(xiàn)數(shù)據(jù)增量的數(shù)據(jù)抽取工具,實(shí)行三種增量方式:
(1)數(shù)據(jù)表中設(shè)置時(shí)間戳time,當(dāng)數(shù)據(jù)表中的任何一個(gè)字段變化時(shí),更新時(shí)間戳time;
(2)根據(jù)數(shù)據(jù)表的自增量字段fintime執(zhí)行操作;
(3)利用抽取規(guī)則的更新組件,將源表與目標(biāo)表進(jìn)行對比,根據(jù)驗(yàn)證源表執(zhí)行操作。
當(dāng)數(shù)據(jù)表記錄數(shù)增長不大,但是記錄內(nèi)容修改頻繁時(shí),應(yīng)用增量方式(1);所述增量方式(1)增量訪問的SQL語句為select 字段名1,字段名2 from 表名 where time >='上次訪問記錄里最后的時(shí)間'。
所述增量方式(2)增量訪問的SQL語句為select 字段名1,字段名2 from 表名 where fintime>上次訪問的fintime。
所述增量方式(3)中,將源表與目標(biāo)表進(jìn)行對比,當(dāng)主鍵數(shù)據(jù)一致時(shí)跳過;當(dāng)主鍵數(shù)據(jù)不一致時(shí)執(zhí)行UPDATE操作;當(dāng)主鍵不存在時(shí)執(zhí)行INSERT操作。
本發(fā)明的有益效果是:該基于數(shù)據(jù)建模及實(shí)現(xiàn)數(shù)據(jù)增量的數(shù)據(jù)抽取工具,分類定制數(shù)據(jù)模版,并根據(jù)源表數(shù)據(jù)量選擇合理的抽取方式,提高了數(shù)據(jù)模版的執(zhí)行效率,且無論使用增量或者全量方式都能確保數(shù)據(jù)的一致性,既優(yōu)化了查詢效率,又確保了業(yè)務(wù)數(shù)據(jù)的時(shí)效性。
具體實(shí)施方式
為了使本發(fā)明所要解決的技術(shù)問題、技術(shù)方案及有益效果更加清楚明白,以下結(jié)合實(shí)施例,對本發(fā)明進(jìn)行詳細(xì)的說明。應(yīng)當(dāng)說明的是,此處所描述的具體實(shí)施例僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
該基于數(shù)據(jù)建模及實(shí)現(xiàn)數(shù)據(jù)增量的數(shù)據(jù)抽取工具,其應(yīng)用包括以下步驟:
(1)創(chuàng)建數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)結(jié)構(gòu)包括表基本信息、字段信息和索引信息;
(2)創(chuàng)建抽取規(guī)則,抽取方式包括增量抽取和全量抽取,抽取規(guī)則組件包括查詢組件,更新組件,刪除組件和擴(kuò)展組件,建立源表與目標(biāo)表的對應(yīng)關(guān)系;
(3)定制抽取計(jì)劃,定制調(diào)度時(shí)間、頻率、周期;
(4)調(diào)度管理,分析數(shù)據(jù)模版使用的組件和數(shù)據(jù)形成規(guī)則,并最終生成說明文檔。
所述步驟(1)中,數(shù)據(jù)結(jié)構(gòu)是執(zhí)行抽取規(guī)則和抽取計(jì)劃的基礎(chǔ),系統(tǒng)會根據(jù)數(shù)據(jù)結(jié)構(gòu)生成數(shù)據(jù)模版;其基本信息包括表名、表顯示名稱、是否建表等字段的維護(hù);其字段信息包括字段名稱、字段顯示名稱、主鍵標(biāo)志、是否為空、序號等字段的維護(hù);其索引信息是針對數(shù)據(jù)模版表建立索引字段,優(yōu)化查詢效率。
數(shù)據(jù)模版是依據(jù)用戶需求,設(shè)計(jì)數(shù)據(jù)模型,并根據(jù)數(shù)據(jù)模型,進(jìn)行合理建表、建立源表與目標(biāo)表的對應(yīng)關(guān)系,根據(jù)定制的抽取規(guī)則和計(jì)劃實(shí)現(xiàn)自動(或手動)抽取數(shù)據(jù)。
建立數(shù)據(jù)模版有兩方面好處:一方面利于主題類信息查詢。建立數(shù)據(jù)模版后查詢直接從數(shù)據(jù)模版中查詢即可,不需要每次都從多個(gè)源表中進(jìn)行匯總統(tǒng)計(jì);另一方面提高了查詢效率,減少了服務(wù)器壓力。部分查詢由于數(shù)據(jù)量大,每次都從多張?jiān)幢碇嘘P(guān)聯(lián)統(tǒng)計(jì)查詢,往往效率很慢,而且對服務(wù)器的壓力也很大。而建立數(shù)據(jù)模版后,就可以直接從模型中查詢,提高了查詢效率和減緩服務(wù)器壓力。
所述步驟(2)中,抽取規(guī)則是實(shí)現(xiàn)數(shù)據(jù)模版增量抽取的核心;所述查詢組件用于執(zhí)行數(shù)據(jù)查詢插入操作;所述更新組件用于源表和數(shù)據(jù)模版效驗(yàn);所述刪除組件用于全量抽取,為了防止數(shù)據(jù)重復(fù),在執(zhí)行查詢插入數(shù)據(jù)前先執(zhí)行清空表數(shù)據(jù)操作;所述擴(kuò)展組件用于自定義編輯存儲過程。
所述步驟(4)中,調(diào)度管理包括血統(tǒng)分析和建立數(shù)據(jù)文檔;所述血統(tǒng)分析是指分析數(shù)據(jù)模版使用的組件,并圖形化展示抽取類型;所述建立數(shù)據(jù)文檔是指分析數(shù)據(jù)形成規(guī)則,并最終生成一份說明文檔。
所述基于數(shù)據(jù)建模及實(shí)現(xiàn)數(shù)據(jù)增量的數(shù)據(jù)抽取工具,實(shí)行三種增量方式:
(1)數(shù)據(jù)表中設(shè)置時(shí)間戳time,當(dāng)數(shù)據(jù)表中的任何一個(gè)字段變化時(shí),更新時(shí)間戳time;
(2)根據(jù)數(shù)據(jù)表的自增量字段fintime執(zhí)行操作;
(3)利用抽取規(guī)則的更新組件,將源表與目標(biāo)表進(jìn)行對比,根據(jù)驗(yàn)證源表執(zhí)行操作。
當(dāng)數(shù)據(jù)表記錄數(shù)增長不大,但是記錄內(nèi)容修改頻繁時(shí),應(yīng)用增量方式(1);所述增量方式(1)增量訪問的SQL語句為select 字段名1,字段名2 from 表名 where time >='上次訪問記錄里最后的時(shí)間'。
所述增量方式(2)增量訪問的SQL語句為select 字段名1,字段名2 from 表名 where fintime>上次訪問的fintime。
所述增量方式(3)中,將源表與目標(biāo)表進(jìn)行對比,當(dāng)主鍵數(shù)據(jù)一致時(shí)跳過;當(dāng)主鍵數(shù)據(jù)不一致時(shí)執(zhí)行UPDATE操作;當(dāng)主鍵不存在時(shí)執(zhí)行INSERT操作。