国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種面向分布式內(nèi)存數(shù)據(jù)庫(kù)查詢引擎的數(shù)據(jù)分發(fā)方法與流程

      文檔序號(hào):11251056閱讀:1396來(lái)源:國(guó)知局
      一種面向分布式內(nèi)存數(shù)據(jù)庫(kù)查詢引擎的數(shù)據(jù)分發(fā)方法與流程

      本發(fā)明涉及數(shù)據(jù)庫(kù)數(shù)據(jù)處理領(lǐng)域,具體地,涉及一種面向分布式內(nèi)存數(shù)據(jù)庫(kù)查詢引擎的數(shù)據(jù)分發(fā)方法。



      背景技術(shù):

      數(shù)據(jù)庫(kù)查詢引擎負(fù)責(zé)執(zhí)行數(shù)據(jù)查詢?nèi)蝿?wù)的部分,接收用戶的查詢請(qǐng)求,向用戶返回查詢結(jié)果,屏蔽具體的查詢執(zhí)行過(guò)程。查詢引擎對(duì)外提供標(biāo)準(zhǔn)sql的查詢接口,向用戶返回與傳統(tǒng)數(shù)據(jù)庫(kù)系統(tǒng)相同組織形式的查詢結(jié)果,可向上適配任意滿足sql標(biāo)準(zhǔn)的客戶端或中間件。同時(shí)向下適配滿足該查詢引擎協(xié)議的列式存儲(chǔ)系統(tǒng)。

      數(shù)據(jù)庫(kù)查詢引擎其主要承擔(dān)的職責(zé)或功能如下:

      1、解析用戶的sql查詢語(yǔ)句,生成查詢計(jì)劃;

      2、基于規(guī)則和代價(jià)對(duì)查詢計(jì)劃進(jìn)行優(yōu)化,使之具有最小的預(yù)估執(zhí)行代價(jià);

      3、與數(shù)據(jù)存儲(chǔ)系統(tǒng)交互,執(zhí)行查詢計(jì)劃,獲取數(shù)據(jù);

      4、根據(jù)查詢條件進(jìn)行數(shù)據(jù)的計(jì)算和合并;

      5、生成最終查詢結(jié)果,返回給用戶。

      目前主流分布式內(nèi)存數(shù)據(jù)庫(kù)查詢引擎的中間數(shù)據(jù)切分方式是固定的,但也因此限制了算子的擴(kuò)展方式。如果算子的擴(kuò)展方式被限制,則會(huì)導(dǎo)致任務(wù)并行度降低。因?yàn)閟ql查詢語(yǔ)句在查詢引擎中會(huì)轉(zhuǎn)換為一個(gè)dag物理計(jì)劃,如果在任務(wù)推進(jìn)過(guò)程中數(shù)據(jù)無(wú)法二次切分,隨著任務(wù)的推進(jìn),后繼任務(wù)數(shù)目會(huì)越來(lái)越少,并行度必然大大降低。

      綜上所述,本申請(qǐng)發(fā)明人在實(shí)現(xiàn)本申請(qǐng)發(fā)明技術(shù)方案的過(guò)程中,發(fā)現(xiàn)上述技術(shù)至少存在如下技術(shù)問(wèn)題:

      在現(xiàn)有技術(shù)中,現(xiàn)有的分布式內(nèi)存數(shù)據(jù)庫(kù)查詢引擎存在限制了算子的擴(kuò)展方式導(dǎo)致任務(wù)并行度降低的技術(shù)問(wèn)題。



      技術(shù)實(shí)現(xiàn)要素:

      本發(fā)明提供了一種面向分布式內(nèi)存數(shù)據(jù)庫(kù)查詢引擎的數(shù)據(jù)分發(fā)方法,解決了現(xiàn)有的分布式內(nèi)存數(shù)據(jù)庫(kù)查詢引擎存在限制了算子的擴(kuò)展方式導(dǎo)致任務(wù)并行度降低的技術(shù)問(wèn)題,提高了任務(wù)并行度的技術(shù)效果。

      為解決上述技術(shù)問(wèn)題,本申請(qǐng)?zhí)峁┝艘环N面向分布式內(nèi)存數(shù)據(jù)庫(kù)查詢引擎的數(shù)據(jù)分發(fā)方法,所述方法包括:

      數(shù)據(jù)庫(kù)查詢引擎中的前置算子計(jì)算完成后,數(shù)據(jù)庫(kù)查詢引擎對(duì)計(jì)算完成后的數(shù)據(jù)進(jìn)行切分,然后將切分后的數(shù)據(jù)分發(fā)給數(shù)據(jù)庫(kù)查詢引擎中的后繼算子。

      本發(fā)明是一種面向分布式內(nèi)存數(shù)據(jù)庫(kù)的數(shù)據(jù)分發(fā)方法。切片方式及分發(fā)策略相當(dāng)于mapreduce或者spark任務(wù)中,中間數(shù)據(jù)如何分發(fā)shuffle。

      進(jìn)一步的,前置算子中計(jì)算完成后的數(shù)據(jù)切分后按照一個(gè)前置算子分區(qū)對(duì)應(yīng)一個(gè)后繼算子分區(qū)的方式分發(fā)給后繼算子,或前置算子中計(jì)算完成后的數(shù)據(jù)按照多個(gè)前置算子分區(qū)對(duì)應(yīng)一個(gè)后繼算子分區(qū)的方式分發(fā)給后繼算子。

      進(jìn)一步的,前置算子分區(qū)按照特定的哈希(hash)函數(shù)將切分后的數(shù)據(jù)分發(fā)給后繼算子分區(qū)。

      進(jìn)一步的,前置算子包括:一元算子、二元算子、無(wú)前置算子。

      進(jìn)一步的,當(dāng)前置算子為getcolumn算子時(shí):

      getcolumn算子為物理執(zhí)行計(jì)劃中的第一個(gè)算子,只需要獲取這一列的數(shù)據(jù)。因此我們不需要設(shè)置十分復(fù)雜的數(shù)據(jù)分布方式,只需要指定分片數(shù)(默認(rèn)分片數(shù)等于存儲(chǔ)引擎中該列數(shù)據(jù)的分片數(shù)即slice數(shù)),然后按照輪詢調(diào)度(roundrobin)的方式和存儲(chǔ)引擎中該列數(shù)據(jù)的分片數(shù)slice對(duì)應(yīng)起來(lái)。

      進(jìn)一步的,當(dāng)前置算子為filter算子時(shí):

      filter算子是對(duì)行號(hào)rowid進(jìn)行處理,我們可以指定filter算子按照哈希散列hashdistribution的方式進(jìn)行處理。hash函數(shù)為fhash=rowid%filter_num。這樣就保證了左右算子相同的rowid分布到相同的filter的算子中,而且數(shù)據(jù)不需要重復(fù)傳輸。

      進(jìn)一步的,當(dāng)前置算子為join算子時(shí):

      由于join算子是olap(海量數(shù)據(jù)聯(lián)機(jī)分析處理業(yè)務(wù))中的核心算子,所以我們對(duì)join算子提出了多種優(yōu)化策略。

      分布式內(nèi)存數(shù)據(jù)庫(kù)系統(tǒng)的元數(shù)據(jù)負(fù)責(zé)收集數(shù)據(jù)庫(kù)存儲(chǔ)引擎的數(shù)據(jù)分布信息,為每張表的每個(gè)列生成數(shù)據(jù)直方圖統(tǒng)計(jì)信息。join算子執(zhí)行過(guò)程中需要判斷前置輸入來(lái)源于大表還是小表,大小表根據(jù)數(shù)據(jù)直方圖元數(shù)據(jù)信息界定。

      如果前置算子中某個(gè)表是小表,采用將小表數(shù)據(jù)轉(zhuǎn)發(fā)至存放大表數(shù)據(jù)節(jié)點(diǎn)ordereddistribution的方案,分發(fā)shuffle過(guò)程簡(jiǎn)單,而且增加的數(shù)據(jù)傳輸量也不大,這種方案具有明顯的優(yōu)勢(shì)。然后join算子內(nèi)部采用內(nèi)部采用hashjoin進(jìn)行連接操作join。

      如果前置算子并沒(méi)有明顯的大小表關(guān)系。采用哈希散列hashdistribution的方案,hash函數(shù)為。然后內(nèi)部采用排序合并連接sortmergejoin算法。

      本方案所提出的數(shù)據(jù)分發(fā)策略,指的是前置算子計(jì)算完成后,選取最佳的切分方式對(duì)數(shù)據(jù)進(jìn)行切分,然后將結(jié)果通過(guò)最佳分發(fā)方法發(fā)送給下一個(gè)物理算子。通過(guò)該數(shù)據(jù)分發(fā)策略,可以避免后繼任務(wù)數(shù)目的減少,大大提高了并行度,從而使得數(shù)據(jù)庫(kù)查詢引擎在計(jì)算過(guò)程中始終可以充分利用物理資源。

      本申請(qǐng)?zhí)峁┑囊粋€(gè)或多個(gè)技術(shù)方案,至少具有如下技術(shù)效果或優(yōu)點(diǎn):

      根據(jù)本方案提出的數(shù)據(jù)切片方式,可以自由指定后繼任務(wù)的個(gè)數(shù),從而避免了后繼任務(wù)并行度降低的情況。在對(duì)查詢引擎進(jìn)行性能測(cè)試過(guò)程中發(fā)現(xiàn),相對(duì)于傳統(tǒng)分布式內(nèi)存數(shù)據(jù)庫(kù)的數(shù)據(jù)切分方案,本方案對(duì)每一個(gè)任務(wù)都進(jìn)行了針對(duì)性的數(shù)據(jù)切分方式和分發(fā)方式的選擇。避免了在查詢引擎中由于任務(wù)數(shù)量不斷減少而導(dǎo)致的并行度降低的問(wèn)題,滿足了分布式內(nèi)存數(shù)據(jù)庫(kù)查詢引擎在計(jì)算過(guò)程中始終可以充分利用物理資源的需求。

      附圖說(shuō)明

      此處所說(shuō)明的附圖用來(lái)提供對(duì)本發(fā)明實(shí)施例的進(jìn)一步理解,構(gòu)成本申請(qǐng)的一部分,并不構(gòu)成對(duì)本發(fā)明實(shí)施例的限定;

      圖1是本申請(qǐng)中的一對(duì)一分發(fā)方式示意圖;

      圖2是本申請(qǐng)中的多對(duì)一分發(fā)方式示意圖;

      圖3是本申請(qǐng)中的join算子中對(duì)數(shù)據(jù)的哈希分發(fā)方式示意圖;

      圖4是本申請(qǐng)中的join算子中對(duì)數(shù)據(jù)的范圍分發(fā)方式示意圖;

      圖5是本申請(qǐng)中的getcolumn算子中對(duì)數(shù)據(jù)的輪詢調(diào)度分發(fā)方式示意圖;

      圖6是本申請(qǐng)中的filter算子對(duì)行號(hào)的哈希分發(fā)方式示意圖;

      圖7是本申請(qǐng)中的join算子在前置算子有明顯的大小表關(guān)系時(shí)的分發(fā)策略示意圖;

      圖8是本申請(qǐng)中join算子在前置算子沒(méi)有明顯的大小表關(guān)系時(shí)的分發(fā)策略示意圖。

      具體實(shí)施方式

      本發(fā)明提供了一種面向分布式內(nèi)存數(shù)據(jù)庫(kù)查詢引擎的數(shù)據(jù)分發(fā)方法,解決了現(xiàn)有的分布式內(nèi)存數(shù)據(jù)庫(kù)查詢引擎存在限制了算子的擴(kuò)展方式導(dǎo)致任務(wù)并行度降低的技術(shù)問(wèn)題,提高了任務(wù)并行度的技術(shù)效果。

      為了能夠更清楚地理解本發(fā)明的上述目的、特征和優(yōu)點(diǎn),下面結(jié)合附圖和具體實(shí)施方式對(duì)本發(fā)明進(jìn)行進(jìn)一步的詳細(xì)描述。需要說(shuō)明的是,在相互不沖突的情況下,本申請(qǐng)的實(shí)施例及實(shí)施例中的特征可以相互組合。

      在下面的描述中闡述了很多具體細(xì)節(jié)以便于充分理解本發(fā)明,但是,本發(fā)明還可以采用其他不同于在此描述范圍內(nèi)的其他方式來(lái)實(shí)施,因此,本發(fā)明的保護(hù)范圍并不受下面公開(kāi)的具體實(shí)施例的限制。

      請(qǐng)參考圖1,本申請(qǐng)?zhí)峁┝艘环N面向分布式內(nèi)存數(shù)據(jù)庫(kù)查詢引擎的數(shù)據(jù)分發(fā)方法,所述方法包括:

      數(shù)據(jù)庫(kù)查詢引擎中的前置算子計(jì)算完成后,數(shù)據(jù)庫(kù)查詢引擎對(duì)計(jì)算完成后的數(shù)據(jù)進(jìn)行切分,然后將切分后的數(shù)據(jù)分發(fā)給數(shù)據(jù)庫(kù)查詢引擎中的后繼算子。

      根據(jù)不同算子面臨的不同情況提出了多種數(shù)據(jù)分片方式,主要包含以下三種:

      1.singledistribution:

      前置算子分區(qū)采取一對(duì)一,或者多對(duì)一的方式將數(shù)據(jù)發(fā)送給后繼算子分區(qū),請(qǐng)參考圖1-圖2。

      2.hashdistribution:

      前置算子分區(qū)將數(shù)據(jù)按照特定的hash函數(shù)將數(shù)據(jù)分發(fā)給后繼算子分區(qū)。這種方式的優(yōu)點(diǎn)是靈活,只需要知道后繼算子的分區(qū)數(shù),就能確定某條數(shù)據(jù)需要發(fā)送給哪個(gè)分區(qū),請(qǐng)參考圖3。

      3.ordereddistribution:

      ordereddistribution可以理解成是hashdistribution的一種特例,只是hash函數(shù)為按照值范圍映射,請(qǐng)參考圖4。

      查詢引擎中涉及到的物理算子按照前置算子的個(gè)數(shù)可以分為:一元算子,二元算子,無(wú)前置算子。下面列舉出其中以上各類(lèi)中的主要算子:無(wú)前置算子:getcolumn算子、一元算子:order算子、二元算子:filter算子、join算子。

      因?yàn)橐辉阕硬粫?huì)導(dǎo)致后續(xù)任務(wù)數(shù)量減少,所以下面列舉getcolumn算子、filter算子、join算子利用本數(shù)據(jù)切片策略后的具體執(zhí)行流程。

      getcolumn算子:

      請(qǐng)參考圖5,getcolumn算子為物理執(zhí)行計(jì)劃中的第一個(gè)算子,只需要獲取這一列的數(shù)據(jù)。因此我們不需要設(shè)置十分復(fù)雜的數(shù)據(jù)分布方式,只需要指定分片數(shù)(默認(rèn)分片數(shù)等于slice數(shù)),然后按照roundrobin的方式和slice對(duì)應(yīng)起來(lái)。

      filter算子:

      請(qǐng)參考圖6,filter算子是對(duì)rowid進(jìn)行處理,我們可以指定filter算子按照hashdistribution的方式進(jìn)行處理。hash函數(shù)為fhash=rowed%filter_num。這樣就保證了左右算子相同的rowid分布到相同的filter的算子中,而且數(shù)據(jù)不需要重復(fù)傳輸。

      join算子:

      由于join算子是olap中的核心算子,所以我們對(duì)join算子提出了多種優(yōu)化策略。

      系統(tǒng)的元數(shù)據(jù)負(fù)責(zé)收集數(shù)據(jù)庫(kù)存儲(chǔ)引擎收集數(shù)據(jù)分布情況,為每張表的每個(gè)列生成數(shù)據(jù)直方圖統(tǒng)計(jì)信息。join算子執(zhí)行過(guò)程中需要判斷前置輸入來(lái)源于大表還是小表,大小表根據(jù)數(shù)據(jù)直方圖元數(shù)據(jù)信息界定。

      請(qǐng)參考圖7,如果前置算子中某個(gè)表是小表,采用ordereddistribution的方案,shuffle過(guò)程簡(jiǎn)單,而且增加的數(shù)據(jù)傳輸量也不大,這種方案具有明顯的優(yōu)勢(shì)。然后join算子內(nèi)部采用hashjoin進(jìn)行join。

      請(qǐng)參考圖8,如果前置算子并沒(méi)有明顯的大小表關(guān)系。采用hashdistribution的方案,hash函數(shù)為fhash=value%join_num。然后內(nèi)部采用sortmergejoin算法。

      本發(fā)明是一種面向分布式內(nèi)存數(shù)據(jù)庫(kù)的數(shù)據(jù)分發(fā)方法。切片方式及分發(fā)策略相當(dāng)于mapreduce或者spark任務(wù)中,中間數(shù)據(jù)如何shuffle。

      方案所提出的數(shù)據(jù)切分策略,指的是前置算子計(jì)算完成后,選取最佳的切分方式對(duì)數(shù)據(jù)進(jìn)行切分,然后將結(jié)果發(fā)送給下一個(gè)物理算子。

      方案中對(duì)每一個(gè)任務(wù)都進(jìn)行了針對(duì)性的數(shù)據(jù)切分方式和分發(fā)方式的選擇。避免了在查詢引擎中由于任務(wù)數(shù)量不斷減少而導(dǎo)致的并行度降低的問(wèn)題,滿足了分布式內(nèi)存數(shù)據(jù)庫(kù)查詢引擎在計(jì)算過(guò)程中始終可以充分利用物理資源的需求。

      上述本申請(qǐng)實(shí)施例中的技術(shù)方案,至少具有如下的技術(shù)效果或優(yōu)點(diǎn):

      根據(jù)本方案提出的數(shù)據(jù)切片方式,可以自由指定后繼任務(wù)的個(gè)數(shù),從而避免了后繼任務(wù)并行度降低的情況。在對(duì)查詢引擎進(jìn)行性能測(cè)試過(guò)程中發(fā)現(xiàn),相對(duì)于傳統(tǒng)分布式內(nèi)存數(shù)據(jù)庫(kù)的數(shù)據(jù)切分方案,本方案對(duì)每一個(gè)任務(wù)都進(jìn)行了針對(duì)性的數(shù)據(jù)切分方式和分發(fā)方式的選擇。避免了在查詢引擎中由于任務(wù)數(shù)量不斷減少而導(dǎo)致的并行度降低的問(wèn)題,滿足了分布式內(nèi)存數(shù)據(jù)庫(kù)查詢引擎在計(jì)算過(guò)程中始終可以充分利用物理資源的需求。

      盡管已描述了本發(fā)明的優(yōu)選實(shí)施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對(duì)這些實(shí)施例作出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實(shí)施例以及落入本發(fā)明范圍的所有變更和修改。

      顯然,本領(lǐng)域的技術(shù)人員可以對(duì)本發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。

      當(dāng)前第1頁(yè)1 2 
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1