TW201738781A - 資料表連接方法及裝置 - Google Patents
資料表連接方法及裝置 Download PDFInfo
- Publication number
- TW201738781A TW201738781A TW106104646A TW106104646A TW201738781A TW 201738781 A TW201738781 A TW 201738781A TW 106104646 A TW106104646 A TW 106104646A TW 106104646 A TW106104646 A TW 106104646A TW 201738781 A TW201738781 A TW 201738781A
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- data table
- target
- data record
- connection
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 45
- 230000001960 triggered effect Effects 0.000 claims 2
- 238000013479 data entry Methods 0.000 abstract 8
- 230000008569 process Effects 0.000 description 23
- 238000012545 processing Methods 0.000 description 16
- 230000009286 beneficial effect Effects 0.000 description 7
- 238000004364 calculation method Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 239000003638 chemical reducing agent Substances 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- 230000003750 conditioning effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 239000002360 explosive Substances 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本發明提供一種資料表連接方法及裝置。方法包括:接收資料表連接任務,資料表連接任務指示按照連接條件對第一資料表和第二資料表進行連接操作;根據連接條件,將第二資料表中的資料記錄載入到分散式系統中至少兩個節點上;讀取第一資料表中的資料記錄作為目前資料記錄,根據目前資料記錄對應的連接條件,從至少兩個節點中確定目標節點,並讀取目標節點上儲存的第二資料表中的資料記錄作為目標資料記錄;對目前資料記錄和目標資料記錄進行連接操作。本發明可以降低資料表連接操作消耗的計算資源。
Description
本發明關於資料庫技術領域,尤其關於一種資料表連接方法及裝置。
隨著互聯網的發展,資料呈現爆發式增長,資料結構也開始多元化,資料含有的信息量越來越多,資料倉庫在這樣的背景下發揮著巨大的作用。由於大資料時代的降臨,資料倉庫轉成為分散式架構,以滿足爆發式增長的計算及儲存的需求。分散式資料倉庫一般使用列式儲存,並以檔的形式保存資料,因此,採用分散式資料倉庫可提高大資料的儲存及計算性能。
在分散式資料倉庫的查詢過程中,經常需要進行資料表之間的連接(Join)計算。現有技術在處理資料表之間的Join計算時,一般都是先將所有待Join的資料表透過MapReduce的方式做洗牌(shuffle)排序,然後在Reducer端對已經排過序的資料表進行歸併操作。shuffle排序實際上是指將Map端各個待Join的資料表按照Join條件進行分區並分配到不同Reducer端的過程。
在典型的“星型”Join場景下,假設待Join資料表包括一個主表和n個輔表,主表包含M條資料記錄,那麼在對主表和n個輔表進行Join計算時,shuffle排序需要處理的總數據量包括shuffle主表需要處理的資料量即M*n和shuffle n個輔表需要處理的資料量,這會消耗很多計算資源。
本發明的多個態樣提供一種資料表連接方法及裝置,用以降低資料表連接操作消耗的計算資源。
本發明的一態樣,提供一種資料表連接方法,包括:接收資料表連接任務,所述資料表連接任務指示按照連接條件對第一資料表和第二資料表進行連接操作;根據所述連接條件,將所述第二資料表中的資料記錄載入到分散式系統中至少兩個節點上;讀取所述第一資料表中的資料記錄作為目前資料記錄,根據所述目前資料記錄對應的連接條件,從所述至少兩個節點中確定目標節點,並讀取所述目標節點上儲存的所述第二資料表中的資料記錄作為目標資料記錄;對所述目前資料記錄和所述目標資料記錄進行連接操作。
本發明的另一態樣,提供一種資料表連接裝置,包括:接收模組,用於接收資料表連接任務,所述資料表連
接任務指示按照連接條件對第一資料表和第二資料表進行連接操作;載入模組,用於根據所述連接條件,將所述第二資料表中的資料記錄載入到分散式系統中至少兩個節點上;讀取模組,用於讀取所述第一資料表中的資料記錄作為目前資料記錄,根據所述目前資料記錄對應的連接條件,從所述至少兩個節點中確定目標節點,並讀取所述目標節點上儲存的所述第二資料表中的資料記錄作為目標資料記錄;連接模組,用於對所述目前資料記錄和所述目標資料記錄進行連接操作。
在本發明中,在處理資料表連接任務時,首先根據其中的連接條件,將第二資料表中的資料記錄載入到分散式系統中至少兩個節點上,之後,可以直接讀取第一資料表中的資料記錄,並根據所讀取的第一資料表中的資料記錄對應的連接條件,從相應節點上讀取所需的第二資料表中的資料記錄,之後對讀取到的兩個資料表中的資料記錄進行連接操作。由此可見,本發明只需將第二資料表按照連接條件分佈到不同節點上,不需要將第一資料表分佈到不同節點上,減少了shuffle排序需要處理的資料量,有利於降低連接操作所消耗的計算資源。
S101、S102、S103、S104‧‧‧方法步驟
21‧‧‧控制節點
22‧‧‧調度節點
23‧‧‧計算節點
31‧‧‧接收模組
32‧‧‧載入模組
33‧‧‧讀取模組
34‧‧‧連接模組
為了更清楚地說明本發明實施例中的技術方案,下面
將對實施例或現有技術描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發明的一些實施例,對於本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
圖1為本發明一實施例提供的資料表連接方法的流程示意圖;圖2為本發明另一實施例提供的分散式系統的架構示意圖;圖3為本發明又一實施例提供的資料表連接裝置的結構示意圖;圖4為本發明又一實施例提供的資料表連接裝置的結構示意圖。
為使本發明實施例的目的、技術方案和優點更加清楚,下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例是本發明一部分實施例,而不是全部的實施例。基於本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都屬於本發明保護的範圍。
在分散式資料倉庫的查詢過程中,經常需要進行資料表之間的連接(Join)計算。現有技術在處理資料表之間的Join操作時,由於待Join的資料表比較大,所以一般都
是先將所有待Join的資料表透過MapReduce的方式做shuffle排序,然後在Reducer端對已經排過序的資料表進行歸併操作。shuffle排序實際上是指將Map端各個待Join的資料表按照Join條件進行分區並分配到不同Reducer端的過程。由於需要對所有待Join的資料表進行shuffle排序,消耗的計算資源較多。
針對上述技術問題,本發明提供一種解決方案,即透過將第二資料表分佈儲存到多個節點上,成為一個分散式的快取,對第一資料表處理時,透過網路獲取遠端節點上儲存的第二資料表中的資料記錄,從而進行分散式的雜湊映射連接(Hash map Join),使得無需對主表進行shuffle排序,這樣可以節約對第一資料表進行shuffle排序消耗的計算資源。
圖1為本發明一實施例提供的資料表連接方法的流程示意圖。如圖1所示,該方法包括:
101、接收資料表連接任務,該資料表連接任務指示按照連接條件對第一資料表和第二資料表進行連接操作。
102、根據上述連接條件,將第二資料表中的資料記錄載入到分散式系統中至少兩個節點上。
103、讀取第一資料表中的資料記錄作為目前資料記錄,根據目前資料記錄對應的連接條件,從至少兩個節點中確定目標節點,並讀取目標節點上儲存的第二資料表中的資料記錄作為目標資料記錄。
104、對目前資料記錄和目標資料記錄進行連接操
作。
本實施例提供一種資料表連接方法,可由資料表連接裝置來執行,用以進行資料表之間的Join操作,同時儘量降低所消耗的計算資源。本實施例提供的方法適用於分散式系統,這裡的分散式系統中的不同機器可以分別作為一個節點。本實施例並不限制分散式系統的實現架構,例如可以是但不限於MapReduce架構。
當需要進行資料表之間的Join操作時,可以向資料表連接裝置發送資料表連接任務;資料表連接裝置接收資料表連接任務。該資料表連接任務指示按照連接條件對第一資料表和第二資料表進行Join處理。這裡的第一資料表和第二資料表實際上是待連接的資料表。
在具體實現上,該資料表連接任務攜帶有連接條件、第一資料表的標識、第二資料表的標識、第一資料表的儲存位置、以及第二資料表的儲存位置等資訊。其中,資料表連接裝置可以對資料表連接任務進行解析,獲取連接條件、第一資料表的標識、第二資料表的標識、第一資料表的儲存位置、以及第二資料表的儲存位置等資訊,並根據第一資料表的標識和第二資料表的標識確定需要進行Join操作的資料表,另外,可以根據第一資料表的儲存位置和第二資料表的儲存位置讀取第一資料表和第二資料表。
在一種實際應用中,第一資料表可以作為主表,第二資料表可以作為輔表實現。其中,輔表的數量可以是一個或多個。
資料表連接裝置接收到資料表連接任務之後,可以獲知需要按照連接條件對第一資料表和第二資料表進行Join操作。之後,在執行Join操作之前,首先根據連接條件,將第二資料表中的資料記錄載入到分散式系統中至少兩個節點上,實現分散式儲存。
較佳的,位於至少兩個節點中每個節點上的第二資料表中的資料記錄,其資料量小於單個節點的記憶體限制,也就是說,分佈到至少兩個節點中每個節點上的第二資料表中的資料記錄,均能夠全部放到相應節點的儲存空間(較佳為記憶體)中。
在一可選實施方式中,上述連接條件包括連接所需的至少一個目標鍵,這裡的目標鍵實際上就是鍵值對(key-value)中的鍵(key)。基於此,資料表連接裝置具體可以分別對至少一個目標鍵中的各目標鍵進行雜湊運算,以獲取各目標鍵的雜湊值;根據各目標鍵的雜湊值和上述用於儲存第二資料表中的資料記錄的至少兩個節點的數量,確定各目標鍵對應的節點;將第二資料表中對應於各目標鍵的資料記錄分別載入到各目標鍵對應的節點上。
進一步,資料表連接裝置可以利用各目標鍵的雜湊值對上述用於儲存第二資料表中的資料記錄的至少兩個節點的數量取模,根據取模結果確定各目標鍵對應的節點。具體的,可以將取模結果代表的節點作為目標鍵對應的節點。或者,
資料表連接裝置可以根據上述用於儲存第二資料表中
的資料記錄的至少兩個節點的數量和目標鍵的數量,將各目標鍵均分到各節點上,在均分過程中,可以根據各目標鍵的雜湊值,將雜湊值相近的目標鍵分到相同節點。這裡的雜湊值相近可以是指雜湊值之差小於預設門限,但不限於此。
進一步,在上述載入第二資料表中的資料記錄到至少兩個節點上的過程中,具體可以將第二資料表中的資料記錄載入到至少兩個節點的記憶體中。第二資料表中的資料記錄儲存在節點的記憶體中,可以隨時讀取,讀取速度較快,有利於提高Join操作的效率。
值得說明的是,較佳的,可以將第二資料表中的資料記錄載入到上述至少兩個節點的記憶體中,但並不限於記憶體,還可以是節點的固態硬碟(Solid State Drives,SSD)或者其他儲存媒體中。
在一可選實施方式中,在根據連接條件,將第二資料表中的資料記錄載入到分散式系統中的至少兩個節點上之前,可以判斷第二資料表的資料量是否大於單個節點的記憶體限制;若判斷結果為是,即第二資料表的資料量大於單個節點的記憶體限制,這意味著第二資料表中的資料記錄不能全部放在單個節點的記憶體中,因此可以根據連接條件,將第二資料表中的資料記錄載入到至少兩個節點中,使得分佈到每個節點上的第二資料表中的資料記錄均能全部放到相應節點的記憶體中,實現分散式儲存。簡單的說,分佈到每個節點上的第二資料表中的資料記錄,其
資料量小於單個節點的記憶體限制。
若上述判斷結果為否,即第二資料表的資料量小於或等於單個節點的記憶體限制,這意味著第二資料表中的資料記錄可以全部放在單個節點的記憶體中,較為較佳的,可以將第二資料表的資料記錄全部放到單個節點的記憶體中,從而節省對第二資料表的資料記錄進行shuffle排序,節約計算資源。
上述將第二資料表中的資料記錄載入到分散式系統中至少兩個節點上,這相當於將第二資料表變成了多個小表,每個小表可以全部在相應節點的記憶體中放得下,形成分散式的KV儲存,使得可以做分散式的Hash map Join,而不需要做排序合併連接(Sort Merge Join)。做分散式的Hash map Join,不需要對第一資料中的資料記錄進行排序,可以直接讀取第一資料表中的資料記錄,並根據所讀取的第一資料表中的資料記錄對應的連接條件,從相應節點上讀取所需的第二資料表中的資料記錄,之後對讀取到的兩個資料表中的資料記錄進行Join操作。
其中,本實施例中分散式的Hash map Join與現有Hash map Join的區別在於:在對第一資料表處理時,不是在本地記憶體中查找第二資料表中的資料記錄,而是透過網路獲取遠端節點上儲存的第二資料表中的資料記錄。
具體的,在將第二資料表中的資料記錄載入到分散式系統中至少兩個節點之後,資料表連接裝置可以到第一資料表的儲存位置讀取第一資料表中的資料記錄,將讀取到
的資料記錄作為目前資料記錄,根據目前資料記錄對應的連接條件,從上述至少兩個節點中確定目標節點,這裡的目標節點是指與目前資料記錄進行Join操作所需的第二資料表中的資料記錄所在的節點,然後讀取目標節點上儲存的第二資料表中的資料記錄作為目標資料記錄,這裡的目標資料記錄是指與目前資料記錄進行Join操作所需的第二資料表中的資料記錄。
在讀取到目前資料記錄以及與目前資料記錄進行Join操作所需的目標資料記錄之後,對目前資料記錄與目標資料記錄進行Join操作。由於如何對目前資料記錄與目標資料記錄進行Join操作不是本發明的重點,在此不再詳述,可參考現有技術中有關Join操作的處理流程。
在一可選實施方式中,考慮到資料表連接裝置的本地快取中可能會存在與目前資料記錄進行Join操作所需的目標資料記錄,基於此,在根據目前資料記錄對應的連接條件,從至少兩個節點中確定目標節點,並讀取目標節點上儲存的第二資料表中的資料記錄作為目標資料記錄之前,可以根據目前資料記錄對應的連接條件,判斷本地快取中是否存在目標資料記錄,若判斷結果為否,則執行根據目前資料記錄對應的連接條件,從至少兩個節點中確定目標節點,並讀取目標節點上儲存的第二資料表中的資料記錄作為目標資料記錄的操作;若判斷結果為是,則可以從本地快取中獲取目標資料記錄,這樣可以更加快速的獲取目標資料記錄,節約獲取目標資料記錄所消耗的網路資
源,提高Join操作的效率。
進一步,上述目前資料記錄對應的連接條件可以是目標鍵,則一種根據目前資料記錄對應的連接條件,從至少兩個節點中確定目標節點的實施方式包括:對目前資料記錄對應的目標鍵進行雜湊運算,以獲得目前資料記錄對應的目標鍵的雜湊值;根據目前資料記錄對應的目標鍵的雜湊值和上述至少兩個節點的數量,確定目前資料記錄對應的目標鍵對應的節點作為目標節點。
更進一步,在透過目標鍵確定從某個節點上取目標資料的過程中,若目標鍵有多個,則可以進行批量操作,這樣可以充分發揮分散式系統的優勢,提高處理性能。
由上述分析可見,本實施例在處理資料表連接任務時,首先根據其中的連接條件,將第二資料表中的資料記錄載入到至少兩個節點上,這相當於變成了一個分散式的KV儲存(即會有分散式的雜湊表),這樣不需要做Sort Merge Join,使得可以做分散式的Hash map Join,即不需要對第一資料中的資料記錄進行排序,而是可以直接讀取第一資料表中的資料記錄,並根據所讀取的第一資料表中的資料記錄對應的連接條件,從相應節點上讀取所需的第二資料表中的資料記錄,之後對讀取到的兩個資料表中的資料記錄進行Join操作。由此可見,本實施例只需將第二資料表按照連接條件分佈到不同節點上,不需要將第一資料表分佈到不同節點上,減少了shuffle排序需要處理的資料量,有利於降低連接操作所消耗的計算資源。
下面透過對比Sort Merge Join與分散式的Hash map Join消耗的計算資源,以說明本發明技術方案帶來的優勢。
假設主表是A,其資料大小是100T,假設輔表有2個分別是B和C,輔表B的資料大小為10G,輔表C的數據大小為100G。
若採用現有Sort Merge Join,其shuffle排序階段需要將主表A和輔表B進行一次排序處理,還需要將主表A和輔表C進行一次排序處理,每次排序處理包括透過網路IO讀資料表以及透過CPU進行排序,所以每次排序處理的資源消耗包括:排序所占CPU和讀表所占的網路IO。為便於描述,透過處理的資料量表示資源消耗,在這裡,考慮到CPU排序處理的資料量也就是透過網路IO讀取的資料量,故以一份資料量來表示每次排序處理的資源消耗,則shuffle排序階段需要總資源消耗為:(100T+10G)+(100T+100G)=2 * 100T+10G+100G。
若採用本發明分散式的Hash map Join,其shuffle排序階段需要將輔表B分佈到不同節點上,還需要將輔表C分佈到不同節點上,每次將某個表分佈到不同節點上包括透過網路IO讀資料表以及透過CPU進行排序,所以將某個表分佈到不同節點上的資源消耗同樣包括:排序所占CPU和讀表所占的網路IO。為便於描述,透過處理的資料量表示資源消耗,在這裡,考慮到CPU排序處理的資料量也就是透過網路IO讀取的資料量,故以一份資料量
來表示每次排序處理的資源消耗,則shuffle排序階段需要總資源消耗為:10G+100G。
由上述可見,由於本發明技術方案只需將第二資料表按照連接條件分佈到不同節點上,不需要將第一資料表分佈到不同節點上,減少了shuffle排序需要處理的資料量,有利於降低連接操作所消耗的計算資源。
圖2為本發明另一實施例提供的分散式系統的架構示意圖。如圖2所示,該分散式系統包括:控制節點21、調度節點22、以及至少兩個計算節點23。進一步,如圖2所示,計算節點23至少包括快取模組和處理模組。
值得說明的是,圖2所示分散式系統僅為一種示例,並不限於此,例如可以將圖2中的調度節點22省略從而獲得一種更為簡單的分散式系統。
下面將基於圖2所示分散式系統,對本發明技術方案進行詳細說明。
控制節點21負責接收資料表連接任務,根據資料表連接任務獲知需要按照連接條件對第一資料表和第二資料表進行連接操作。
控制節點21可以根據資料表連接任務向調度節點22發送調度指令,控制調度節點22調度分散式系統中可用的計算節點23。調度節點22具體接收控制節點21的調度指令,根據調度指令調度分散式系統中的計算節點23。
在上述調度分散式系統中的計算節點23的過程中,
控制節點21透過調度節點22向計算節點23提供後續載入第二資料表中的資料記錄所需的設定檔,該設定檔記載有第二資料表的標識、儲存位置、以及需要載入的資料記錄的標識資訊等。
在分散式系統中各計算節點23上部署有載入進程,該載入進程主要根據設定檔,將第二資料表中的資料記錄載入到快取模組中。具體的,調度模組22啟動各計算節點23上的載入進程,載入進程根據設定檔,到相應儲存位置讀取第二資料表中的相應資料記錄,將其所讀取的資料記錄載入到快取模組中。值得說明的是,第二資料表可以儲存在分散式系統之外的空間中,但並不限於此。
當所有計算節點23上的載入進程執行完載入操作,即均進入監聽埠狀態時,透過調度節點22向控制節點21返回一個載入結束指令。控制節點21根據該載入結束指令,可以獲知各計算節點23已經將第二資料表中的資料記錄載入到快取模組中。
控制節點21向調度節點22發送啟動指令,使得調度節點22啟動各計算節點23上的處理進程。在各計算節點23上部署有處理進程,處理進程主要用於讀取第一資料表中的資料記錄作為目前資料記錄,根據所讀取的目前資料記錄對應的key,確定該key對應的第二資料表中的資料記錄所在的計算節點23,讀取所確定的計算節點23上儲存的第二資料表中的資料記錄作為目標資料記錄,對所讀取的目前資料記錄和目標資料記錄進行Join操作。值
得說明的是,第一資料表可以儲存在分散式系統之外的空間中,但並不限於此。
可選的,在一種具體實現方式中,上述各計算節點23可以採用服務端/用戶端的方式實現。例如,各計算節點23的快取模組可以作為快取服務端(CacheService)實現,該快取服務端還包括一個快取管理者(CacheManager),各快取模組對應一個快取節點(CacheNode);相應的,各計算節點23的處理模組作為快取用戶端(CacheClient)實現。
具體的,CacheManager協調管理所有CacheNode。CacheNode負責載入資料到記憶體,並提供服務。可選的,第二資料表可以用shard檔的形式進行儲存管理,採用shard檔的目的是因為在故障(failover)時,一但CacheNode重啟,只需再次讀入shard文件,使得處理相對簡單。
CacheClient訪問CacheService,透過對key進行hash計算,並根據計算結果從其中某個CacheNode讀取資料。此外,CacheClient中應該有一部分本地快取,通常會使用近期最少使用演算法(Least Recently Used,LRU)等快取演算法將部分已經讀取的資料保存在本地快取中,這樣CacheClient可以優先從本地快取中讀取所需的資料,如果在本地快取中讀取到所需的資料,可以節約透過網路從CacheNode讀取資料的操作,有利於提高效率、節約資源。
由上述分析可見,本實施例在處理資料表連接任務時,首先根據其中的連接條件,將第二資料表中的資料記錄載入到至少兩個節點上,實現分散式儲存,使得可以直接讀取第一資料表中的資料記錄,並根據所讀取的第一資料表中的資料記錄對應的連接條件,從相應節點上讀取所需的第二資料表中的資料記錄,之後對讀取到的兩個資料表中的資料記錄進行Join操作,實現分散式的Hash map Join。由此可見,本實施例只需將第二資料表按照連接條件分佈到不同節點上,不需要將第一資料表分佈到不同節點上,減少了shuffle排序需要處理的資料量,有利於降低連接操作所消耗的計算資源。
需要說明的是,對於前述的各方法實施例,為了簡單描述,故將其都表述為一系列的動作組合,但是本領域技術人員應該知悉,本發明並不受所描述的動作順序的限制,因為依據本發明,某些步驟可以採用其他順序或者同時進行。其次,本領域技術人員也應該知悉,說明書中所描述的實施例均屬於較佳實施例,所關於的動作和模組並不一定是本發明所必須的。
在上述實施例中,對各個實施例的描述都各有側重,某個實施例中沒有詳述的部分,可以參見其他實施例的相關描述。
圖3為本發明又一實施例提供的資料表連接裝置的結構示意圖。如圖3所示,該裝置包括:接收模組31、載入模組32、讀取模組33和連接模組34。
接收模組31,用於接收資料表連接任務,該資料表連接任務指示按照連接條件對第一資料表和第二資料表進行連接操作。
載入模組32,用於根據連接條件,將第二資料表中的資料記錄載入到分散式系統中至少兩個節點上。
讀取模組33,用於讀取第一資料表中的資料記錄作為目前資料記錄,根據目前資料記錄對應的連接條件,從至少兩個節點中確定目標節點,並讀取目標節點上儲存的第二資料表中的資料記錄作為目標資料記錄。
連接模組34,用於對目前資料記錄和目標資料記錄進行連接操作。
較佳的,位於至少兩個節點中每個節點上的第二資料表中的資料記錄,其資料量小於單個節點的記憶體限制,也就是說,分佈到至少兩個節點中每個節點上的第二資料表中的資料記錄,均能夠全部放到相應節點的儲存空間(較佳為記憶體)中。
進一步,如圖4所示,該裝置還包括:第一判斷模組35。
第一判斷模組35,用於判斷第二資料表的資料量是否大於單個節點的記憶體限制,以及在判斷結果為是時觸發載入模組32執行根據連接條件,將第二資料表中的資料記錄載入到分散式系統中至少兩個節點上的操作。
更進一步,如圖4所示,該裝置還包括:第二判斷模組36。
第二判斷模組36,用於根據目前資料記錄對應的連接條件,判斷本地快取中是否存在所述目標資料記錄,以及在判斷結果為否時觸發讀取模組33執行根據目前資料記錄對應的連接條件,從至少兩個節點中確定目標節點,並讀取目標節點上儲存的第二資料表中的資料記錄作為目標資料記錄的操作。
在一可選實施方式中,上述連接條件包括連接所需的至少一個目標鍵。這裡的目標鍵實際上是鍵值對中的鍵。
基於上述,載入模組32具體用於:分別對所述至少一個目標鍵中的各目標鍵進行雜湊運算,以獲取各目標鍵的雜湊值;根據各目標鍵的雜湊值和所述至少兩個節點的數量,確定各目標鍵對應的節點;將所述第二資料表中對應於各目標鍵的資料記錄分別載入到各目標鍵對應的節點上。
在一可選實施方式中,載入模組32具體用於:根據所述連接條件,將所述第二資料表中的資料記錄載入到所述至少兩個節點的記憶體中。第二資料表中的資料記錄儲存在節點的記憶體中,可以隨時讀取,讀取速度較快,有利於提高Join操作的效率。
值得說明的是,較佳的,可以將第二資料表中的資料記錄載入到上述至少兩個節點的記憶體中,但並不限於記憶體,還可以是節點的SSD或者其他儲存媒體中。
本實施例提供的資料表連接裝置,在處理資料表連接
任務時,首先根據其中的連接條件,將第二資料表中的資料記錄載入到分散式系統中至少兩個節點上,這相當於變成了一個分散式的KV儲存,這樣不需要做Sort Merge Join,使得可以做分散式的Hash map Join,即不需要對第一資料中的資料記錄進行排序,而是可以直接讀取第一資料表中的資料記錄,並根據所讀取的第一資料表中的資料記錄對應的連接條件,從相應節點上讀取所需的第二資料表中的資料記錄,之後對讀取到的兩個資料表中的資料記錄進行連接操作。由此可見,採用本實施例提供的資料表連接裝置,只需將第二資料表按照連接條件分佈到不同節點上,不需要將第一資料表分佈到不同節點上,減少了shuffle排序需要處理的資料量,有利於降低連接操作所消耗的計算資源。
所屬領域的技術人員可以清楚地瞭解到,為描述的方便和簡潔,上述描述的系統,裝置和單元的具體工作過程,可以參考前述方法實施例中的對應過程,在此不再贅述。
在本發明所提供的幾個實施例中,應該理解到,所揭露的系統,裝置和方法,可以透過其它的方式實現。例如,以上所描述的裝置實施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實際實現時可以有另外的劃分方式,例如多個單元或元件可以結合或者可以整合到另一個系統,或一些特徵可以忽略,或不執行。另一點,所顯示或討論的相互之間的耦合或直接耦合
或通信連接可以是透過一些介面,裝置或單元的間接耦合或通信連接,可以是電性,機械或其它的形式。
所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位於一個地方,或者也可以分佈到多個網路單元上。可以根據實際的需要選擇其中的部分或者全部單元來實現本實施例方案的目的。
另外,在本發明各個實施例中的各功能單元可以整合在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元整合在一個單元中。上述整合的單元既可以採用硬體的形式實現,也可以採用硬體加軟體功能單元的形式實現。
上述以軟體功能單元的形式實現的整合的單元,可以儲存在一個電腦可讀取儲存媒體中。上述軟體功能單元儲存在一個儲存媒體中,包括若干指令用以使得一台電腦設備(可以是個人電腦,伺服器,或者網路設備等)或處理器(processor)執行本發明各個實施例所述方法的部分步驟。而前述的儲存媒體包括:U碟、行動硬碟、唯讀記憶體(Read-Only Memory,ROM)、隨機存取記憶體(Random Access Memory,RAM)、磁碟或者光碟等各種可以儲存程式碼的媒體。
最後應說明的是:以上實施例僅用以說明本發明的技術方案,而非對其限制;儘管參照前述實施例對本發明進行了詳細的說明,本領域的普通技術人員應當理解:其依
然可以對前述各實施例所記載的技術方案進行修改,或者對其中部分技術特徵進行等同替換;而這些修改或者替換,並不使相應技術方案的本質脫離本發明各實施例技術方案的精神和範圍。
Claims (10)
- 一種資料表連接方法,其特徵在於,該方法包括:接收資料表連接任務,該資料表連接任務指示按照連接條件對第一資料表和第二資料表進行連接操作;根據該連接條件,將該第二資料表中的資料記錄載入到分散式系統中至少兩個節點上;讀取該第一資料表中的資料記錄作為目前資料記錄,根據該目前資料記錄對應的連接條件,從該至少兩個節點中確定目標節點,並讀取該目標節點上儲存的該第二資料表中的資料記錄作為目標資料記錄;以及對該目前資料記錄和該目標資料記錄進行連接操作。
- 根據申請專利範圍第1項所述的方法,其中,該根據該連接條件,將該第二資料表中的資料記錄載入到分散式系統中至少兩個節點上之前,包括:判斷該第二資料表的資料量是否大於單個節點的記憶體限制;以及若判斷結果為是,則執行根據該連接條件,將該第二資料表中的資料記錄載入到分散式系統中至少兩個節點上的操作。
- 根據申請專利範圍第1項所述的方法,其中,該根據該目前資料記錄對應的連接條件,從該至少兩個節點中確定目標節點,並讀取該目標節點上儲存的該第二資料表中的資料記錄作為目標資料記錄之前,包括: 根據該目前資料記錄對應的連接條件,判斷本地快取中是否存在該目標資料記錄;以及若判斷結果為否,則執行根據該目前資料記錄對應的連接條件,從該至少兩個節點中確定目標節點,並讀取該目標節點上儲存的該第二資料表中的資料記錄作為目標資料記錄的操作。
- 根據申請專利範圍第1項所述的方法,其中,該連接條件包括連接所需的至少一個目標鍵;該根據該連接條件,將該第二資料表中的資料記錄載入到分散式系統中至少兩個節點上,包括:分別對該至少一個目標鍵中的各目標鍵進行雜湊運算,以獲取各目標鍵的雜湊值;根據各目標鍵的雜湊值和該至少兩個節點的數量,確定各目標鍵對應的節點;以及將該第二資料表中對應於各目標鍵的資料記錄分別載入到各目標鍵對應的節點上。
- 根據申請專利範圍第1至4項中任一項所述的方法,其中,該根據該連接條件,將該第二資料表中的資料記錄載入到分散式系統中至少兩個節點上,包括:根據該連接條件,將該第二資料表中的資料記錄載入到該至少兩個節點的記憶體中。
- 一種資料表連接裝置,其特徵在於,該裝置包括:接收模組,用於接收資料表連接任務,該資料表連接 任務指示按照連接條件對第一資料表和第二資料表進行連接操作;載入模組,用於根據該連接條件,將該第二資料表中的資料記錄載入到分散式系統中至少兩個節點上;讀取模組,用於讀取該第一資料表中的資料記錄作為目前資料記錄,根據該目前資料記錄對應的連接條件,從該至少兩個節點中確定目標節點,並讀取該目標節點上儲存的該第二資料表中的資料記錄作為目標資料記錄;以及連接模組,用於對該目前資料記錄和該目標資料記錄進行連接操作。
- 根據申請專利範圍第6項所述的裝置,其中,還包括:第一判斷模組,用於判斷該第二資料表的資料量是否大於單個節點的記憶體限制,以及在判斷結果為是時觸發該載入模組執行根據該連接條件,將該第二資料表中的資料記錄載入到分散式系統中至少兩個節點上的操作。
- 根據申請專利範圍第6項所述的裝置,其中,還包括:第二判斷模組,用於根據該目前資料記錄對應的連接條件,判斷本地快取中是否存在該目標資料記錄,以及在判斷結果為否時觸發該讀取模組執行根據該目前資料記錄對應的連接條件,從該至少兩個節點中確定目標節點,並讀取該目標節點上儲存的該第二資料表中的資料記錄作為目標資料記錄的操作。
- 根據申請專利範圍第6項所述的裝置,其中,該連接條件包括連接所需的至少一個目標鍵;該載入模組具體用於:分別對該至少一個目標鍵中的各目標鍵進行雜湊運算,以獲取各目標鍵的雜湊值;根據各目標鍵的雜湊值和該至少兩個節點的數量,確定各目標鍵對應的節點;以及將該第二資料表中對應於各目標鍵的資料記錄分別載入到各目標鍵對應的節點上。
- 根據申請專利範圍第6至9項中任一項所述的裝置,其中,該載入模組具體用於:根據該連接條件,將該第二資料表中的資料記錄載入到該至少兩個節點的記憶體中。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610118167.7 | 2016-03-02 | ||
CN201610118167.7A CN107153643B (zh) | 2016-03-02 | 2016-03-02 | 数据表连接方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201738781A true TW201738781A (zh) | 2017-11-01 |
TWI746511B TWI746511B (zh) | 2021-11-21 |
Family
ID=59742547
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW106104646A TWI746511B (zh) | 2016-03-02 | 2017-02-13 | 資料表連接方法及裝置 |
Country Status (3)
Country | Link |
---|---|
CN (1) | CN107153643B (zh) |
TW (1) | TWI746511B (zh) |
WO (1) | WO2017148297A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI819230B (zh) * | 2019-09-20 | 2023-10-21 | 南韓商三星電子股份有限公司 | 搜尋目標鍵的方法及系統以及非暫時性電腦可讀取媒體 |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109710643B (zh) * | 2018-12-20 | 2020-11-13 | 上海达梦数据库有限公司 | 外连接管理方法、装置、服务器及存储介质 |
CN111506670B (zh) * | 2019-01-31 | 2023-07-18 | 阿里巴巴集团控股有限公司 | 一种数据处理方法、装置及设备 |
CN110413670B (zh) * | 2019-06-28 | 2023-07-14 | 创新先进技术有限公司 | 基于MapReduce的数据导出方法、装置及设备 |
CN111752972B (zh) * | 2020-07-01 | 2024-06-25 | 浪潮云信息技术股份公司 | 基于RocksDB的key-value存储模式下的数据关联查询方法及系统 |
CN112597148A (zh) * | 2020-11-25 | 2021-04-02 | 联想(北京)有限公司 | 一种数据表的连接方法和装置 |
CN112732715B (zh) * | 2020-12-31 | 2023-08-25 | 星环信息科技(上海)股份有限公司 | 一种数据表关联方法、设备以及存储介质 |
CN113672641A (zh) * | 2021-08-18 | 2021-11-19 | 北京金山云网络技术有限公司 | 数据库集群数据处理方法、装置、系统、介质和电子设备 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7085769B1 (en) * | 2001-04-26 | 2006-08-01 | Ncr Corporation | Method and apparatus for performing hash join |
US7177874B2 (en) * | 2003-01-16 | 2007-02-13 | Jardin Cary A | System and method for generating and processing results data in a distributed system |
CN102214176B (zh) * | 2010-04-02 | 2014-02-05 | 中国人民解放军国防科学技术大学 | 超大维表的切分与表连接方法 |
CN102467570B (zh) * | 2010-11-17 | 2014-03-12 | 日电(中国)有限公司 | 用于分布式数据仓库的连接查询系统和方法 |
CN102323947B (zh) * | 2011-09-05 | 2013-07-10 | 东北大学 | 环形架构数据库上预连接表的生成方法 |
CN104424240B (zh) * | 2013-08-27 | 2019-06-14 | 腾讯科技(深圳)有限公司 | 多表关联方法、主服务节点、计算节点及系统 |
US20160055212A1 (en) * | 2014-08-22 | 2016-02-25 | Attivio, Inc. | Automatic joining of data sets based on statistics of field values in the data sets |
CN104391957A (zh) * | 2014-12-01 | 2015-03-04 | 浪潮电子信息产业股份有限公司 | 一种针对混合型大数据处理系统的数据交互分析方法 |
CN104504114B (zh) * | 2014-12-30 | 2018-05-04 | 杭州华为数字技术有限公司 | 基于多哈希表的关系操作优化方法、装置和系统 |
TWI522827B (zh) * | 2015-01-09 | 2016-02-21 | Chunghwa Telecom Co Ltd | Real-time storage and real-time reading of huge amounts of data for non-related databases |
CN105045871B (zh) * | 2015-07-15 | 2018-09-28 | 国家超级计算深圳中心(深圳云计算中心) | 数据聚合查询方法及装置 |
CN105183880A (zh) * | 2015-09-22 | 2015-12-23 | 浪潮集团有限公司 | 一种哈希连接的方法及装置 |
-
2016
- 2016-03-02 CN CN201610118167.7A patent/CN107153643B/zh active Active
-
2017
- 2017-02-13 TW TW106104646A patent/TWI746511B/zh not_active IP Right Cessation
- 2017-02-20 WO PCT/CN2017/074177 patent/WO2017148297A1/zh active Application Filing
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI819230B (zh) * | 2019-09-20 | 2023-10-21 | 南韓商三星電子股份有限公司 | 搜尋目標鍵的方法及系統以及非暫時性電腦可讀取媒體 |
Also Published As
Publication number | Publication date |
---|---|
CN107153643B (zh) | 2021-02-19 |
CN107153643A (zh) | 2017-09-12 |
TWI746511B (zh) | 2021-11-21 |
WO2017148297A1 (zh) | 2017-09-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TW201738781A (zh) | 資料表連接方法及裝置 | |
US11620313B2 (en) | Multi-cluster warehouse | |
US11327799B2 (en) | Dynamic allocation of worker nodes for distributed replication | |
US11010240B2 (en) | Tracking status and restarting distributed replication | |
US20200348852A1 (en) | Distributed object replication architecture | |
US11349915B2 (en) | Distributed replication and deduplication of an object from a source site to a destination site | |
US10853242B2 (en) | Deduplication and garbage collection across logical databases | |
US20200310859A1 (en) | System and method for an object layer | |
WO2019152122A1 (en) | Systems and methods for performing computing cluster node switchover | |
CN113010496B (zh) | 一种数据迁移方法、装置、设备和存储介质 | |
WO2019001017A1 (zh) | 集群间数据迁移方法、系统、服务器及计算机存储介质 | |
US10996993B2 (en) | Adaptive work distribution in distributed systems | |
EP3186760B1 (en) | Dynamic load-based merging | |
CN104504147B (zh) | 一种数据库集群的资源协调方法、装置及系统 | |
US9984139B1 (en) | Publish session framework for datastore operation records | |
WO2022174735A1 (zh) | 基于分布式存储的数据处理方法、装置、设备以及介质 | |
US20220091940A1 (en) | Backup task processing in a data storage system | |
US11625503B2 (en) | Data integrity procedure | |
US20240338366A1 (en) | Dynamic database pipeline scheduler | |
US20140089260A1 (en) | Workload transitioning in an in-memory data grid | |
CN107943615B (zh) | 基于分布式集群的数据处理方法与系统 | |
CN115757421A (zh) | 数据处理系统和方法 | |
US20210227018A1 (en) | Lazy lock queue reduction for cluster group changes | |
CN114647501A (zh) | Mycat系统部署运维方法、装置、设备和存储介质 | |
US11960510B2 (en) | Data movement from data storage clusters |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |