一種業(yè)務(wù)數(shù)據(jù)查詢(xún)方法及裝置、數(shù)據(jù)庫(kù)系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及數(shù)據(jù)庫(kù)技術(shù)領(lǐng)域,尤其涉及一種業(yè)務(wù)數(shù)據(jù)查詢(xún)方法及裝置、數(shù)據(jù)庫(kù)系 統(tǒng)。
【背景技術(shù)】
[0002] 商業(yè)智能(Business Intelligence,簡(jiǎn)稱(chēng)BI)又稱(chēng)商業(yè)智慧或商務(wù)智能,BI數(shù)據(jù) 庫(kù)憑借其優(yōu)秀的數(shù)據(jù)庫(kù)、聯(lián)機(jī)分析處理(On-Line Analytical Processing,簡(jiǎn)稱(chēng)0LAP)、數(shù) 據(jù)挖掘等技術(shù),可以有效地對(duì)業(yè)務(wù)數(shù)據(jù)進(jìn)行查詢(xún)、分析以及多維展現(xiàn)等操作,從而可以幫助 企業(yè)做出明智的業(yè)務(wù)經(jīng)營(yíng)決策。在實(shí)際應(yīng)用中,BI數(shù)據(jù)庫(kù)通常會(huì)以列的方式存儲(chǔ)數(shù)據(jù)(即 列式數(shù)據(jù)庫(kù)),從而可以滿(mǎn)足基于規(guī)則的分析型業(yè)務(wù)的數(shù)據(jù)快速查詢(xún)的需求;然而,對(duì)于基 于事件觸發(fā)的事務(wù)型業(yè)務(wù)的數(shù)據(jù)而言,通常要滿(mǎn)足極高吞吐量查詢(xún)需求,這就要求數(shù)據(jù)以 行的方式存儲(chǔ)在BI數(shù)據(jù)庫(kù)中(即行式數(shù)據(jù)庫(kù)),顯然,以列的方式存儲(chǔ)數(shù)據(jù)的BI數(shù)據(jù)庫(kù)難 以滿(mǎn)足事務(wù)型業(yè)務(wù)的數(shù)據(jù)查詢(xún)需求。
【發(fā)明內(nèi)容】
[0003] 本發(fā)明實(shí)施例公開(kāi)了一種業(yè)務(wù)數(shù)據(jù)查詢(xún)方法及裝置、數(shù)據(jù)庫(kù)系統(tǒng),能夠滿(mǎn)足事務(wù) 型業(yè)務(wù)的數(shù)據(jù)查詢(xún)需求。
[0004] 本發(fā)明實(shí)施例第一方面公開(kāi)一種業(yè)務(wù)數(shù)據(jù)查詢(xún)方法,數(shù)據(jù)庫(kù)內(nèi)存中包括列式緩沖 區(qū)和行式緩沖區(qū),所述列式緩沖區(qū)的列用于加載數(shù)據(jù)庫(kù)的列數(shù)據(jù),所述行式緩沖區(qū)的行用 于加載所述列式緩沖區(qū)的列數(shù)據(jù)或所述數(shù)據(jù)庫(kù)的列數(shù)據(jù),所述方法包括:
[0005] 當(dāng)收到事務(wù)型業(yè)務(wù)系統(tǒng)發(fā)送的包括目標(biāo)列標(biāo)識(shí)和第一查詢(xún)條件的事務(wù)型業(yè)務(wù)數(shù) 據(jù)查詢(xún)請(qǐng)求時(shí),檢測(cè)是否存在所述目標(biāo)列標(biāo)識(shí)對(duì)應(yīng)的行索引;
[0006] 若存在所述目標(biāo)列標(biāo)識(shí)對(duì)應(yīng)的行索引,以所述第一查詢(xún)條件為依據(jù),查詢(xún)所述行 式緩沖區(qū)中所述行索引對(duì)應(yīng)行內(nèi)的所述目標(biāo)列標(biāo)識(shí)對(duì)應(yīng)的列數(shù)據(jù)以獲得查詢(xún)結(jié)果并返回 給所述事務(wù)型業(yè)務(wù)系統(tǒng)。
[0007] 在本發(fā)明實(shí)施例第一方面的第一種可能的實(shí)現(xiàn)方式中,若不存在所述目標(biāo)列標(biāo)識(shí) 對(duì)應(yīng)的行索引,所述方法還包括:
[0008] 檢測(cè)所述列式緩沖區(qū)中是否加載所述目標(biāo)列標(biāo)識(shí)對(duì)應(yīng)的列數(shù)據(jù),若所述列式緩沖 區(qū)中加載所述目標(biāo)列標(biāo)識(shí)對(duì)應(yīng)的列數(shù)據(jù),從所述列式緩沖區(qū)中讀取所述目標(biāo)列標(biāo)識(shí)對(duì)應(yīng)的 列數(shù)據(jù);
[0009] 以及,將讀取的所述目標(biāo)列標(biāo)識(shí)對(duì)應(yīng)的列數(shù)據(jù)加載至所述行式緩沖區(qū)中的行;
[0010] 以及,建立所述目標(biāo)列標(biāo)識(shí)與所述行的行索引的對(duì)應(yīng)關(guān)系,并執(zhí)行所述的以所述 第一查詢(xún)條件為依據(jù),查詢(xún)所述行式緩沖區(qū)中所述行索引對(duì)應(yīng)行內(nèi)的目標(biāo)列標(biāo)識(shí)對(duì)應(yīng)的列 數(shù)據(jù)以獲得查詢(xún)結(jié)果并返回給所述事務(wù)型業(yè)務(wù)系統(tǒng)的步驟。
[0011] 結(jié)合本發(fā)明實(shí)施例第一方面的第一種可能的實(shí)現(xiàn)方式,在本發(fā)明實(shí)施例第一方面 的第二種可能的實(shí)現(xiàn)方式中,若所述列式緩沖區(qū)中未加載所述目標(biāo)列標(biāo)識(shí)對(duì)應(yīng)的列數(shù)據(jù), 所述將讀取的所述目標(biāo)列標(biāo)識(shí)對(duì)應(yīng)的列數(shù)據(jù)加載至所述行式緩沖區(qū)中的行之前,所述方法 還包括:
[0012] 從所述數(shù)據(jù)庫(kù)中讀取所述目標(biāo)列標(biāo)識(shí)對(duì)應(yīng)的列數(shù)據(jù)。
[0013] 在本發(fā)明實(shí)施例第一方面的第三種可能的實(shí)現(xiàn)方式中,當(dāng)收到事務(wù)型業(yè)務(wù)系統(tǒng)發(fā) 送的包括目標(biāo)列標(biāo)識(shí)和第一查詢(xún)條件的事務(wù)型業(yè)務(wù)數(shù)據(jù)查詢(xún)請(qǐng)求之前,所述方法還包括:
[0014] 當(dāng)收到事務(wù)型業(yè)務(wù)系統(tǒng)發(fā)送的包括目標(biāo)列標(biāo)識(shí)的查詢(xún)注冊(cè)請(qǐng)求時(shí),檢測(cè)所述行式 緩沖區(qū)中是否加載所述目標(biāo)列標(biāo)識(shí)對(duì)應(yīng)的列數(shù)據(jù),若所述行式緩沖區(qū)中未加載所述目標(biāo)列 標(biāo)識(shí)對(duì)應(yīng)的列數(shù)據(jù),檢測(cè)所述列式緩沖區(qū)中是否加載所述目標(biāo)列標(biāo)識(shí)對(duì)應(yīng)的列數(shù)據(jù),若所 述列式緩沖區(qū)中加載所述目標(biāo)列標(biāo)識(shí)對(duì)應(yīng)的列數(shù)據(jù),從所述列式緩沖區(qū)中讀取所述目標(biāo)列 標(biāo)識(shí)對(duì)應(yīng)的列數(shù)據(jù);若所述列式緩沖區(qū)中未加載所述目標(biāo)列標(biāo)識(shí)對(duì)應(yīng)的列數(shù)據(jù),從所述數(shù) 據(jù)庫(kù)中讀取所述目標(biāo)列標(biāo)識(shí)對(duì)應(yīng)的列數(shù)據(jù);
[0015] 以及,將讀取的所述目標(biāo)列標(biāo)識(shí)對(duì)應(yīng)的列數(shù)據(jù)加載至所述行式緩沖區(qū)中的行;
[0016] 以及,建立所述目標(biāo)列標(biāo)識(shí)與所述行的行索引的對(duì)應(yīng)關(guān)系。
[0017] 結(jié)合本發(fā)明實(shí)施例第一方面的第一種至第三種中的任一種可能的實(shí)現(xiàn)方式,在本 發(fā)明實(shí)施例第一方面的第四種可能的實(shí)現(xiàn)方式中,所述行式緩沖區(qū)包括若干個(gè)子緩沖區(qū), 每個(gè)所述子緩沖區(qū)包括長(zhǎng)度相同的若干個(gè)行,并且每個(gè)所述子緩沖區(qū)的行數(shù)目相同,所述 若干個(gè)子緩沖區(qū)中排序相同的行共用同一行索引;所述將讀取的所述目標(biāo)列標(biāo)識(shí)對(duì)應(yīng)的列 數(shù)據(jù)加載至所述行式緩沖區(qū)中的行包括:
[0018] 將讀取的所述目標(biāo)列標(biāo)識(shí)對(duì)應(yīng)的列數(shù)據(jù)按照所述行式緩沖區(qū)中的所述子緩沖區(qū) 的行數(shù)目進(jìn)行劃分,并將劃分得到的各部分列數(shù)據(jù)一一加載至任意一個(gè)所述子緩沖區(qū)包括 的各個(gè)行的相同位置中。
[0019] 結(jié)合本發(fā)明實(shí)施例第一方面的第四種可能的實(shí)現(xiàn)方式,在本發(fā)明實(shí)施例第一方面 的第五種可能的實(shí)現(xiàn)方式中,所述以所述第一查詢(xún)條件為依據(jù),查詢(xún)所述行式緩沖區(qū)中所 述行索引對(duì)應(yīng)行內(nèi)的目標(biāo)列標(biāo)識(shí)對(duì)應(yīng)的列數(shù)據(jù)以獲得查詢(xún)結(jié)果包括:
[0020] 確定所述行式緩沖區(qū)中所述行索引對(duì)應(yīng)的位于任意一個(gè)所述子緩沖區(qū)的各個(gè) 行;
[0021] 以所述第一查詢(xún)條件為依據(jù),對(duì)所述行索引對(duì)應(yīng)的位于任意一個(gè)所述子緩沖區(qū)的 各個(gè)行中相同位置加載的所述目標(biāo)列標(biāo)識(shí)對(duì)應(yīng)的各部分列數(shù)據(jù)進(jìn)行查詢(xún),以獲得查詢(xún)結(jié) 果。
[0022] 結(jié)合本發(fā)明實(shí)施例第一方面的第一種或第二種可能的實(shí)現(xiàn)方式,在本發(fā)明實(shí)施例 第一方面的第六種可能的實(shí)現(xiàn)方式中,當(dāng)收到分析型業(yè)務(wù)系統(tǒng)發(fā)送的包括指定列標(biāo)識(shí)和第 二查詢(xún)條件的分析型業(yè)務(wù)數(shù)據(jù)查詢(xún)請(qǐng)求時(shí),檢測(cè)所述列式緩沖區(qū)中是否加載所述指定列標(biāo) 識(shí)對(duì)應(yīng)的列數(shù)據(jù),若加載,以所述第二查詢(xún)條件為依據(jù),查詢(xún)所述列式緩沖區(qū)內(nèi)所述指定列 標(biāo)識(shí)對(duì)應(yīng)的列數(shù)據(jù)以獲得查詢(xún)結(jié)果并返回給所述分析型業(yè)務(wù)系統(tǒng)。
[0023] 結(jié)合本發(fā)明實(shí)施例第一方面的第六種可能的實(shí)現(xiàn)方式,在本發(fā)明實(shí)施例第一方面 的第七種可能的實(shí)現(xiàn)方式中,若所述列式緩沖區(qū)中未加載所述指定列標(biāo)識(shí)對(duì)應(yīng)的列數(shù)據(jù), 所述方法還包括:
[0024] 從所述數(shù)據(jù)庫(kù)中讀取所述指定列標(biāo)識(shí)對(duì)應(yīng)的列數(shù)據(jù);
[0025] 將讀取的所述指定列標(biāo)識(shí)對(duì)應(yīng)的列數(shù)據(jù)加載至所述列式緩沖區(qū)的列,并執(zhí)行所述 的以所述第二查詢(xún)條件為依據(jù),查詢(xún)所述列式緩沖區(qū)內(nèi)所述指定列標(biāo)識(shí)對(duì)應(yīng)的列數(shù)據(jù)以獲 得查詢(xún)結(jié)果并返回給所述分析型業(yè)務(wù)系統(tǒng)的步驟。
[0026]本發(fā)明實(shí)施例第二方面公開(kāi)一種業(yè)務(wù)數(shù)據(jù)查詢(xún)裝置,數(shù)據(jù)庫(kù)內(nèi)存中包括列式緩沖 區(qū)和行式緩沖區(qū),所述列式緩沖區(qū)的列用于加載數(shù)據(jù)庫(kù)的列數(shù)據(jù),所述行式緩沖區(qū)的行用 于加載所述列式緩沖區(qū)的列數(shù)據(jù)或所述數(shù)據(jù)庫(kù)的列數(shù)據(jù),所述裝置包括:
[0027]第一檢測(cè)單元,用于當(dāng)收到事務(wù)型業(yè)務(wù)系統(tǒng)發(fā)送的包括目標(biāo)列標(biāo)識(shí)和第一查詢(xún)條 件的事務(wù)型業(yè)務(wù)數(shù)據(jù)查詢(xún)請(qǐng)求時(shí),檢測(cè)是否存在所述目標(biāo)列標(biāo)識(shí)對(duì)應(yīng)的行索引;
[0028]第一查詢(xún)單元,用于在所述第一檢測(cè)單元檢測(cè)存在所述目標(biāo)列標(biāo)識(shí)對(duì)應(yīng)的行索引 時(shí),以所述第一查詢(xún)條件為依據(jù),查詢(xún)所述行式緩沖區(qū)中所述行索引對(duì)應(yīng)行內(nèi)的所述目標(biāo) 列標(biāo)識(shí)對(duì)應(yīng)的列數(shù)據(jù)以獲得查詢(xún)結(jié)果,并輸出給交互單元;
[0029]所述交互單元,用于將所述第一查詢(xún)單元獲得的所述查詢(xún)結(jié)果返回給所述事務(wù)型 業(yè)務(wù)系統(tǒng)。
[0030]在本發(fā)明實(shí)施例第二方面的第一種可能的實(shí)現(xiàn)方式中,所述裝置還包括:
[0031]第二檢測(cè)單元,用于在所述第一檢測(cè)單元檢測(cè)不存在所述目標(biāo)列標(biāo)識(shí)對(duì)應(yīng)的行索 引時(shí),檢測(cè)所述列式緩沖區(qū)中是否加載所述目標(biāo)列標(biāo)識(shí)對(duì)應(yīng)的列數(shù)據(jù);
[0032]第一讀取單元,用于在所述第二檢測(cè)單元檢測(cè)所述列式緩沖區(qū)中加載所述目標(biāo)列 標(biāo)識(shí)對(duì)應(yīng)的列數(shù)據(jù)時(shí),從所述列式緩沖區(qū)中讀取所述目標(biāo)列標(biāo)識(shí)對(duì)應(yīng)的列數(shù)據(jù);
[0033]第一加載單元,用于將所述第一讀取單元讀取的所述目標(biāo)列標(biāo)識(shí)對(duì)應(yīng)的列數(shù)據(jù)加 載至所述行式緩沖區(qū)中的行;
[0034]第一建立單元,用于建立所述