專利名稱::一種海量數(shù)據(jù)加載和查詢的方法
技術(shù)領(lǐng)域:
:本發(fā)明屬于計算機領(lǐng)域,具體涉及一種海量數(shù)據(jù)加載和査詢的方法。技術(shù)背景隨著企業(yè)信息化以及互聯(lián)網(wǎng)的飛速發(fā)展,海量數(shù)據(jù)處理已經(jīng)成為重中之重,特別是電信行業(yè)和互聯(lián)網(wǎng)行業(yè)更是如此,必須使用一些特殊的方法來處理海量數(shù)據(jù)。基于此本發(fā)明提出一種能夠快速加載海量數(shù)據(jù),同時可査詢的方法。通常情況下,提高査詢速度的方法是建立索引,以空間來換時間。這對小批量的數(shù)據(jù)影響不大或者說感覺不到。但當(dāng)數(shù)據(jù)量非常大的時候,該矛盾就比較明顯,嚴重影響加載速度。當(dāng)然,如果采用較好的硬件一定會有很大的改善,如使用巨型機比使用DELL2850的速度快很多。現(xiàn)有技術(shù)中,數(shù)據(jù)加載的同時也建立索引,那么隨著加載數(shù)據(jù)量增加,加載速度越來越小,原因是各個關(guān)系數(shù)據(jù)庫隨著數(shù)量的增加,索引的存儲結(jié)構(gòu)在不斷地加大,而當(dāng)插入一條數(shù)據(jù)的時候都需要維護這些索引,故造成加載速度在不斷地下降。此外,加載是為查詢服務(wù),也就是說加載和査詢要綜合考慮,基于本文的加載方法,形成綜合緩存數(shù)據(jù)和分區(qū)表數(shù)據(jù)同時査詢的方法,完全與常用的單表査詢方法不同。
發(fā)明內(nèi)容本發(fā)明是在相當(dāng)?shù)男詢r比的基礎(chǔ)上,即都使用DELL2850來尋找一個最優(yōu)的方案。使用合適粒度的臨時表緩存各個時間段的數(shù)據(jù),在臨時表上不建立索引,緩存完各自時間段的數(shù)據(jù)后,再將該時間段的數(shù)據(jù)統(tǒng)一建立索引后轉(zhuǎn)移到分區(qū)表中。這樣查詢就分成兩個部分聯(lián)合査詢一種是緩存在臨時表中的數(shù)據(jù),一種是分區(qū)表的數(shù)據(jù)。本發(fā)明公開一種海量數(shù)據(jù)的加載方法,其步驟如下1)解析程序模塊按照時間順序生成目錄,產(chǎn)生文件,生成數(shù)據(jù)源;2)用臨時表緩存各個連續(xù)時間段的數(shù)據(jù),得到各分區(qū)段的數(shù)據(jù);3)將上述各分區(qū)段的數(shù)據(jù)統(tǒng)一建立索引;4)加載程序模塊調(diào)用數(shù)據(jù)轉(zhuǎn)移接口,將數(shù)據(jù)轉(zhuǎn)移到分區(qū)表。進一步,在步驟4)后增加如下步驟;對分區(qū)表中的數(shù)據(jù)進行合并,按照新的時間單位生成大的分區(qū)業(yè)務(wù)表。本發(fā)明還公開了一種海量數(shù)據(jù)的查詢方法,其步驟如下1)采用如權(quán)利要求l所述的方法加載數(shù)據(jù);2)將分區(qū)表中的數(shù)據(jù)合并成大的分區(qū)業(yè)務(wù)表;3)數(shù)據(jù)庫對臨時表和分區(qū)表進行查詢。本發(fā)明的海量數(shù)據(jù)査詢是在數(shù)據(jù)加載的基礎(chǔ)上進行的,在分布式海量數(shù)據(jù)處理產(chǎn)品中,加載和査詢同時使用,可解決遇到的加載難題。本發(fā)明的優(yōu)點和積極效果如下1.使用本發(fā)明,原來在標(biāo)準(zhǔn)DELL2850服務(wù)器上每秒只能加載500條左右(每條記錄大概平均0.4K左右,一共有27個字段,ll個索引)提高到每秒加載5000條左右,在保持當(dāng)天數(shù)據(jù)査詢速度的基礎(chǔ)上使歷史數(shù)據(jù)的査詢速度也有所提高,原因是對分區(qū)表的數(shù)據(jù)按照業(yè)務(wù)需求進行合并,以供后期的査詢使用。2.本發(fā)明基本不受時間和加載的總流量的限制,只與緩存時間段內(nèi)的數(shù)據(jù)量有關(guān)系,但與總體數(shù)據(jù)量沒有任何關(guān)系,因此可以滿足高速海量數(shù)據(jù)加載以及有相關(guān)查詢的業(yè)務(wù)需求。圖l本發(fā)明的數(shù)據(jù)源生成方法示意圖;圖2本發(fā)明的加載方法操作圖;圖3本發(fā)明的分區(qū)段合并示意圖;圖4本發(fā)明的査詢流程圖。具體實施方式本實施例使用關(guān)系數(shù)據(jù)庫oracle10g來實現(xiàn),其它關(guān)系數(shù)據(jù)庫同樣適用;操作系統(tǒng)采用RedFlagDC5.0;硬件環(huán)境采用DELL2850標(biāo)準(zhǔn)服務(wù)器,具體配置如表1所示,根據(jù)業(yè)務(wù)需求在該表上建立索引。此外,為了保證數(shù)據(jù)的合法性,需要在臨時表上建立一個主鍵索引;在上述條件下對直接入普通表與直接入臨時表加建立索引加轉(zhuǎn)移數(shù)據(jù)方案對比產(chǎn)生的加載效果如表2所示,同時對已經(jīng)積累的1億條數(shù)據(jù)按照給出一個已知條件進行査詢比較如表3所示。從表中數(shù)據(jù)可以看出在査詢速度比較穩(wěn)定的基礎(chǔ)上,加載速度增加10倍左右。表1Dell2850配置的結(jié)構(gòu)表<table>tableseeoriginaldocumentpage5</column></row><table>表2加載效果比較表<table>tableseeoriginaldocumentpage5</column></row><table>表3査詢效果比較表<table>tableseeoriginaldocumentpage5</column></row><table>本方法要求按照時間先后順序生成目錄,本實施例在對應(yīng)的目錄中按照時間先后順序產(chǎn)生bcp文件,其生成的文件大小支持記錄條數(shù)或時間超時兩種配置,當(dāng)任何條件觸發(fā)的時候都可以生成文件,以此來作為加載的數(shù)據(jù)源。本實施例使用的數(shù)據(jù)源是解析程序模塊,主要是對互聯(lián)網(wǎng)協(xié)議數(shù)據(jù)進行實時還原解析,并生成待處理的加載文件,以5分鐘生成的文件做為一個文件夾,該文件夾以整點5分鐘的時間整數(shù)來命名,而且此實施方法的5分鐘支持可配置。數(shù)據(jù)源的生成方法如圖l所示。數(shù)據(jù)加載方式采用oracleOCI的DirectPath方式,加載程序模塊按照時間目錄先后來處理加載文件。本實施例中以l個小時為單位,l個小時是可以根據(jù)需求自行配置的,當(dāng)緩存l個小時的數(shù)據(jù)后,加載程序模塊再調(diào)用建立索引的接口,統(tǒng)一建立ll個索引,完成建立索引后加載程序模塊再調(diào)用數(shù)據(jù)轉(zhuǎn)移接口,即將數(shù)據(jù)轉(zhuǎn)移到分區(qū)表中。具體的操作流程圖見圖2。為了提高查詢性能,對緩存分割的分區(qū)段進行合并,本實施例將每個小時產(chǎn)生的緩存時間段的數(shù)據(jù),合并成按照天來保存的時間段數(shù)據(jù),也就是說將每個小時分區(qū)段數(shù)據(jù)合并成每天的分區(qū)段數(shù)據(jù),從而形成以一天為單位的大的分區(qū)業(yè)務(wù)表。合并是選擇在業(yè)務(wù)量較小的每天晚上12:20觸發(fā)并檢驗是否符合當(dāng)天緩存數(shù)據(jù)全部交換至對應(yīng)的分區(qū)表的分區(qū)。實際中的調(diào)用時間設(shè)置可以根據(jù)需要進行定制。合并流程如圖3所示。本發(fā)明的整個査詢方法流程如圖4所示,當(dāng)業(yè)務(wù)觸發(fā)查詢條件的時候,通過業(yè)務(wù)程序?qū)⒄{(diào)用分布式中間件,中間件再傳給oracle數(shù)據(jù)庫,數(shù)據(jù)庫根據(jù)調(diào)用時間條件判斷查詢是在臨時表還是在分區(qū)表,并判斷在哪些臨時表和哪些分區(qū)表,判斷的依據(jù)就是根據(jù)記錄表與査詢時間段的關(guān)系,該記錄表記錄哪些數(shù)據(jù)在分布表,哪些數(shù)據(jù)在臨時表。也就是說,當(dāng)査詢時間段包含臨時表時間段,就按照給定的時間段來査詢臨時表,即調(diào)用臨時表査詢接口;當(dāng)査詢時間段包含分區(qū)表時間段,就按照給定的時間段來査詢分區(qū)表,即調(diào)用分區(qū)表査詢接口,然后將兩個結(jié)果集進行聯(lián)合。緩存表査詢由于數(shù)據(jù)量小進行全表掃描或按照主鍵索引掃描,而分區(qū)表有索引以及分區(qū)設(shè)計,保證了査詢準(zhǔn)確性和快速性。盡管為說明目的公開了本發(fā)明的具體實施例和附圖,其目的在于幫助理解本發(fā)明的內(nèi)容并據(jù)以實施,但是本領(lǐng)域的技術(shù)人員可以理解在不脫離本發(fā)明及所附的權(quán)利要求的精神和范圍內(nèi),各種替換、變化和修改都是可能的。本發(fā)明不應(yīng)局限于本說明書最佳實施例和附圖所公開的內(nèi)容,本發(fā)明要求保護的范圍以權(quán)利要求書界定的范圍為準(zhǔn)。權(quán)利要求1.一種海量數(shù)據(jù)的加載方法,其步驟如下1)解析程序模塊按照時間順序生成目錄,產(chǎn)生文件,生成數(shù)據(jù)源;2)用臨時表緩存各個連續(xù)時間段的數(shù)據(jù),得到各分區(qū)段的數(shù)據(jù);3)將上述各分區(qū)段的數(shù)據(jù)統(tǒng)一建立索引;4)加載程序模塊調(diào)用數(shù)據(jù)轉(zhuǎn)移接口,將數(shù)據(jù)轉(zhuǎn)移到分區(qū)表。2.如權(quán)利要求l所述的一種海量數(shù)據(jù)的加載方法,其特征在于所述步驟2)中的各個連續(xù)時間段的長度相同。3.如權(quán)利要求l所述的一種海量數(shù)據(jù)的加載方法,其特征在于在步驟4)后增加如下步驟;對分區(qū)表中的數(shù)據(jù)進行合并,按照新的時間單位生成大的分區(qū)業(yè)務(wù)表。4.一種海量數(shù)據(jù)的査詢方法,其步驟如下1)采用如權(quán)利要求l所述的方法加載數(shù)據(jù);2)將分區(qū)表中的數(shù)據(jù)合并成大的分區(qū)業(yè)務(wù)表;3)數(shù)據(jù)庫對臨時表和分區(qū)表進行査詢。5.如權(quán)利要求4所述的一種海量數(shù)據(jù)的查詢方法,其特征在于步驟l)中的加載數(shù)據(jù)中各個連續(xù)時間段的長度相同。6.如權(quán)利要求4所述的一種海量數(shù)據(jù)的查詢方法,其特征在于步驟3)中的數(shù)據(jù)庫進行的查詢?yōu)閿?shù)據(jù)庫根據(jù)調(diào)用時間條件判斷查詢是在臨時表還是在分區(qū)表,并判斷在哪些臨時表和哪些分區(qū)表,當(dāng)査詢時間段出現(xiàn)在臨時表時,即調(diào)用臨時表査詢接口;當(dāng)査詢時間段出現(xiàn)在分區(qū)表時,即調(diào)用分區(qū)表查詢接口,然后將兩個結(jié)果集進行聯(lián)合。全文摘要本發(fā)明屬于計算機領(lǐng)域,具體涉及一種處理海量數(shù)據(jù)加載和查詢的方法。本發(fā)明使用合適粒度的臨時表緩存各個時間段的數(shù)據(jù),在臨時表上不建立索引或建立一個主鍵索引,處理完各自時間段的數(shù)據(jù)后,再將該時間段的數(shù)據(jù)統(tǒng)一建立索引后轉(zhuǎn)移到分區(qū)表中。本發(fā)明采用對分區(qū)表的數(shù)據(jù)按照業(yè)務(wù)需求進行合并,提高查詢速度;并且只與緩存時間段內(nèi)的數(shù)據(jù)量有關(guān)系,可以滿足高速海量數(shù)據(jù)加載環(huán)境以及有相關(guān)查詢的業(yè)務(wù)需求。文檔編號G06F17/30GK101251861SQ20081010212公開日2008年8月27日申請日期2008年3月18日優(yōu)先權(quán)日2008年3月18日發(fā)明者朱賀軍申請人:北京銳安科技有限公司