[發(fā)明專利]基于KV存儲的mergejoin異步塊運算方法有效
| 申請?zhí)枺?/td> | 202010893114.9 | 申請日: | 2020-08-31 |
| 公開(公告)號: | CN112035257B | 公開(公告)日: | 2022-05-31 |
| 發(fā)明(設(shè)計)人: | 柴毅;張暉;史大義;牟冠學(xué) | 申請(專利權(quán))人: | 浪潮云信息技術(shù)股份公司 |
| 主分類號: | G06F9/50 | 分類號: | G06F9/50;G06F9/54 |
| 代理公司: | 濟(jì)南信達(dá)專利事務(wù)所有限公司 37100 | 代理人: | 陳婷婷 |
| 地址: | 250100 山東省濟(jì)南市高*** | 國省代碼: | 山東;37 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 基于 kv 存儲 mergejoin 異步 運算 方法 | ||
本發(fā)明公開了基于KV存儲的mergejoin異步塊運算方法,屬于算子優(yōu)化技術(shù)領(lǐng)域,該方法同時啟動多個mergejoin算子進(jìn)行并行計算,mergejoin算子執(zhí)行通過管道通信,異步執(zhí)行;包括讀取數(shù)據(jù)模塊、解碼模塊和merge運算模塊,讀取數(shù)據(jù)模塊把數(shù)據(jù)塊發(fā)送到讀取管道,解碼模塊從管道中接收數(shù)據(jù),并將解碼出的數(shù)據(jù)以數(shù)據(jù)塊的形式發(fā)送的解碼管道中,merge運算模塊建立結(jié)果管道,監(jiān)聽解碼管道,從管道中接收數(shù)據(jù)塊進(jìn)行merge匹配運算,將運算結(jié)果按照設(shè)定規(guī)則,以數(shù)據(jù)塊的形式發(fā)送到結(jié)果管道中。本發(fā)明能夠有效提高cpu的利用率,避免各模塊之間的多次調(diào)用,減小調(diào)用的開銷。
技術(shù)領(lǐng)域
本發(fā)明涉及算子優(yōu)化技術(shù)領(lǐng)域,具體地說是基于KV存儲的mergejoin異步塊運算方法。
背景技術(shù)
當(dāng)前在KV存儲模式下,mergejoin算法存在的問題是:執(zhí)行流程串行化,各個模塊都要等待其調(diào)用的另一模塊返回結(jié)果后再執(zhí)行,cpu利用率不高,執(zhí)行效率慢。匹配結(jié)果按行進(jìn)行返回會重復(fù)多次的調(diào)用各個函數(shù),函數(shù)調(diào)用深度大,開銷較大。
發(fā)明內(nèi)容
本發(fā)明的技術(shù)任務(wù)是針對以上不足之處,提供基于KV存儲的mergejoin異步塊運算方法,能夠提高cpu的利用率,避免各模塊之間的多次調(diào)用,減小調(diào)用的開銷。
本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是:
基于KV存儲的mergejoin異步塊運算方法,其特征在于,該方法同時啟動多個mergejoin算子進(jìn)行并行計算,mergejoin算子執(zhí)行通過管道通信,異步執(zhí)行;
包括讀取數(shù)據(jù)模塊、解碼模塊和merge運算模塊,讀取數(shù)據(jù)模塊把數(shù)據(jù)塊發(fā)送到讀取管道,解碼模塊從管道中接收數(shù)據(jù),并將解碼出的數(shù)據(jù)以數(shù)據(jù)塊的形式發(fā)送的解碼管道中,merge運算模塊建立結(jié)果管道,監(jiān)聽解碼管道,從管道中接收數(shù)據(jù)塊進(jìn)行merge匹配運算,將運算結(jié)果按照設(shè)定規(guī)則,以數(shù)據(jù)塊的形式發(fā)送到結(jié)果管道中。
該方法同時啟動多個mergejoin算子進(jìn)行并行計算,mergejoin算子執(zhí)行由以前各個模塊互相調(diào)用變?yōu)椋ㄟ^管道通信,異步執(zhí)行,提高CPU的利用率。
在讀取數(shù)據(jù)模塊處建立管道,讀取數(shù)據(jù)模塊和解碼模塊通過管道傳遞數(shù)據(jù),代替原先模塊間互相調(diào)用的方式;在解碼模塊處建立管道,解碼模塊和計算模塊通過管道傳遞數(shù)據(jù),代替原先模塊間互相調(diào)用的方式;在計算模塊處建立管道,計算模塊把結(jié)果發(fā)送到管道中,客戶端從管道接收數(shù)據(jù),代替原先模塊間互相調(diào)用的方式;各個管道中的數(shù)據(jù)為數(shù)據(jù)塊存儲的格式,減少了從管道發(fā)送和接收的次數(shù),避免了函數(shù)調(diào)用的開銷。
優(yōu)選的,在執(zhí)行mergejoin算子前,通過表中的統(tǒng)計信息分出大、小表;根據(jù)大小表的大小比例把大表數(shù)據(jù)拆分成兩個部分,同時啟動兩個mergejoin算子進(jìn)行并行計算;把小表數(shù)據(jù)冗余出一份,與兩部分大表數(shù)據(jù)同時進(jìn)行merge運算。
優(yōu)選的,通過表的存儲范圍分出大、小表。
優(yōu)選的,所述讀取數(shù)據(jù)模塊,主進(jìn)程通過go語言協(xié)程的方式啟動兩個go協(xié)程,去異步的讀取大表和小表的原數(shù)據(jù);通過go語言協(xié)程的方式啟動兩個merge算子協(xié)程并行執(zhí)行merge運算,然后主協(xié)程等待處理兩個merge算子返回的結(jié)果數(shù)據(jù)。
優(yōu)選的,讀取數(shù)據(jù)模塊對大小表進(jìn)行處理:在大表數(shù)據(jù)塊上添加標(biāo)志位,標(biāo)志當(dāng)前數(shù)據(jù)塊為第幾塊數(shù)據(jù),用于保證結(jié)果數(shù)據(jù)的先后順序;小表數(shù)據(jù)塊在讀出后進(jìn)行冗余處理,把相同的兩份數(shù)據(jù)放入兩個讀取管道,供兩個merge運算使用。
進(jìn)一步的,一個merge算子具有兩個解碼模塊,分別解碼大表和小表,主協(xié)程啟動兩個merge算子協(xié)程;啟動后,兩個讀取大表數(shù)據(jù)解碼模塊,兩個讀取小表數(shù)據(jù)解碼模塊,兩個大表數(shù)據(jù)解碼模塊從同一個讀取數(shù)據(jù)管道中讀取數(shù)據(jù),兩個小表數(shù)據(jù)解碼模塊分別從兩個管道中讀取小表的原數(shù)據(jù)。這樣通過管道通信的方式代替了以前函數(shù)調(diào)用的方式,建立解碼結(jié)果管道,解碼模塊將解碼出的數(shù)據(jù),以數(shù)據(jù)塊的形式發(fā)送到解碼管道中。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于浪潮云信息技術(shù)股份公司,未經(jīng)浪潮云信息技術(shù)股份公司許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202010893114.9/2.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。





