[發(fā)明專利]數(shù)據(jù)庫聚合查詢方法、裝置及系統(tǒng)有效
| 申請?zhí)枺?/td> | 202010988662.X | 申請日: | 2020-09-18 |
| 公開(公告)號: | CN112307062B | 公開(公告)日: | 2022-11-22 |
| 發(fā)明(設(shè)計)人: | 張強;汪金忠;孫遷 | 申請(專利權(quán))人: | 蘇寧云計算有限公司 |
| 主分類號: | G06F16/2455 | 分類號: | G06F16/2455;G06F16/248 |
| 代理公司: | 北京市萬慧達律師事務(wù)所 11111 | 代理人: | 顧友 |
| 地址: | 210000 江蘇省南*** | 國省代碼: | 江蘇;32 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 數(shù)據(jù)庫 聚合 查詢 方法 裝置 系統(tǒng) | ||
本申請實施例公開了一種數(shù)據(jù)庫聚合查詢方法、裝置及系統(tǒng),其中方法包括:接收查詢請求,根據(jù)查詢請求獲得對應(yīng)的數(shù)據(jù)表,獲取所述數(shù)據(jù)表中待處理元組的分組字段,所述分組字段是指根據(jù)查詢請求中的分組信息,對所述數(shù)據(jù)表進行分組的字段;利用聚合函數(shù)對具有相同分組字段的待處理元組進行計算獲得聚合結(jié)果,將分組字段作為hat_trie的主鍵,將利用聚合函數(shù)計算得出的各個分組字段對應(yīng)的聚合結(jié)果作為各個主鍵對應(yīng)的值,將所有主鍵和主鍵對應(yīng)的值保存至hat_trie;將hat_trie上保存的主鍵和主鍵對應(yīng)的值作為查詢結(jié)果返回給用戶。相比現(xiàn)有技術(shù),本申請能夠有效降低分組聚合查詢時的資源占用率,提高整體查詢效率。
技術(shù)領(lǐng)域
本申請涉及互聯(lián)網(wǎng)技術(shù)領(lǐng)域,具體涉及一種數(shù)據(jù)庫聚合查詢方法、裝置及系統(tǒng)。
背景技術(shù)
在關(guān)系型數(shù)據(jù)庫查詢功能中,存在聚合類查詢,包括分組運算(group by)、去重運算(distinct)等類型的查詢,此類查詢常見目的是根據(jù)數(shù)據(jù)庫中的指定維度字段對需要匯總分析的指標字段進行分組之后做分析匯總運算,比如求sum,avg,count等等,在聯(lián)機分析處理系統(tǒng)(OLAP)的查詢中出現(xiàn)頻度非常高。
目前常見的數(shù)據(jù)庫引擎在實現(xiàn)分組聚合類查詢時通常采用哈希表(hash)數(shù)據(jù)結(jié)構(gòu)。使用hash類數(shù)據(jù)結(jié)構(gòu)的方式存儲,簡單通用,時間復(fù)雜度為O(1),效率高。Hash類數(shù)據(jù)結(jié)構(gòu)的一個問題是占用內(nèi)存資源較大,當分組查詢的字段基數(shù)很高,分組數(shù)(bucket)比較多時,這個問題尤其突出。具體來說,假設(shè)分組字段有5000萬條平均長度為10Byte的字符串(共500MB),中間生成的Hash表會產(chǎn)生一系列鏈表結(jié)構(gòu),導(dǎo)致內(nèi)存可達到5GB,即內(nèi)存擴展可達10倍。此查詢占用大量內(nèi)存和cpu資源,導(dǎo)致其他查詢執(zhí)行時間延長甚至超時等問題。
發(fā)明內(nèi)容
本申請?zhí)峁┝艘环N數(shù)據(jù)庫聚合查詢方法、裝置及系統(tǒng),能夠有效降低分組聚合查詢時的資源占用率,提高整體查詢效率。
本申請?zhí)峁┝巳缦路桨福?/p>
第一方面提供一種數(shù)據(jù)庫聚合查詢方法,所述方法包括:
接收查詢請求,根據(jù)查詢請求獲得對應(yīng)的數(shù)據(jù)表,獲取所述數(shù)據(jù)表中待處理元組的分組字段,所述分組字段是指根據(jù)查詢請求中的分組信息,對所述數(shù)據(jù)表進行分組的字段;
利用聚合函數(shù)對具有相同分組字段的待處理元組進行計算獲得聚合結(jié)果,將分組字段作為hat_trie的主鍵,將利用聚合函數(shù)計算得出的各個分組字段對應(yīng)的聚合結(jié)果作為各個主鍵對應(yīng)的值,將所有主鍵和主鍵對應(yīng)的值保存至hat_trie;
將hat_trie上保存的主鍵和主鍵對應(yīng)的值作為查詢結(jié)果返回給用戶。
進一步地,所述根據(jù)查詢請求獲得對應(yīng)的數(shù)據(jù)表包括:
根據(jù)查詢請求從數(shù)據(jù)庫中讀取待聚合數(shù)據(jù)信息,并轉(zhuǎn)換成數(shù)據(jù)表。
進一步地,所述利用聚合函數(shù)對具有相同分組字段的待處理元組進行計算獲得聚合結(jié)果包括:
在hat_trie中查詢是否已存在與所述待處理元組的分組字段相同的主鍵;
若不存在,則將所述分組字段作為主鍵,利用聚合函數(shù)計算分組字段對應(yīng)的聚合結(jié)果作為hat_trie中主鍵對應(yīng)的值,保存至hat_trie;
若存在,則查找所述主鍵對應(yīng)的值作為聚合函數(shù)計算的初始值,利用聚合函數(shù)計算分組字段對應(yīng)的聚合結(jié)果更新hat_trie中主鍵對應(yīng)的值,保存至hat_trie。
進一步地,所述方法還包括:
檢查資源占用情況,若超出預(yù)設(shè)的限定范圍,則按hat_trie指定格式將內(nèi)存中的部分主鍵和主鍵對應(yīng)的值緩存到磁盤,生成緩存文件。
進一步地,所述將hat_trie上保存的主鍵和主鍵對應(yīng)的值作為查詢結(jié)果返回給用戶包括:
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于蘇寧云計算有限公司,未經(jīng)蘇寧云計算有限公司許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202010988662.X/2.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。
- 數(shù)據(jù)庫
- 數(shù)據(jù)庫管理系統(tǒng)及數(shù)據(jù)庫
- 數(shù)據(jù)庫構(gòu)筑裝置、數(shù)據(jù)庫檢索裝置、數(shù)據(jù)庫裝置、數(shù)據(jù)庫構(gòu)筑方法、以及數(shù)據(jù)庫檢索方法
- 數(shù)據(jù)庫和數(shù)據(jù)庫處理方法
- 數(shù)據(jù)庫系統(tǒng)、數(shù)據(jù)庫更新方法、數(shù)據(jù)庫以及數(shù)據(jù)庫更新程序
- 容器數(shù)據(jù)庫
- 數(shù)據(jù)庫同步方法及數(shù)據(jù)庫
- 一種MongoDB數(shù)據(jù)庫對象復(fù)制延遲監(jiān)控方法和裝置
- 數(shù)據(jù)分布式存儲方法、裝置、電子設(shè)備及存儲介質(zhì)
- 數(shù)據(jù)庫語句執(zhí)行方法及裝置





