一種數(shù)據(jù)處理方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001 ]本發(fā)明涉及數(shù)據(jù)存儲(chǔ)技術(shù)領(lǐng)域,尤其涉及一種數(shù)據(jù)處理的方法及裝置。
【背景技術(shù)】
[0002] 隨著大量的業(yè)務(wù)數(shù)據(jù)和社會(huì)網(wǎng)絡(luò)累積的各種數(shù)據(jù)越來越多,數(shù)據(jù)存儲(chǔ)方式對(duì)于數(shù) 據(jù)的查詢速度有著重要的影響。
[0003] 現(xiàn)有技術(shù)中的行存儲(chǔ)方式按行存儲(chǔ)所管理的,每次讀入內(nèi)存的都是若干完整的行 數(shù)據(jù),適用于小批量的數(shù)據(jù)處理。對(duì)大數(shù)據(jù)集的分析查詢,通常只用到一個(gè)邏輯表的少數(shù)幾 個(gè)列,若按行的方式存儲(chǔ)數(shù)據(jù),由于每次要讀取的數(shù)據(jù)量非常大,而查詢時(shí)可能只用到一個(gè) 邏輯表的少數(shù)幾個(gè)列,這樣,在查詢時(shí)會(huì)讀取大量無關(guān)數(shù)據(jù),從而浪費(fèi)了帶寬,降低了效率, 影響了查詢處理速度。
[0004] 現(xiàn)有技術(shù)中的列存儲(chǔ)方式按行存儲(chǔ)所管理的,只讀取與查詢相關(guān)的列數(shù)據(jù),可以 避免對(duì)無關(guān)列數(shù)據(jù)的讀取,但該方式存儲(chǔ)的數(shù)據(jù)進(jìn)行查詢時(shí),通常需要將不同列的數(shù)據(jù)重 新組織成元組,查詢處理過程中的元組重構(gòu)操作時(shí)影響查詢處理速度。
[0005] 現(xiàn)有技術(shù)中的行列混合存儲(chǔ)方式按行存儲(chǔ)所管理的,同一份數(shù)據(jù)保存兩份,即一 份用行存儲(chǔ),一份用列存儲(chǔ);該方法所占的存儲(chǔ)空間是原始數(shù)據(jù)的兩倍,存儲(chǔ)的數(shù)據(jù)利用率 低,并且維護(hù)困難。PAX方法是一種常用的行列混合存儲(chǔ),其原理為:讀入內(nèi)存的數(shù)據(jù)在每個(gè) 頁內(nèi)按列存儲(chǔ),緩解了元組重構(gòu)的代價(jià)。同一元組的所有屬性值在同一頁內(nèi),重構(gòu)一條元組 不需要通過多次輸入/輸出(I/O)從不同的文件中獲取同一元組的不同列值。PAX使用混合 結(jié)構(gòu)的目標(biāo)是優(yōu)化高速緩存從內(nèi)存讀取數(shù)據(jù)的性能,但是對(duì)處理大數(shù)據(jù)時(shí)的磁盤I/O性能 沒有影響。PAX方法只是在數(shù)據(jù)從外存讀入內(nèi)存以后,在頁內(nèi)按列的方式組織,而在存儲(chǔ)上 仍然按行的方式存儲(chǔ)。由于PAX方法沒有改變磁盤的讀取速度,影響了查詢速度。
[0006] 目前對(duì)于如何提高查詢處理速度,如何提高存儲(chǔ)數(shù)據(jù)的利用率是需要解決的問 題。
【發(fā)明內(nèi)容】
[0007] 本發(fā)明的目的是提供一種數(shù)據(jù)處理的方法及裝置,以解決查詢處理速度慢,存儲(chǔ) 數(shù)據(jù)的利用率低的問題。
[0008] 本發(fā)明的目的是通過以下技術(shù)方案實(shí)現(xiàn)的:
[0009] -種數(shù)據(jù)處理方法,包括:
[0010]接收用戶的查詢請(qǐng)求,其中,所述查詢請(qǐng)求中攜帶所需查詢的屬性和屬性值;
[0011]若未保存所需查詢的屬性對(duì)應(yīng)的列存儲(chǔ),從行存儲(chǔ)中確定出所需查詢的屬性值對(duì) 應(yīng)的行號(hào),根據(jù)確定出的行號(hào),從行存儲(chǔ)中獲取對(duì)應(yīng)的記錄并將所需查詢的屬性對(duì)應(yīng)的查 詢次數(shù)增加設(shè)定值;
[0012]若保存有所需查詢的屬性對(duì)應(yīng)的列存儲(chǔ),從所述列存儲(chǔ)中確定出所需查詢的屬性 值對(duì)應(yīng)的行號(hào),并從行存儲(chǔ)中獲取所述行號(hào)對(duì)應(yīng)的記錄。
[0013] 可選的,將所需查詢的屬性對(duì)應(yīng)的查詢次數(shù)增加設(shè)定次數(shù)之后,該方法還包括:
[0014] 在所需查詢的屬性對(duì)應(yīng)的查詢次數(shù)達(dá)到設(shè)定閾值時(shí),從行存儲(chǔ)中確定出所需查詢 的屬性對(duì)應(yīng)的所有屬性值和行號(hào)信息,并將確定出的屬性值和行號(hào)信息以列存儲(chǔ)方式進(jìn)行 存儲(chǔ)。
[0015] 可選的,若所述查詢請(qǐng)求中攜帶至少兩個(gè)所需查詢的屬性,且保存有所述至少兩 個(gè)所需查詢的屬性對(duì)應(yīng)的列存儲(chǔ),則從所述列存儲(chǔ)中確定出所需查詢的屬性值對(duì)應(yīng)的行 號(hào),并從行存儲(chǔ)中獲取所述行號(hào)對(duì)應(yīng)的記錄,包括:
[0016] 對(duì)于每個(gè)所需查詢的屬性,從所需查詢的屬性對(duì)應(yīng)的列存儲(chǔ)中,確定出所需查詢 的屬性值對(duì)應(yīng)的行號(hào)形成的行號(hào)集合;
[0017] 確定出所述行號(hào)集合的交集,并根據(jù)所述行號(hào)集合的交集,從行存儲(chǔ)中獲取對(duì)應(yīng) 的記錄。
[0018] 可選的,若所述查詢請(qǐng)求中攜帶至少兩個(gè)所需查詢的屬性,且未保存所述至少兩 個(gè)所需查詢的屬性中至少一個(gè)所需查詢的屬性對(duì)應(yīng)的列存儲(chǔ),則從所述列存儲(chǔ)中確定出所 需查詢的屬性值對(duì)應(yīng)的行號(hào),并從行存儲(chǔ)中獲取所述行號(hào)對(duì)應(yīng)的記錄,包括:
[0019] 對(duì)于存在對(duì)應(yīng)的列存儲(chǔ)的所需查詢的屬性,從所需查詢的屬性對(duì)應(yīng)的列存儲(chǔ)中, 確定出所需查詢的屬性值對(duì)應(yīng)的行號(hào),并根據(jù)確定出的行號(hào),從行存儲(chǔ)中獲取對(duì)應(yīng)的記錄;
[0020] 從獲取到的記錄中,確定出不存在對(duì)應(yīng)的列存儲(chǔ)的所需查詢的屬性所對(duì)應(yīng)的記 錄。
[0021] 基于與方法同樣的發(fā)明構(gòu)思,本發(fā)明實(shí)施例提供了一種數(shù)據(jù)處理裝置,包括:
[0022] 接收模塊,用于接收用戶的查詢請(qǐng)求,其中,所述查詢請(qǐng)求中攜帶所需查詢的屬性 和屬性值;
[0023] 處理模塊,用于若未保存所需查詢的屬性對(duì)應(yīng)的列存儲(chǔ),從行存儲(chǔ)中確定出所需 查詢的屬性值對(duì)應(yīng)的行號(hào),根據(jù)確定出的行號(hào),從行存儲(chǔ)中獲取對(duì)應(yīng)的記錄并將所需查詢 的屬性對(duì)應(yīng)的查詢次數(shù)增加設(shè)定值;
[0024] 若保存有所需查詢的屬性對(duì)應(yīng)的列存儲(chǔ),從所述列存儲(chǔ)中確定出所需查詢的屬性 值對(duì)應(yīng)的行號(hào),并從行存儲(chǔ)中獲取所述行號(hào)對(duì)應(yīng)的記錄。
[0025] 可選的,將所需查詢的屬性對(duì)應(yīng)的查詢次數(shù)增加設(shè)定次數(shù)之后,所述處理模塊還 用于:
[0026] 在所需查詢的屬性對(duì)應(yīng)的查詢次數(shù)達(dá)到設(shè)定閾值時(shí),從行存儲(chǔ)中確定出所需查詢 的屬性對(duì)應(yīng)的所有屬性值和行號(hào)信息,并將確定出的屬性值和行號(hào)信息以列存儲(chǔ)方式進(jìn)行 存儲(chǔ)。
[0027] 可選的,若所述查詢請(qǐng)求中攜帶至少兩個(gè)所需查詢的屬性,且保存有所述至少兩 個(gè)所需查詢的屬性對(duì)應(yīng)的列存儲(chǔ),則從所述列存儲(chǔ)中確定出所需查詢的屬性值對(duì)應(yīng)的行 號(hào),并從行存儲(chǔ)中獲取所述行號(hào)對(duì)應(yīng)的記錄,所述處理模塊還用于:
[0028] 對(duì)于每個(gè)所需查詢的屬性,從所需查詢的屬性對(duì)應(yīng)的列存儲(chǔ)中,確定出所需查詢 的屬性值對(duì)應(yīng)的行號(hào)形成的行號(hào)集合;
[0029]確定出所述行號(hào)集合的交集,并根據(jù)所述行號(hào)集合的交集,從行存儲(chǔ)中獲取對(duì)應(yīng) 的記錄。
[0030]可選的,若所述查詢請(qǐng)求中攜帶至少兩個(gè)所需查詢的屬性,且未保存所述至少兩 個(gè)所需查詢的屬性中至少一個(gè)所需查詢的屬性對(duì)應(yīng)的列存儲(chǔ),則從所述列存儲(chǔ)中確定出所 需查詢的屬性值對(duì)應(yīng)的行號(hào),并從行存儲(chǔ)中獲取所述行號(hào)對(duì)應(yīng)的記錄,所述處理模塊還用 于:
[0031] 對(duì)于存在對(duì)應(yīng)的列存儲(chǔ)的所需查詢的屬性,從所需查詢的屬性對(duì)應(yīng)的列存儲(chǔ)中, 確定出所需查詢的屬性值對(duì)應(yīng)的行號(hào),并根據(jù)確定出的行號(hào),從行存儲(chǔ)中獲取對(duì)應(yīng)的記錄;
[0032] 從獲取到的記錄中,確定出不存在對(duì)應(yīng)的列存儲(chǔ)的所需查詢的屬性所對(duì)應(yīng)的記 錄。
[0033] 本發(fā)明實(shí)施例提供的一種數(shù)據(jù)處理的方法及裝置,接收用戶的查詢請(qǐng)求后,若未 保存所需查詢的屬性對(duì)應(yīng)的列存儲(chǔ)時(shí),從行存儲(chǔ)中確定出所需查詢的屬性值對(duì)應(yīng)的行號(hào), 根據(jù)確定出的行號(hào),從行存儲(chǔ)中獲取對(duì)應(yīng)的記錄并將所需查詢的屬性對(duì)應(yīng)的查詢次數(shù)增加 設(shè)定值;若保存有所需查詢的屬性對(duì)應(yīng)的列存儲(chǔ),從所述列存儲(chǔ)中確定出所需查詢的屬性 值對(duì)應(yīng)的行號(hào),并從行存儲(chǔ)中獲取所述行號(hào)對(duì)應(yīng)的記錄。提高了查詢處理速度以及存儲(chǔ)數(shù) 據(jù)的利用率。
【附圖說明】
[0034] 圖1為本發(fā)明實(shí)施例提供的一種數(shù)據(jù)處理方法流程圖;
[0035]圖2為本發(fā)明實(shí)施例提供的另一種數(shù)據(jù)處理方法流程圖;
[0036]圖3為本發(fā)明實(shí)施例提供的一種數(shù)據(jù)處理裝置示意圖。
【具體實(shí)施方式】
[0037]下面將結(jié)合附圖,對(duì)本發(fā)明實(shí)施例提供的技術(shù)方案進(jìn)行詳細(xì)說明。
[0038]本發(fā)明實(shí)施例提供一種數(shù)據(jù)處理方法,如圖1所示,包括如下操作:
[0039] 步驟100、接收用戶的查詢請(qǐng)求,其中,所述查詢請(qǐng)求中攜帶所需查詢的屬性和屬 性值;
[0040] 步驟110、在確定出未保存所需查詢的屬性對(duì)應(yīng)的列存儲(chǔ)時(shí),將所需查詢的屬性對(duì) 應(yīng)的查詢次數(shù)增加設(shè)定次數(shù),并從行存儲(chǔ)中確定出所需查詢的屬性值對(duì)應(yīng)的行號(hào),根據(jù)確 定出的行號(hào),從行存儲(chǔ)中獲取對(duì)應(yīng)的記錄;
[0041 ]步驟120、在確定出保存有所需查詢的屬性對(duì)應(yīng)的列存儲(chǔ)時(shí),從所述列存儲(chǔ)中確定 出所需查詢的屬性值對(duì)應(yīng)的行號(hào),并從行存儲(chǔ)中獲取所述行號(hào)對(duì)應(yīng)的記錄。
[0042]本發(fā)明實(shí)施例提供的一種數(shù)據(jù)處理的方法,接收用戶的查詢請(qǐng)求后,若未保存所 需查詢的屬性對(duì)應(yīng)的列存儲(chǔ)時(shí),從行存儲(chǔ)中確定出所需查詢的屬性值對(duì)應(yīng)的行號(hào),根據(jù)確 定出的行號(hào),從行存儲(chǔ)中獲取對(duì)應(yīng)的記錄并將所需