專利名稱:基于緩存表的數(shù)據(jù)查詢方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)查詢方法,尤其涉及一種基于緩存表的數(shù)據(jù)查詢方法。
背景技術(shù):
現(xiàn)有技術(shù)中,是通過查詢條線生成SQL直接進(jìn)行數(shù)據(jù)庫表查詢來獲取數(shù)據(jù),由于渠道查詢并發(fā)大,數(shù)據(jù)多,大量查詢導(dǎo)致的查詢效率低。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題是提供一種基于緩存表的數(shù)據(jù)查詢方法,提高多用戶、高并發(fā)的聯(lián)機(jī)查詢服務(wù),保證每次網(wǎng)銀查詢時間控制在最優(yōu)時間內(nèi)。
為了解決上述技術(shù)問題,本發(fā)明提供了一種基于緩存表的數(shù)據(jù)查詢方法,用于金融交易數(shù)據(jù)的查詢,包括以下步驟SI :接收數(shù)據(jù)查詢請求,并根據(jù)所述查詢請求中的查詢條件求得哈希值;S2 :根據(jù)查詢條件判斷該請求查詢的數(shù)據(jù)是否為首次查詢,如果是,則執(zhí)行步驟S3,如果否,則執(zhí)行步驟S4 ;S3 :從交易表中讀取請求查詢的數(shù)據(jù),并將所述求得的哈希值以及該數(shù)據(jù)或者該數(shù)據(jù)在交易表中的ROWID值插入到緩存表的當(dāng)前緩存區(qū)內(nèi)緩存一段預(yù)定時間,返回請求查詢的數(shù)據(jù);S4:判斷對請求查詢的數(shù)據(jù)的本次查詢距上次查詢是否超過所述一段預(yù)定時間,如果是,則執(zhí)行步驟S3,如果否,則執(zhí)行步驟S5 ;S5:根據(jù)所述求得的哈希值查詢所述緩存表的當(dāng)前緩存區(qū),從中讀取并返回請求查詢的數(shù)據(jù)或者根據(jù)該數(shù)據(jù)在交易表中的ROWID值從交易表中返回請求查詢的數(shù)據(jù)。作為優(yōu)選,所述緩存表為一個或多個作為優(yōu)選,每個所述緩存表除包括所述當(dāng)前緩存區(qū)外,還包括一個或多個其他緩存區(qū),所述其他緩存區(qū)選擇性地存儲所述一段預(yù)定時間之前的數(shù)據(jù)信息。作為優(yōu)選,在步驟SI中,所述查詢請求包括翻頁操作,所述查詢條件包括借貸標(biāo)識、金額、所有帳號信息。作為優(yōu)選,所述一段預(yù)定時間為30分鐘。與現(xiàn)有技術(shù)相比,本發(fā)明的基于緩存表的數(shù)據(jù)查詢方法的有益效果在于I、通過設(shè)置緩存表,提高多用戶、高并發(fā)的聯(lián)機(jī)查詢服務(wù),保證每次網(wǎng)銀查詢時間控制在最優(yōu)時間內(nèi)。2、建立多個緩存表、采用按時分區(qū)等技術(shù)提高并行多表下的緩解堵塞問題,使用多緩存表的方式降低緩存表的數(shù)據(jù)量級;通過指定分區(qū)進(jìn)行查詢,從而進(jìn)一步減少了返查時的數(shù)據(jù)量。
圖I為本發(fā)明的實(shí)施例的基于緩存表的數(shù)據(jù)查詢方法的流程圖。
具體實(shí)施例方式下面結(jié)合附圖和具體實(shí)施例對本發(fā)明的實(shí)施例的基于緩存表的數(shù)據(jù)查詢方法作進(jìn)一步詳細(xì)描述,但不作為對本發(fā)明的限定。圖I為本發(fā)明的實(shí)施例的基于緩存表的數(shù)據(jù)查詢方法的流程圖。如圖I所示,本發(fā)明的實(shí)施例的基于緩存表的數(shù)據(jù)查詢方法,用于金融交易數(shù)據(jù)的查詢,包括以下步驟SI :接收數(shù)據(jù)查詢請求,并根據(jù)所述查詢請求中的查詢條件求得哈希值。通過哈希算法(一種散列算法)求得哈希值,哈希值是一段數(shù)據(jù)唯一且極其緊湊的數(shù)值表示形式。如果散列一段明文而且哪怕只更改該段落的一個字母,隨后的哈希都將產(chǎn)生不同的值。因此每一個數(shù)據(jù)的哈希值是唯一的。 S2:根據(jù)查詢條件判斷該請求查詢的數(shù)據(jù)是否為首次查詢,如果是,則執(zhí)行步驟S3,如果否,則執(zhí)行步驟S4。可以通過任何現(xiàn)有的算法進(jìn)行該判斷。S3 :從交易表中讀取請求查詢的數(shù)據(jù),并將所述求得的哈希值以及該數(shù)據(jù)或者該數(shù)據(jù)在交易表中的ROWID值插入到緩存表的當(dāng)前緩存區(qū)內(nèi)緩存一段預(yù)定時間,返回請求查詢的數(shù)據(jù)。ROWID就是唯一標(biāo)志記錄物理位置的一個標(biāo)識,在交易表中對數(shù)據(jù)起到快速索弓丨、定位的作用,非常有利于對包含海量數(shù)據(jù)的數(shù)據(jù)庫進(jìn)行數(shù)據(jù)操作。S4:判斷對請求查詢的數(shù)據(jù)的本次查詢距上次查詢是否超過所述一段預(yù)定時間,如果是,則執(zhí)行步驟S3,如果否,則執(zhí)行步驟S5 ;S5:根據(jù)所述求得的哈希值查詢所述緩存表的當(dāng)前緩存區(qū),從中讀取并返回請求查詢的數(shù)據(jù)或者根據(jù)該數(shù)據(jù)在交易表中的ROWID值從交易表中返回請求查詢的數(shù)據(jù)。針對不同的數(shù)據(jù)查詢請求,尤其針對金融交易類海量數(shù)據(jù)查詢請求,需要處理不同種類的數(shù)據(jù)。當(dāng)從交易表中讀取的查詢數(shù)據(jù)相對簡單的時候,可以將哈希值以及該數(shù)據(jù)一并插入到當(dāng)前緩存區(qū),便于此后發(fā)生相同查詢時直接從緩存表中讀取并返回請求查詢的數(shù)據(jù);當(dāng)從交易表中讀取的查詢數(shù)據(jù)相對復(fù)雜的時候,可以選擇將哈希值以及該數(shù)據(jù)在交易表中的ROWID值插入到當(dāng)前緩存區(qū),此后發(fā)生相同查詢時,根據(jù)哈希值查詢到緩存表當(dāng)前緩存區(qū)中相關(guān)數(shù)據(jù)信息,然后通過ROWID值快速準(zhǔn)確地訪問交易表中完整數(shù)據(jù)內(nèi)容,從交易表中返回請求查詢的數(shù)據(jù)。所述一段預(yù)定時間可以根據(jù)不同的需要進(jìn)行設(shè)定,例如可以設(shè)定為30分鐘,所述當(dāng)前緩存區(qū)存儲30分鐘內(nèi)的查詢信息。對于一般的數(shù)據(jù)查詢請求,當(dāng)前緩存區(qū)存儲30分鐘內(nèi)的查詢信息可最大程度滿足數(shù)據(jù)查詢的快速要求,并且占有系統(tǒng)資源最少,達(dá)到最優(yōu)配置。作為一種改進(jìn),緩存表為多個,將查詢的數(shù)據(jù)、該數(shù)據(jù)哈希值以及ROWID值插入到多個緩存表中的一張中,通過這樣多緩存表的方式可以降低緩存表的數(shù)據(jù)量級。作為本實(shí)施例的優(yōu)選方案,每個所述緩存表除包括所述當(dāng)前緩存區(qū)外,還包括一個或多個其他緩存區(qū),所述其他緩存區(qū)選擇性地存儲所述一段預(yù)定時間之前的數(shù)據(jù)信息。當(dāng)前緩存區(qū)緩存預(yù)定時間內(nèi)(例如30分鐘)的數(shù)據(jù),其他緩存區(qū)可以根據(jù)需要,例如針對特定時期滿足大量或者少量查詢請求時,存儲預(yù)定時間之前的數(shù)據(jù)信息,并可以動態(tài)的將更早期的數(shù)據(jù)進(jìn)行清理。舉例說明,其他緩存區(qū)可以包括隔離緩存區(qū)和清理區(qū),針對當(dāng)前緩存區(qū)緩存30分鐘內(nèi)的數(shù)據(jù),隔離緩存區(qū)可以存儲這30分鐘之前一段時間(例如也是30分鐘)的數(shù)據(jù)作為查詢請求的備用,清理區(qū)則是存儲有再早期的數(shù)據(jù)并且經(jīng)過清理后的緩存表的一部分。這種按時分區(qū)的方式,通過對當(dāng)前緩存區(qū)這樣的一個指定分區(qū)進(jìn)行查詢,從而進(jìn)一步減少了返查時的數(shù)據(jù)量,提高并行多表下的緩解堵塞問題。作為另一種改進(jìn),在步驟SI中,所述查詢請求包括翻頁操作,所述查詢條件包括借貸標(biāo)識、金額、所有帳號信息。為了更好地說明本發(fā)明的實(shí)施例的基于緩存表的數(shù)據(jù)查詢方法,這里以網(wǎng)銀當(dāng)日查詢?yōu)槔M(jìn)一步說明。計算機(jī)化試驗(yàn)信息臺(CTIS)接收前端發(fā)起的當(dāng)日交易查詢請求,將請求中的查詢條件(可以是包括借貸標(biāo)識、金額、所有賬號信息)求得哈希值(hash),根據(jù)請求條件判斷是否為首次查詢。若不是首次查詢,將直接根據(jù)哈希碼(hashcode)查詢緩存表中的對應(yīng)分區(qū),若在半小時內(nèi)有匹配的查詢記錄,則關(guān)聯(lián)對應(yīng)的緩存表查詢結(jié)果將交易數(shù)據(jù)返回給計算機(jī)化試驗(yàn)信息臺(CTIS)接收前端;若是首次查詢或上次查詢時間已超過 半小時,則根據(jù)查詢條件,則關(guān)聯(lián)交易表讀取交易數(shù)據(jù),并將交易數(shù)據(jù)或者ROWID以及主要交易數(shù)據(jù)的哈希值插入到緩存表中返回給計算機(jī)化試驗(yàn)信息臺(CTIS)接收前端。以上實(shí)施例僅為本發(fā)明的示例性實(shí)施例,不用于限制本發(fā)明,本發(fā)明的保護(hù)范圍由權(quán)利要求書限定。本領(lǐng)域技術(shù)人員可以在本發(fā)明的實(shí)質(zhì)和保護(hù)范圍內(nèi),對本發(fā)明做出各種修改或等同替換,這種修改或等同替換也應(yīng)視為落在本發(fā)明的保護(hù)范圍內(nèi)。
權(quán)利要求
1.一種基于緩存表的數(shù)據(jù)查詢方法,用于金融交易數(shù)據(jù)的查詢,其特征在于,包括以下步驟 51:接收數(shù)據(jù)查詢請求,并根據(jù)所述查詢請求中的查詢條件求得哈希值; 52:根據(jù)查詢條件判斷該請求查詢的數(shù)據(jù)是否為首次查詢,如果是,則執(zhí)行步驟S3,如果否,則執(zhí)行步驟S4; 53:從交易表中讀取請求查詢的數(shù)據(jù),并將所述求得的哈希值以及該數(shù)據(jù)或者該數(shù)據(jù)在交易表中的ROWID值插入到緩存表的當(dāng)前緩存區(qū)內(nèi)緩存一段預(yù)定時間,返回請求查詢的數(shù)據(jù); S4:判斷對請求查詢的數(shù)據(jù)的本次查詢距上次查詢是否超過所述一段預(yù)定時間,如果是,則執(zhí)行步驟S3,如果否,則執(zhí)行步驟S5 ; S5 :根據(jù)所述求得的哈希值查詢所述緩存表的當(dāng)前緩存區(qū),從中讀取并返回請求查詢的數(shù)據(jù)或者根據(jù)該數(shù)據(jù)在交易表中的ROWID值從交易表中返回請求查詢的數(shù)據(jù)。
2.根據(jù)權(quán)利要求I所述的基于緩存表的數(shù)據(jù)查詢方法,其特征在于,所述緩存表為一個或多個。
3.根據(jù)權(quán)利要求2所述的基于緩存表的數(shù)據(jù)查詢方法,其特征在于,每個所述緩存表除包括所述當(dāng)前緩存區(qū)外,還包括一個或多個其他緩存區(qū),所述其他緩存區(qū)選擇性地存儲所述一段預(yù)定時間之前的數(shù)據(jù)信息。
4.根據(jù)權(quán)利要求I所述的基于緩存表的數(shù)據(jù)查詢方法,其特征在于,在步驟SI中,所述查詢請求包括翻頁操作,所述查詢條件包括借貸標(biāo)識、金額、所有帳號信息。
5.根據(jù)權(quán)利要求I至4中任一項(xiàng)所述的基于緩存表的數(shù)據(jù)查詢方法,其特征在于,所述一段預(yù)定時間為30分鐘。
全文摘要
本發(fā)明公開了一種基于緩存表的數(shù)據(jù)查詢方法,包括以下步驟S1接收數(shù)據(jù)查詢請求,求得哈希值;S2判斷該數(shù)據(jù)是否為首次查詢,是則執(zhí)行步驟S3,否則執(zhí)行步驟S4;S3從交易表中讀取請求查詢的數(shù)據(jù),并將哈希值以及該數(shù)據(jù)或者該數(shù)據(jù)ROWID值插入到緩存表的當(dāng)前緩存區(qū)內(nèi)緩存一段預(yù)定時間,返回數(shù)據(jù);S4判斷距上次查詢是否超過所述一段預(yù)定時間,是則執(zhí)行步驟S3,否則執(zhí)行步驟S5;S5根據(jù)哈希值查詢當(dāng)前緩存區(qū),從中讀取并返回請求查詢的數(shù)據(jù)或者根據(jù)該數(shù)據(jù)ROWID值從交易表中返回數(shù)據(jù)。本發(fā)明的基于緩存表的數(shù)據(jù)查詢方法,提高多用戶、高并發(fā)的聯(lián)機(jī)查詢服務(wù),保證每次網(wǎng)銀查詢時間控制在最優(yōu)時間內(nèi)。
文檔編號G06F17/30GK102968507SQ20121054510
公開日2013年3月13日 申請日期2012年12月14日 優(yōu)先權(quán)日2012年12月14日
發(fā)明者劉英碩, 張巖, 李軍超, 劉其平, 方禮蓉 申請人:中國銀行股份有限公司