專利名稱::一種甲骨文系統(tǒng)數(shù)據(jù)管理方法及其裝置的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及甲骨文系統(tǒng)(oracle)數(shù)據(jù)庫管理領(lǐng)域,更具體地,本發(fā)明涉及在計算機系統(tǒng)中oracle數(shù)據(jù)管理的方法和裝置。
背景技術(shù):
:在oracle存儲過程中,對于數(shù)據(jù)量較小(通常在2000條記錄以下,如代碼轉(zhuǎn)換表),但又需要頻繁查詢的表,通常會成為程序執(zhí)行效率的瓶頸。例如個人征信系統(tǒng)中上報給人民銀行征信中心的報文需要將ODS代碼轉(zhuǎn)換為人民銀行征信中心代碼,針對每個賬戶(假設(shè)有1億個賬戶)需要代碼轉(zhuǎn)換的屬性有30個左右,即,每個月底最少要訪問代碼對照表30億次,對這樣的問題,通常的做法是使用表關(guān)聯(lián)查詢,將需要轉(zhuǎn)換的代碼作為關(guān)聯(lián)條件與相應(yīng)的代碼轉(zhuǎn)換表進(jìn)行關(guān)聯(lián),從而得到轉(zhuǎn)換后的代碼,該技術(shù)實現(xiàn)簡單,而且oracle等數(shù)據(jù)庫系統(tǒng)也會自動完成表關(guān)聯(lián)查詢的優(yōu)化(例如,oracle系統(tǒng)一般會對關(guān)聯(lián)表的記錄先做有條件過濾,然后進(jìn)行連接條件查詢,這樣可以使多表查詢盡可能的高效)。但由于表關(guān)聯(lián)查詢在每次執(zhí)行之前都需要進(jìn)行自動優(yōu)化,以及對小數(shù)據(jù)量數(shù)據(jù)查詢(如代碼轉(zhuǎn)換表中的數(shù)據(jù))有頻繁的磁盤讀操作,致使存儲過程執(zhí)行效率下降。
發(fā)明內(nèi)容本發(fā)明是為了在oracle數(shù)據(jù)管理過程中,減少讀取磁盤次數(shù)和提高查詢效率,提供一種oracle數(shù)據(jù)管理方法,本發(fā)明還提供一種oracle數(shù)據(jù)管理裝置,用以保證上述方法在實際中實現(xiàn)和應(yīng)用。本發(fā)明提供的一種曱骨文系統(tǒng)數(shù)據(jù)管理方法包括如下步驟步驟a,在甲骨文系統(tǒng)中創(chuàng)建哈希表,構(gòu)造所述哈希表的下標(biāo)結(jié)構(gòu),并在曱骨文系統(tǒng)中聲明所述哈希表為全局變量;步驟b,在內(nèi)存中為所述已被聲明為全局變量的哈希表劃分內(nèi)存區(qū)域,創(chuàng)建所述哈希表的下標(biāo),并將所述下標(biāo)與所述內(nèi)存區(qū)域——對應(yīng);步驟c,將甲骨文系統(tǒng)中的數(shù)據(jù)項目存儲到所述內(nèi)存區(qū)域;步驟d,根據(jù)查詢條件查詢所述哈希表的下標(biāo);步驟e,根據(jù)查詢到的所述哈希表的下標(biāo),從與所述下標(biāo)對應(yīng)的內(nèi)存中讀取數(shù)據(jù)項目。其中,步驟a和b是通過oraclepackage支持完成,并且所述步驟a是根據(jù)所述數(shù)據(jù)項目的主鍵構(gòu)造所述哈希表的下標(biāo)結(jié)構(gòu),所述數(shù)據(jù)項目的主鍵的長度為所述哈希表下標(biāo)的長度。所述數(shù)據(jù)項目是列表、數(shù)組中的一種或其他類似的數(shù)據(jù)類型。進(jìn)一步地,所述步驟e中,當(dāng)所述哈希表下標(biāo)對應(yīng)到的內(nèi)存區(qū)域中數(shù)據(jù)項目為空時,返回預(yù)先設(shè)定的數(shù)據(jù)項目。進(jìn)一步地,當(dāng)查詢到的所述哈希表的下標(biāo)多于一項時,讀取第一項對應(yīng)的內(nèi)存區(qū)域中的數(shù)據(jù)項目。進(jìn)一步地,在所述步驟a之前創(chuàng)建一個視圖,所述視圖的結(jié)構(gòu)即為所述步驟a中的哈希表的下標(biāo)結(jié)構(gòu)。進(jìn)一步地,在所述步驟a之前創(chuàng)建一個結(jié)構(gòu)體,所述結(jié)構(gòu)體的結(jié)構(gòu)即為所述步驟a中的哈希表的下標(biāo)結(jié)構(gòu)。本發(fā)明提供的一種曱骨文系統(tǒng)數(shù)據(jù)管理裝置,包括創(chuàng)建單元,用于在曱骨文系統(tǒng)中創(chuàng)建哈希表,構(gòu)造所述哈希表的下標(biāo)結(jié)構(gòu),并在曱骨文系統(tǒng)中聲明所述哈希表為全局變量;內(nèi)存劃分對應(yīng)單元,用于在內(nèi)存中為已被所述創(chuàng)建單元聲明為全局變量的所述哈希表劃分內(nèi)存區(qū)域,創(chuàng)建所述哈希表的下標(biāo),并將所述下標(biāo)并將所述下標(biāo)與所述內(nèi)存區(qū)域——對應(yīng);存儲單元,用于將曱骨文系統(tǒng)中的數(shù)據(jù)項目存儲到所述內(nèi)存劃分對應(yīng)單元劃分出的所述內(nèi)存區(qū)域;查詢單元,用于根據(jù)查詢條件查詢哈希表的下標(biāo);讀取單元,用于根據(jù)所述查詢單元查詢到的所述哈希表的下標(biāo),從與所述下標(biāo)對應(yīng)的所述內(nèi)存區(qū)域中讀取數(shù)據(jù)項目。進(jìn)一步地,所述的oracle數(shù)據(jù)管理裝置,還包括默認(rèn)數(shù)據(jù)項目單元,用于當(dāng)所述查詢單元查詢到的所述哈希表下標(biāo)對應(yīng)到的內(nèi)存區(qū)域中數(shù)據(jù)項目為空時,返回預(yù)先設(shè)定的數(shù)據(jù)項目。進(jìn)一步地,所述的oracle數(shù)據(jù)管理裝置,還包括預(yù)處理單元,用于創(chuàng)建一個視圖或結(jié)構(gòu)體,所述視圖或結(jié)構(gòu)體的結(jié)構(gòu)即為所述哈希表的下標(biāo)結(jié)構(gòu)。采用本發(fā)明提供的技術(shù)方案,通過oraclepackage包將數(shù)據(jù)聲明為全局變量,從而將數(shù)據(jù)從存儲設(shè)備中存儲在內(nèi)存中,使得后續(xù)的數(shù)據(jù)項目查詢完全在內(nèi)存中進(jìn)行,這樣就避免了反復(fù)地查詢存儲設(shè)備中的數(shù)據(jù),因為內(nèi)存查詢的速度要比在存儲設(shè)備中查詢要快很多,且避免了數(shù)據(jù)傳輸?shù)絻?nèi)存的時間,因而大幅度的降低了程序的響應(yīng)時間。并且,本發(fā)明的所提供的技術(shù)方案,采用了哈希表(hashtable)查找的方式,通過給定數(shù)據(jù)查找數(shù)據(jù)下標(biāo),從而直接讀取數(shù)據(jù),避免了逐項對比查找,因而也大大提高了查詢的效率。附圖1是本發(fā)明的一種oracle數(shù)據(jù)管理方法實施例1的流程圖;附圖2是本發(fā)明的一種oracle數(shù)據(jù)管理方法實施例2的流程圖;附圖3是本發(fā)明的一種oracle數(shù)據(jù)管理方法實施例3的流程圖;附圖4是本發(fā)明的一種oracleit據(jù)管理方法實施例4的流程圖;附圖5是本發(fā)明的一種oracle數(shù)據(jù)管理裝置實施例1配合外部設(shè)備工作的結(jié)構(gòu)示意框附圖6是本發(fā)明的一種oracle數(shù)據(jù)管理裝置實施例2配合外部設(shè)備工作的結(jié)構(gòu)示意框附圖7是本發(fā)明的一種oracle數(shù)據(jù)管理裝置實施例3配合外部設(shè)備工作的結(jié)構(gòu)示意框圖。具體實施例方式為使本發(fā)明的上述目的、特征和優(yōu)點能更加明顯易懂,下面結(jié)合附圖和具體實施方式對本發(fā)明做進(jìn)一步詳細(xì)地說明。本發(fā)明可用于眾多通用或?qū)S玫挠嬎銠C系統(tǒng)環(huán)境或配置中。例如個人計算機、服務(wù)器計算機、手持設(shè)備或便攜設(shè)備、平板型設(shè)備、多處理器系統(tǒng)、以及包括以上任何系統(tǒng)或設(shè)備的分布式計算環(huán)境等。操作系統(tǒng)可以是Windows系列操作系統(tǒng),unix操作系統(tǒng),linux操作系統(tǒng)等操作系統(tǒng)。6本發(fā)明可以在由計算機執(zhí)行的計算機可執(zhí)行指令的一般上下文中描述,例如程序模塊。一般地,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、對象、組件、數(shù)據(jù)結(jié)構(gòu)等。也可以在分布式計算環(huán)境中實踐本發(fā)明,在這些分布式計算環(huán)境中,由通過網(wǎng)絡(luò)通信而被連接的遠(yuǎn)程處理設(shè)備來執(zhí)行任務(wù),在分布式計算環(huán)境中,程序模塊可以位于包括存儲設(shè)備在內(nèi)的本地和遠(yuǎn)程計算機存儲介質(zhì)中。參考圖1,圖1是本發(fā)明的一種omcle數(shù)據(jù)管理方法實施例1的流程圖,包括以下步驟S101、在oracle中創(chuàng)建Hash表,構(gòu)造所述Hash表的下標(biāo)結(jié)構(gòu),并在oracle中聲明所述Hash表為全局變量。在這一步中,需要對要緩存的表結(jié)構(gòu),以及該表的主鍵和常用的關(guān)聯(lián)條件進(jìn)行分析,計算出Hash表查找下標(biāo)的長度。所述主鍵是指數(shù)據(jù)庫中此表中唯一標(biāo)識每條數(shù)據(jù)的字段,例如對于銀行用戶來說,用戶的身份證號碼即可以用來區(qū)別,可以選擇其作為主鍵。通常,使用該表的主鍵的長度作為Hash表查找下標(biāo)的長度。在本實施例中,S101采用以下代碼實現(xiàn)嚴(yán)定義hash表結(jié)構(gòu)"TYPESWITCH—HASHTABLEISTABLEOF表名%ROWTYPEINDEXBYVARCHAR2(25);/*聲明全部變量hash—table*/HASH—TABLESWITCH—HASHJTABLE;在本實施例中,根據(jù)代碼類型(CODE—ID)以及原代碼值(CODE—ITEM_NO—S)來荻取轉(zhuǎn)換后的代碼值,此時用CODE—ID和CODE—ITEM—NO_S作為HASH表的下標(biāo),那么哈希表下標(biāo)長度就是依據(jù)這2個字段的類型char(10)和char(15),得出下標(biāo)長度應(yīng)該不小于25位,這里為VARCHAR2(25)。然后,利用ORACLEPACKAGE的特點,將該變量聲明為PACKAGE內(nèi)的全局變量,這即有利于數(shù)據(jù)的封裝性,也有利于數(shù)據(jù)使用的高效性。S102、在內(nèi)存中為所述Hash表劃分內(nèi)存區(qū)域,創(chuàng)建所述Hash表的各個下標(biāo),并將所述下標(biāo)對應(yīng)到相應(yīng)所述的內(nèi)存區(qū)域。在步驟S102中,需要在內(nèi)存中劃出一定內(nèi)存區(qū)域來存儲Hash表數(shù)據(jù),對于散列的表數(shù)據(jù),其散列的下7標(biāo)要對應(yīng)到內(nèi)存中相應(yīng)的物理地址,在本實施例中,S102采用以下代碼實現(xiàn)PROCEDURESP—ETLCODE—INITISR—PUB—ETLCODEPUB—ETLCODE—SWITCH%ROWTYPE;CURSORCURETLCODEISSELECT*FROMPUB—ETLCODE—SWITCH;5103、將存儲設(shè)備中的數(shù)據(jù)項目存儲到所述內(nèi)存區(qū)域。因為本發(fā)明就是要將查詢工作放置在內(nèi)存中進(jìn)行,而數(shù)據(jù)項目是存儲在存儲設(shè)備中的,所以,必須得將數(shù)據(jù)項目轉(zhuǎn)移存儲到內(nèi)存中以供下一步查詢。在本實施例中,S103采用以下代碼實現(xiàn)BEGINOPENCURETLCODE;R—PUB—ETLCODE:=NULL;FETCHCURETLCODEINTOR—PUB—ETLCODE;《LOOPl》LOOPEXITLOOPlWHENCURETLCODE%NOTFOUND;HASH—TABLE(TRIM(R—PUB—ETLCODE.CODE—ID||R—PUB—ETLCODE.CODE_ITEM—NO_S)):=R—PUB_ETLCODE;FETCHCURETLCODEINTOR—PUB—ETLCODE;ENDLOOPU)OPl;CLOSECURETLCODE;ENDSP—ETLCODE_INIT;通過一個循環(huán)操作,使得本實例中硬盤上的待存進(jìn)內(nèi)存的數(shù)據(jù)項目被轉(zhuǎn)移到內(nèi)存中。5104、根據(jù)查詢條件查詢所述Hash表的下標(biāo)。S105、根據(jù)查詢到的所述Hash表的下標(biāo),從內(nèi)存區(qū)域中讀耳又?jǐn)?shù)據(jù)項目。在S104和S105中,根據(jù)查詢條件,構(gòu)造出需要查找的下標(biāo),根據(jù)得到的構(gòu)造好的下標(biāo),將其作為Hash表的下標(biāo),然后讀取Hash表中此下標(biāo)所在內(nèi)存中的位置所存儲的數(shù)據(jù)項目,該數(shù)據(jù)項目即為需要查找的數(shù)據(jù)項目。S104和S105可以通過以下代碼實現(xiàn)FUNCTIONSF—PUB—GET—ETLCODE—SWITCH(PI一SYSCODEINCHAR,畫畫種類PI—CODE—IDINCHAR,--對照類型PI—CODE—ITEM—NO—SINCHAR)RETURNCHARASV—CODE—ITEM—NO—SVARCHAR2(15);BEGINIFPI—CODE—ITEM—NO一SISNULLTHENV—CODEITEM—NO—S:='0000000000';ELSEV—CODE—ITEM—NO—S:=TRIM(PI—CODE—ITEM—NO—S);ENDIF;/*下面的代碼就是對HASH表進(jìn)行定位查詢*/RETURNHASH—TABLE(PI_CODE—ID||V—CODE—ITEM—NO—S).CODEJTEM—NO—T;END;在本實施例中,將待查詢的數(shù)據(jù)通過oraclepackage定義為oraclepackage內(nèi)的全局變量,使得數(shù)據(jù)項目在后續(xù)步驟中被放入內(nèi)存中,從而查詢變得更為迅速快捷,大大降低了查詢響應(yīng)時間。其次,由于^f吏用了hash表查找算法,通過查詢條件得出hash表下標(biāo),繼而直接找到內(nèi)存中數(shù)據(jù)項目存儲的物理地址并將其讀出,相比較以往的方法,減少了逐個查詢對比確認(rèn)的步驟,大大降低了平均的查詢時間,因而使得查詢效率進(jìn)一步得到提升。如圖2所示,在本發(fā)明的實施例2中,步驟S201、S202、S203、S204分別與實施例1中的步驟SIOI、S102、S103、S204基本相類似。在本實施例2中,因為未采用主鍵作為hash下標(biāo),因而在S205中得到的數(shù)據(jù)項目可能有三種情況。第一種,當(dāng)查詢到的hash下標(biāo)是多于一項時,這個時候讀取第一項對應(yīng)的內(nèi)存區(qū)域中的數(shù)據(jù)項目,也就是S2052中所描述的情況。第二種情況,經(jīng)過步驟S205判斷后,hash表下標(biāo)只有一項,這個時候進(jìn)入步驟S2051判斷該hash表下標(biāo)對應(yīng)的內(nèi)存中的數(shù)據(jù)項目是否為空值,若是該hash表下標(biāo)對應(yīng)的內(nèi)存中的數(shù)據(jù)為空值時,也就是說該內(nèi)存區(qū)域沒有存儲任何數(shù)據(jù),這個時候,系統(tǒng)返回一個預(yù)先設(shè)定的數(shù)據(jù)項目,例如'0000000000',如S20512中描述的情況。如果不是空值,如步驟S20511所描述的,這個時候就讀取該內(nèi)存區(qū)域中的數(shù)據(jù)項目。對于步驟S2051、S20511、S20512可以通過以下代碼實現(xiàn)RETURNHASHTABLE(PICODE—ID||V—CODE—ITEM—NO—S).CODE—ITEM—NO—T;EXCEPTIONWHENOTHERSTHENRETURNHASH—TABLE(PI—CODE—IDII'0000000000').CODE—ITEM—NO—T;ENE^本發(fā)明還可以對數(shù)據(jù)項目采用了接口的方式進(jìn)行封裝,從而使得查詢的數(shù)據(jù)項目不局限于同一表結(jié)構(gòu)數(shù)據(jù),為大型的儲存過程開發(fā)提供更高效的查詢效率。如圖3所示,在本發(fā)明的實施例3中,要對2張表進(jìn)行連接后頻繁查詢。在oracle中創(chuàng)建一個結(jié)構(gòu)體,可以通過以下代碼實現(xiàn)/*聲明一個結(jié)構(gòu)體*/TYPERECPUB—ETLCODEISRECORD(CODE—IDCHAR(IO),CODE—ITEM—NO—SVARCHAR2(15),CODEITEM—NO—TVARCHAR2(15》;聲明之后,可以將這個結(jié)構(gòu)體作為p合希表的下標(biāo)結(jié)構(gòu),執(zhí)行步驟S302、S303、S304、S305、S306,上述各步驟類似于實施例1中的步驟SIOI、S102、S103、S104、S105,這樣就可以對2張表連接查詢,豐富了數(shù)據(jù)項目查詢的方式。參見圖4,在本發(fā)明實施例4中,S401先創(chuàng)建了一個結(jié)構(gòu)體,S402創(chuàng)建哈希表,將該結(jié)構(gòu)體設(shè)為hash表下標(biāo)結(jié)構(gòu),并在oracle中聲明所述Hash表為全局變量;S403在內(nèi)存中為所述哈希表劃分內(nèi)存區(qū)域,創(chuàng)建所述Hash表的各個下標(biāo),并將所述下標(biāo)對應(yīng)到相應(yīng)所述的內(nèi)存區(qū)域;S404將存儲設(shè)備中的數(shù)據(jù)項目存儲到所述內(nèi)存區(qū)域;S405根據(jù)查詢條件查詢所述Hash表的下標(biāo);S406判斷所述下標(biāo)是否多于一項;如果多于一項,則為S4062讀取第一項對應(yīng)的內(nèi)存區(qū)域中的數(shù)據(jù)項目;如果為一項,則S4061判斷數(shù)據(jù)項目是否為空,如果為空,則執(zhí)行步驟S40612返回預(yù)先設(shè)定的數(shù)據(jù)項目,否則,執(zhí)行步驟S40611根據(jù)查詢到的所述Hash表的下標(biāo),從內(nèi)存區(qū)域中讀取數(shù)據(jù)項目。在本發(fā)明的其他實施例中,該結(jié)構(gòu)體也可以是視圖,例如建立視圖V—PUB—CODE,然后聲明該視圖TYPESWITCH—HASH—TABLEISTABLEOF視圖名%ROWTYPEINDEXBYVARCHAR2(25);/*聲明全部變量hash—table*/HASH—TABLESWITCH—HASH—TABLE;再然后在oracle中創(chuàng)建Hash表,構(gòu)造所述Hash表的下標(biāo)結(jié)構(gòu),并在oracle中聲明所述Hash表為全局變量;在內(nèi)存中為所述Hash表劃分內(nèi)存區(qū)域,創(chuàng)建所述Hash表的各個下標(biāo),并將所述下標(biāo)對應(yīng)到相應(yīng)所述的內(nèi)存區(qū)域;將存儲設(shè)備中的數(shù)據(jù)項目存儲到所述內(nèi)存區(qū)域;根據(jù)查詢條件查詢所述Hash表的下標(biāo);根據(jù)查詢到的所述Hash表的下標(biāo),如果該內(nèi)存區(qū)域中數(shù)據(jù)項目不為空值,從內(nèi)存區(qū)域中讀取數(shù)據(jù)項目,否則返回'0000000000'。該實施例的代碼實現(xiàn)如下PROCEDURESP—ETLCODE一INITISR—PUB—ETLCODEPUB—#見圖名%ROWTYPE;CURSORCURETLCODEISSELECT*FROM視圖名;BEGINOPENCURETLCODE;R_PUBETLCODE:=NULL;FETCHCURETLCODEINTOR—PUB—ETLCODE;《LOOPl》LOOPEXITLOOPlWHENCURETLCODE0/oNOTFOUND;HASH—TABLE(TRIM(R—PUBETLCODE.CODE—ID||R—PUB—ETLCODE.CODE一ITEM一NO一S))R—PUB—ETLCODE;FETCHCURETLC。DEINTOR—PUB一ETLCODE;ENDLOOPLOOP1;CLOSECURETLCODE;ENDSP_ETLCODE_INIT;FUNCTIONSF一PUB—GET一ETLCODE一SWITCH(PI—SYSCODEINCHAR,—種類PI—CODE—IDINCHAR,—對照類型PI—CODE—ITEM—NO一SINCHAR)RETURNCHARASV—CODE_ITEM—NO_SVARCHAR2(15);BEGINIFPI—CODE—ITEM_NO—SISNULLTHENV—CODEITEM—NO—S:='0000000000';ELSEV—CODE_ITEM—NO—S:=TRIM(PI—CODE—ITEM—NO—S);ENDIF;RETURNHASH—TABLE(PI—CODE—ID||V—CODE—ITEM—NO—S).CODE—ITEM—NO一T;EXCEPTIONWHENOTHERSTHENRETURNHASH—TABLE(PI_CODE—ID||'0000000000').CODE—ITEM—NO—T;參見圖5,提供了一種oracle數(shù)據(jù)管理裝置配合內(nèi)存和硬盤實施的實施例1,oracle數(shù)據(jù)管理裝置5配合內(nèi)存和硬盤實施,包括創(chuàng)建單元501,用于在oracle中創(chuàng)建Hash表,構(gòu)造所述Hash表的下標(biāo)結(jié)構(gòu),并在oracle中聲明所述哈希表為全局變量;內(nèi)存劃分對應(yīng)單元502,用于在內(nèi)存503中為創(chuàng)建單元501創(chuàng)建的并被聲明為全局變量的所述Hash表劃分內(nèi)存區(qū)域,創(chuàng)建所述Hash表的各個數(shù)據(jù)項目單元的下標(biāo),并將所述下標(biāo)對應(yīng)到相應(yīng)所述的內(nèi)存區(qū)域;存儲單元505,用于將硬盤507中的oracle數(shù)據(jù)項目存儲到所述內(nèi)存503中;查詢單元504,用于根據(jù)查詢條件查詢哈希表的下標(biāo);讀取單元506,用于根據(jù)查詢單元504查詢到的所述哈希表的下標(biāo),從內(nèi)存區(qū)域中讀取數(shù)據(jù)項目。參見圖6,在本發(fā)明一種oracle數(shù)據(jù)管理裝置的實施例2中,oracle數(shù)據(jù)管理裝置6配合硬盤和內(nèi)存實施,包括創(chuàng)建單元601,用于在oracle中創(chuàng)建哈希表,構(gòu)造所述哈希表的下標(biāo)結(jié)構(gòu),并在oracle中聲明所述哈希表為全局變量;內(nèi)存劃分對應(yīng)單元602,用于在內(nèi)存603中為創(chuàng)建單元601創(chuàng)建的所述哈希表劃分內(nèi)存區(qū)域,創(chuàng)建所述哈希表的各個數(shù)據(jù)項目單元的下標(biāo),并將所述下標(biāo)對應(yīng)到相應(yīng)所述的內(nèi)存區(qū)域;存儲單元605,用于將硬盤607中的oracle數(shù)據(jù)項目存儲到所述內(nèi)存603中;查詢單元604,用于根據(jù)查詢條件查詢哈希表的下標(biāo);讀取單元606,用于根據(jù)查詢單元604查詢到的所述哈希表的下標(biāo),從內(nèi)存區(qū)域中讀取數(shù)據(jù)項目。相比較oracle數(shù)據(jù)管理裝置的實施例1,包括多一個默認(rèn)數(shù)據(jù)項目單元608,用于當(dāng)所述哈希表下標(biāo)對應(yīng)到的內(nèi)存區(qū)域中數(shù)據(jù)項目為空時,返回預(yù)先設(shè)定的數(shù)據(jù)項目。參見圖7,在本發(fā)明一種oracle數(shù)據(jù)管理裝置的實施例3中,omcle數(shù)據(jù)管理裝置7配合硬盤和內(nèi)存實施,包括創(chuàng)建單元701,用于在oracle中創(chuàng)建哈希表,構(gòu)造所述哈希表的下標(biāo)結(jié)構(gòu),并在oracle中聲明所述哈希表為全局變量;內(nèi)存劃分對應(yīng)單元702,用于在內(nèi)存703中為創(chuàng)建單元701創(chuàng)建的所述哈希表劃分內(nèi)存區(qū)域,創(chuàng)建所述哈希表的各個數(shù)據(jù)項目單元的下標(biāo),并將所述下標(biāo)對應(yīng)到相應(yīng)所述的內(nèi)存區(qū)域;存儲單元705,用于將石更盤707中的oracle數(shù)據(jù)項目存儲到所述內(nèi)存703中;查詢單元704,用于根據(jù)查詢條件查詢所述哈希表的下標(biāo);讀取單元706,用于根據(jù)查詢到的所述哈希表的下標(biāo),從內(nèi)存區(qū)域中讀取數(shù)據(jù)項目;默認(rèn)數(shù)據(jù)項目單元708,用于當(dāng)所述哈希表下標(biāo)對應(yīng)到的內(nèi)存區(qū)域中數(shù)據(jù)項目為空時,返回預(yù)先設(shè)定的數(shù)據(jù)項目。相比較oracle數(shù)據(jù)管理裝置的實施例2,包括多一個預(yù)處理單元709,用于創(chuàng)建一個視圖或結(jié)構(gòu)體,所述視圖或結(jié)構(gòu)體被創(chuàng)建單元獲取后定義為所述哈希表的下標(biāo)結(jié)構(gòu)。是可以通過程序來指令相關(guān)的硬件來實現(xiàn),所述的程序可以存儲于一計算機可讀存儲介質(zhì)中,所述的存儲介質(zhì)如ROM/RAM、磁碟、光盤、軟盤等類似的存儲介質(zhì)。13在上述實施例中,對各個實施例的描述都各有側(cè)重,某個實施例中沒有詳述的部分,可以參見其他實施例的相關(guān)描述。術(shù)語"包含"、"包括"或者其他任何變體意在非排他性的包含,從而使得包括一系列要素的過程、方法、裝置、物品或者設(shè)備不僅包含那些要素,而且還包含沒有明確列出的其他要素,或者是還包括為這種方法、過程、物品、裝置、設(shè)備所固有的要素。在沒有更多的限制的情況下,由語句"包括一個……"限定的要素,并不排除在包括所述要素的過程、方法、物品、裝置或設(shè)備中還存在另外的相同要素。以上對本發(fā)明提供的一種oracle數(shù)據(jù)管理方法和裝置,進(jìn)行了詳細(xì)的介以上實施例的說明僅是用于幫助理解本發(fā)明的方法和裝置的核心思想;同時,本說明書內(nèi)容不應(yīng)理解為對本發(fā)明的限制,對于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實施方式及應(yīng)用范圍上所做之同等變化,應(yīng)都屬于本發(fā)明的保護(hù)范圍。權(quán)利要求1.一種甲骨文系統(tǒng)數(shù)據(jù)管理方法,其特征在于,包括步驟a,在甲骨文系統(tǒng)中創(chuàng)建哈希表,構(gòu)造所述哈希表的下標(biāo)結(jié)構(gòu),并在甲骨文系統(tǒng)中聲明所述哈希表為全局變量;步驟b,在內(nèi)存中為所述已被聲明為全局變量的哈希表劃分內(nèi)存區(qū)域,創(chuàng)建所述哈希表的下標(biāo),并將所述下標(biāo)與所述內(nèi)存區(qū)域一一對應(yīng);步驟c,將甲骨文系統(tǒng)中的數(shù)據(jù)項目存儲到所述內(nèi)存區(qū)域;步驟d,根據(jù)查詢條件查詢所述哈希表的下標(biāo);步驟e,根據(jù)查詢到的所述哈希表的下標(biāo),從與所述下標(biāo)對應(yīng)的內(nèi)存中讀取數(shù)據(jù)項目。2.如權(quán)利要求1所述的曱骨文系統(tǒng)數(shù)據(jù)管理方法,其特征在于所述步驟a中,構(gòu)造所述哈希表的下標(biāo)結(jié)構(gòu)具體為根據(jù)所述數(shù)據(jù)項目的主鍵構(gòu)造所述哈希表下標(biāo)結(jié)構(gòu),所述數(shù)據(jù)項目的主鍵的長度為所述哈希表下標(biāo)的長度。3.如權(quán)利要求1所述的甲骨文系統(tǒng)數(shù)據(jù)管理方法,其特征在于所述步驟e中,當(dāng)所述哈希表下標(biāo)對應(yīng)到的內(nèi)存區(qū)域中數(shù)據(jù)項目為空時,返回預(yù)先設(shè)定的數(shù)據(jù)項目。4.如權(quán)利要求1所述的甲骨文系統(tǒng)數(shù)據(jù)管理方法,其特征在于所述步驟e中,當(dāng)查詢到的所述哈希表的下標(biāo)多于一項時,讀取第一項對應(yīng)的內(nèi)存區(qū)域中的數(shù)據(jù)項目。5.權(quán)利要求1所述的甲骨文系統(tǒng)數(shù)據(jù)管理方法,其特征在于所述數(shù)據(jù)項目采用4妻口的方式封裝。6.如權(quán)利要求5所述的曱骨文系統(tǒng)數(shù)據(jù)管理方法,其特征在于在所述步驟a之前創(chuàng)建一個視圖,所述視圖的結(jié)構(gòu)即為所述步驟a中的哈希表的下標(biāo)結(jié)構(gòu)。7.如權(quán)利要求5所述的曱骨文系統(tǒng)數(shù)據(jù)管理方法,其特征在于在所述步驟a之前創(chuàng)建一個結(jié)構(gòu)體,所述結(jié)構(gòu)體的結(jié)構(gòu)為所述步驟a中的哈希表的下標(biāo)結(jié)構(gòu)。8.—種曱骨文系統(tǒng)數(shù)據(jù)管理裝置,其特征在于,包括創(chuàng)建單元,用于在曱骨文系統(tǒng)中創(chuàng)建哈希表,構(gòu)造所述哈希表的下標(biāo)結(jié)構(gòu),并在甲骨文系統(tǒng)中聲明所述哈希表為全局變量;內(nèi)存劃分對應(yīng)單元,用于在內(nèi)存中為已被創(chuàng)建單元聲明為全局變量的所述哈希表劃分內(nèi)存區(qū)域,創(chuàng)建所述哈希表的下標(biāo),并將所述下標(biāo)與所述的內(nèi)存區(qū)域——對應(yīng);存儲單元,用于將曱骨文系統(tǒng)中的數(shù)據(jù)項目存儲到內(nèi)存劃分對應(yīng)單元劃分出的所述內(nèi)存區(qū)域;查詢單元,用于根據(jù)查詢條件查詢哈希表的下標(biāo);讀取單元,用于根據(jù)查詢單元查詢到的所述哈希表的下標(biāo),從與所述下標(biāo)對應(yīng)的所述內(nèi)存區(qū)域中讀取數(shù)據(jù)項目。9.如權(quán)利要求8所述的曱骨文系統(tǒng)數(shù)據(jù)管理裝置,其特征在于,還包括默認(rèn)數(shù)據(jù)項目單元,用于當(dāng)所述查詢單元查詢到的所述哈希表下標(biāo)對應(yīng)到的內(nèi)存區(qū)域中數(shù)據(jù)項目為空時,返回預(yù)先設(shè)定的數(shù)據(jù)項目。10.如權(quán)利要求8所述的曱骨文系統(tǒng)數(shù)據(jù)管理裝置,其特征在于,還包括預(yù)處理單元,用于創(chuàng)建一個視圖或結(jié)構(gòu)體,所述視圖或結(jié)構(gòu)體的結(jié)構(gòu)由所述創(chuàng)建單元獲取并定義為所述哈希表的下標(biāo)結(jié)構(gòu)。全文摘要本發(fā)明公開了一種甲骨文數(shù)據(jù)管理方法,包括在甲骨文系統(tǒng)中創(chuàng)建哈希表,構(gòu)造所述哈希表的下標(biāo)結(jié)構(gòu),并在甲骨文系統(tǒng)中聲明所述哈希表為全局變量;在內(nèi)存中為所述已被聲明為全局變量的哈希表劃分內(nèi)存區(qū)域,創(chuàng)建所述哈希表的下標(biāo),并將所述下標(biāo)與所述內(nèi)存區(qū)域一一對應(yīng);將甲骨文系統(tǒng)中的數(shù)據(jù)項目存儲到所述內(nèi)存區(qū)域;根據(jù)查詢條件查詢所述哈希表的下標(biāo);根據(jù)查詢到的所述哈希表的下標(biāo),從與所述下標(biāo)對應(yīng)的內(nèi)存中讀取數(shù)據(jù)項目采用本發(fā)明提供的技術(shù)方案,將數(shù)據(jù)存儲在內(nèi)存中,并且采用了哈希表查找的方式,通過給定數(shù)據(jù)查找數(shù)據(jù)下標(biāo),從而直接讀取數(shù)據(jù),避免了逐項對比查找,因而大大提高了查詢的效率。本發(fā)明還提供了一種oracle數(shù)據(jù)管理裝置。文檔編號G06F17/30GK101452486SQ20081019290公開日2009年6月10日申請日期2008年12月31日優(yōu)先權(quán)日2008年12月31日發(fā)明者張樹貴,鄭承滿,皓陳,高志慧申請人:中國建設(shè)銀行股份有限公司