基於多哈希表的關係操作優化方法、裝置和系統的製作方法
2023-06-07 04:52:11 1
基於多哈希表的關係操作優化方法、裝置和系統的製作方法
【專利摘要】本發明實施例提供一種基於多哈希表的關係操作優化方法、裝置和系統,該方法包括:接收客戶端發送的查詢語句,解析查詢語句以判斷查詢語句中是否存在連接條件;若存在,則根據連接條件,在關係表中選擇N個表作為構造表,並分別為N個構造表中的每一個構造表選擇至少一個哈希函數;對於每個哈希函數,對相應的構造表進行掃描,以獲取與哈希表對應的多哈希節點;對於每個哈希函數,根據哈希函數,在與哈希函數對應的多哈希節點中,查詢是否存在與探測表匹配的連接條件的記錄,若存在,則將記錄發送到述客戶端。本發明實施例提供的基於多哈希表的關係操作優化方法、裝置和系統提高了查詢性能。
【專利說明】基於多哈希表的關係操作優化方法、裝置和系統
【技術領域】
[0001]本發明實施例涉及數據查詢技術,尤其涉及一種基於多哈希表的關係操作優化方 法、裝置和系統。
【背景技術】
[000引在關係型資料庫中,OR與UNION是兩個比較重要的關係操作算子,其中,OR常用於 在多重條件查詢中連接涉及多個關係表時的查詢條件,UNION是對涉及多個表的查詢結果 集進行併集操作。
[0003] 現有技術中,在多個表進行連接時,如果連接條件之間是OR的關係,通常採用嵌 套循環的方式進行連接,或者在包含多個子查詢的複合查詢中,如果該些子查詢涉及的關 系表相同,但過濾條件不同時,在對子查詢進行OR操作運算時,通常採用將子查詢中涉及 的關係表進行多次掃描過濾,或者採用對查詢語句進行優化及合併的方式進行運算。另外, 一個表與其他多個表連接後,如果進行UNION操作,通常對每個連接都採用哈希連接Olash 化in),然後將各結果集進行順序追加合併,最後進行去重操作來完成。
[0004] 然而,在現有技術中,針對OR與UNION算子的相關運算,當對多表進行連接時,需 要對涉及的關係表進行多次掃描,W及採用嵌套循環的方式進行連接操作,使得查詢性能 較差。
【發明內容】
[0005] 本發明實施例提供一種基於多哈希表的關係操作優化方法、裝置和系統,提高了 查詢性能。
[0006] 第一方面,本發明提供一種基於多哈希表的關係操作優化方法,包括:
[0007] 接收客戶端發送的查詢語句,解析所述查詢語句W判斷所述查詢語句中是否存在 連接條件;其中,所述連接條件包括OR或UNION ;
[0008] 若存在所述連接條件,則根據所述連接條件,在關係表中選擇N個表作為構造表, 並分別為所述N個構造表中的每一個構造表選擇至少一個哈希函數;其中,N為整數,且大 於0 ;
[0009] 對於每個哈希函數,對相應的構造表進行掃描,W獲取與所述哈希表對應的多哈 希節點;
[0010] 對於每個哈希函數,根據所述哈希函數,在與所述哈希函數對應的所述多哈希節 點中,查詢是否存在與探測表匹配的連接條件的記錄,若存在,則將所述記錄發送到所述客 戶端;其中,所述探測表為除構造表之外的其它關係表。
[0011] 結合第一方面,在第一方面的第一種可能的實現方式中,在所述對於每個哈希函 數,對相應的構造表進行掃描,W獲取與所述哈希表對應的多哈希節點之後,所述方法還包 括:
[0012] 對所述探測表進行掃描,獲得與所述探測表對應的掃描節點;
[0013] 對於每個哈希函數,將所述掃描節點與所述哈希函數對應的多哈希節點進行多哈 希連接,生成對應的多哈希連接節點;
[0014] 對於每個哈希函數,判斷所述哈希函數對應的多哈希連接節點對應的執行路徑是 否滿足查詢條件;
[0015] 則所述根據所述哈希函數,在與所述哈希函數對應的所述多哈希節點中,查詢是 否存在與探測表匹配的連接條件的記錄,具體包括:
[0016] 若判斷所述哈希函數對應的多哈希連接節點對應的執行路徑滿足所述查詢條件, 則根據所述哈希函數,在與所述哈希函數對應的所述多哈希節點中,查詢是否存在與探測 表匹配的連接條件的記錄。
[0017] 結合第一方面的第一種可能的實現方式,在第一方面的第二種可能的實現方式 中,所述對於每個哈希函數,判斷所述哈希函數對應的多哈希連接節點對應的執行路徑是 否滿足查詢條件,具體包括:
[0018] 對於每個哈希函數,確定所述哈希函數對應的多哈希連接節點對應的執行路徑;
[0019] 獲取所述執行路徑上的各多哈希連接節點的權值,並將各所述權值相加,獲得所 述執行路徑的執行代價;其中,所述權值用於表示對應的多哈希連接節點與其相鄰的多哈 希連接節點之間的執行代價;
[0020] 判斷所述哈希函數對應的執行路徑的所述執行代價,是否為所有的執行路徑的執 行代價中的最小值;若是,則所述哈希函數對應的多哈希連接節點對應的執行路徑滿足查 詢條件。
[0021] 第二方面,本發明提供一種基於多哈希表的關係操作優化裝置,包括:
[0022] 收發模塊,用於接收客戶端發送的查詢語句;
[0023] 判斷模塊,用於解析所述查詢語句W判斷所述查詢語句中是否存在連接條件;其 中,所述連接條件包括OR或UNION ;
[0024] 處理模塊,用於在所述判斷模塊判斷出存在所述連接條件時,根據所述連接條件, 在關係表中選擇N個表作為構造表,並分別為所述N個構造表中的每一個構造表選擇至少 一個哈希函數;其中,N為整數,且大於0 ;
[00巧]掃描模塊,用於對於每個哈希函數,對相應的構造表進行掃描,W獲取與所述哈希 表對應的多哈希節點;
[0026] 所述判斷模塊還用於對於每個哈希函數,根據所述哈希函數,在與所述哈希函數 對應的所述多哈希節點中,查詢是否存在與探測表匹配的連接條件的記錄;所述收發模塊 還用於在所述判斷模塊判斷出存在與探測表匹配的連接條件的記錄時,將所述記錄發送到 所述客戶端;其中,所述探測表為除構造表之外的其它關係表。
[0027] 結合第二方面,在第二方面的第一種可能的實現方式中,所述掃描模塊,還用於對 所述探測表進行掃描,獲得與所述探測表對應的掃描節點;
[0028] 所述處理模塊還用於對於每個哈希函數,將所述掃描節點與所述哈希函數對應的 多哈希節點進行多哈希連接,生成對應的多哈希連接節點;
[0029] 所述判斷模塊還用於對於每個哈希函數,判斷所述哈希函數對應的多哈希連接節 點對應的執行路徑是否滿足查詢條件;
[0030] 則所述判斷模塊具體用於若所述哈希函數對應的多哈希連接節點對應的執行路 徑滿足所述查詢條件,則根據所述哈希函數,在與所述哈希函數對應的所述多哈希節點中, 查詢是否存在與探測表匹配的連接條件的記錄。
[0031] 結合第二方面的第一種可能的實現方式,在第二方面的第二種可能的實現方式 中,所述判斷模塊還包括:確定單元、獲取單元和判斷單元;
[0032] 其中,所述確定單元用於對於每個哈希函數,確定所述哈希函數對應的多哈希連 接節點對應的執行路徑;
[0033] 所述獲取單元,用於獲取所述執行路徑上的各多哈希連接節點的權值,並將各所 述權值相加,獲得所述執行路徑的執行代價;其中,所述權值用於表示對應的多哈希連接節 點與其相鄰的多哈希連接節點之間的執行代價;
[0034] 所述判斷單元,用於判斷所述哈希函數對應的執行路徑的所述執行代價,是否為 所有的執行路徑的執行代價中的最小值;若是,則所述哈希函數對應的多哈希連接節點對 應的執行路徑滿足查詢條件。
[00巧]第H方面,本發明提供一種基於多哈希表的關係操作優化系統,包括:客戶端和 第二方面、第二方面的第一種至第二方面的第二種任一種基於多哈希表的關係操作優化裝 置。
[0036] 本發明實施例提供的基於多哈希表的關係操作優化方法、裝置和系統,通過接收 客戶端發送的查詢語句,解析查詢語句W判斷該查詢語句中是否存在連接條件;其中,連接 條件包括OR或UNION ;若存在連接條件,則根據連接條件,在關係表中選擇N個表作為構造 表,並分別為N個構造表中的每一個構造表選擇至少一個哈希函數,對於每個哈希函數,對 相應的構造表進行掃描,W獲取與哈希表對應的多哈希節點;對於每個哈希函數,根據哈希 函數,在與哈希函數對應的多哈希節點中,查詢是否存在與探測表匹配的連接條件的記錄, 若存在,則將記錄發送到客戶端;其中,探測表為除構造表之外的其它關係表。由於在OR或 UNION的連接條件中,根據連接條件對構造表選擇至少一個哈希函數,W生成與哈希函數對 應的多哈希節點,並根據哈希函數,在與哈希函數對應的多哈希節點中,查詢是否存在與探 測表匹配的連接條件的記錄,避免了現有技術中對涉及的關係表進行多次掃描,W及採用 嵌套循環的方式進行連接操作的方式,提高了查詢的性能。
【專利附圖】
【附圖說明】
[0037] 為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現 有技術描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發 明的一些實施例,對於本領域普通技術人員來講,在不付出創造性勞動性的前提下,還可W 根據該些附圖獲得其他的附圖。
[0038] 圖1為本發明基於多哈希表的關係操作優化方法實施例一的流程示意圖;
[0039] 圖2為本發明基於多哈希表的關係操作優化方法實施例二的流程示意圖;
[0040] 圖3為本發明基於多哈希表的關係操作優化裝置實施例一的結構示意圖;
[0041] 圖4為本發明基於多哈希表的關係操作優化裝置實施例二的結構示意圖;
[0042] 圖5為本發明提供的伺服器實施例一的結構示意圖。
【具體實施方式】
[0043] 為使本發明實施例的目的、技術方案和優點更加清楚,下面將結合本發明實施例 中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例是 本發明一部分實施例,而不是全部的實施例。基於本發明中的實施例,本領域普通技術人員 在沒有作出創造性勞動前提下所獲得的所有其他實施例,都屬於本發明保護的範圍。
[0044] 圖1為本發明基於多哈希表的關係操作優化方法實施例一的流程示意圖。本發明 實施例提供了一種基於多哈希表的關係操作優化方法,該方法可W由任意執行基於多哈希 表的關係操作優化方法的裝置來執行,該裝置可W通過軟體和/或硬體實現。本實施例中, 該裝置可W集成在資料庫伺服器中。如圖1所示,本實施例的方法可W包括:
[0045] 步驟101、接收客戶端發送的查詢語句,解析查詢語句W判斷查詢語句中是否存在 連接條件;其中,連接條件包括OR或UNION。
[0046] 在本實施例中,用戶可W通過客戶端向資料庫伺服器發送查詢語句,W請求對數 據庫進行相應的查詢操作。可選地,當資料庫伺服器接收到客戶端發送的查詢語句後,首先 檢查查詢語句的語法是否正確,若語法正確,再對該查詢語句進行解析,根據解析結果判斷 查詢語句中是否包含有OR或UNION算子,若查詢語句語法不正確,則進行語法錯誤的提示。 當然,也可W默認查詢語句的語法正確而不進行語法檢查。
[0047] 步驟102、若存在連接條件,則根據連接條件,在關係表中選擇N個表作為構造表, 並分別為N個構造表中的每一個構造表選擇至少一個哈希函數;其中,N為整數,且大於0。
[0048] 在本實施例中,若查詢語句中包含有連接條件,資料庫伺服器會根據連接條件的 不同,在連接條件中涉及到的關係表中選擇至少一個表作為構造表。在具體的實現過程中, 由於將構造表進行掃描,生成對應的哈希表後,是將哈希表存儲在內存中,因此,為了節省 內存空間,一般選擇關係表中的較小表作為構造表。另外,資料庫伺服器分別為該些構造 表中的每一個構造表選擇至少一個哈希函數,W對構造表進行掃描。例如;當查詢條件為: tl. cl = t2. clor tl. c2 = t2. c2,即查詢表tl的第一行cl與表t2的第一行cl相等或表 tl的第二行c2與表t2的第二行c2相等的數據項時,假設表t2中的數據項較小,也就是 說,表t2為較小表,則將表t2作為構造表,並為表t2選擇兩個哈希函數,W對表t2進行掃 描。
[0049] 步驟103、對於每個哈希函數,對相應的構造表進行掃描,W獲取與哈希表對應的 多哈希節點。
[0050] 在本實施例中,利用關係表之間做連接的列上的哈希函數,生成多哈希節點。具體 地,根據連接條件的不同,對於每一個構造表,有可能只有一個哈希函數,也有可能有多個 哈希函數,針對每個哈希函數來說,均根據哈希函數對響應的構造表進行掃描,從而獲得對 應的多哈希節點。例如:為表t2選擇兩個哈希函數之後,對於每一個哈希函數,均對表t2 進行掃描,W獲取與哈希表對應的多哈希節點,因此,對表t2進行掃描之後,會獲得兩個不 同的哈希表,W及兩個不同的哈希表對應的多個多哈希節點。
[0051] 步驟104、對於每個哈希函數,根據哈希函數,在與哈希函數對應的多哈希節點中, 查詢是否存在與探測表匹配的連接條件的記錄,若存在,則將記錄發送到客戶端;其中,探 測表為除構造表之外的其它關係表。
[0052] 在本實施例中,根據哈希函數對相應的構造表進行掃描,生成哈希表對應的多哈 希節點之後,資料庫伺服器開始讀取探測表,針對探測表中每一條數據,都在做連接的列上 使用哈希函數,w定位對應的哈希節點,找到相應的哈希節點之後,便進行查詢是否存在與 探測表匹配的連接條件的記錄。若查詢到符合連接條件的相關記錄,則將該記錄發送到客 戶端,W供用戶進行查看。
[0053] 舉例來說,當連接條件包含有OR算子時的查詢語句為:
[0054] "selec巧from tl, t2where tl. cl 二 t2. clor tl. c2 二 t2. c2"
[00巧]具體的,在現有技術中,對該查詢語句通常採用嵌套查詢連接的方式進行的一種 具體實現方式為:
[0056]
【權利要求】
1. 一種基於多哈希表的關係操作優化方法,其特徵在於,包括: 接收客戶端發送的查詢語句,解析所述查詢語句以判斷所述查詢語句中是否存在連接 條件;其中,所述連接條件包括OR或UNION ; 若存在所述連接條件,則根據所述連接條件,在關係表中選擇N個表作為構造表,並分 別為所述N個構造表中的每一個構造表選擇至少一個哈希函數;其中,N為整數,且大於0 ; 對於每個哈希函數,對相應的構造表進行掃描,以獲取與所述哈希表對應的多哈希節 佔. 對於每個哈希函數,根據所述哈希函數,在與所述哈希函數對應的所述多哈希節點中, 查詢是否存在與探測表匹配的連接條件的記錄,若存在,則將所述記錄發送到所述客戶端; 其中,所述探測表為除構造表之外的其它關係表。
2. 根據權利要求1所述的方法,其特徵在於,在所述對於每個哈希函數,對相應的構造 表進行掃描,以獲取與所述哈希表對應的多哈希節點之後,所述方法還包括: 對所述探測表進行掃描,獲得與所述探測表對應的掃描節點; 對於每個哈希函數,將所述掃描節點與所述哈希函數對應的多哈希節點進行多哈希連 接,生成對應的多哈希連接節點; 對於每個哈希函數,判斷所述哈希函數對應的多哈希連接節點對應的執行路徑是否滿 足查詢條件; 則所述根據所述哈希函數,在與所述哈希函數對應的所述多哈希節點中,查詢是否存 在與探測表匹配的連接條件的記錄,具體包括: 若判斷所述哈希函數對應的多哈希連接節點對應的執行路徑滿足所述查詢條件,則根 據所述哈希函數,在與所述哈希函數對應的所述多哈希節點中,查詢是否存在與探測表匹 配的連接條件的記錄。
3. 根據權利要求2所述的方法,其特徵在於,所述對於每個哈希函數,判斷所述哈希函 數對應的多哈希連接節點對應的執行路徑是否滿足查詢條件,具體包括: 對於每個哈希函數,確定所述哈希函數對應的多哈希連接節點對應的執行路徑; 獲取所述執行路徑上的各多哈希連接節點的權值,並將各所述權值相加,獲得所述執 行路徑的執行代價;其中,所述權值用於表示對應的多哈希連接節點與其相鄰的多哈希連 接節點之間的執行代價; 判斷所述哈希函數對應的執行路徑的所述執行代價,是否為所有的執行路徑的執行代 價中的最小值;若是,則所述哈希函數對應的多哈希連接節點對應的執行路徑滿足查詢條 件。
4. 一種基於多哈希表的關係操作優化裝置,其特徵在於,包括: 收發模塊,用於接收客戶端發送的查詢語句; 判斷模塊,用於解析所述查詢語句以判斷所述查詢語句中是否存在連接條件;其中,所 述連接條件包括OR或UNION ; 處理模塊,用於在所述判斷模塊判斷出存在所述連接條件時,根據所述連接條件,在關 系表中選擇N個表作為構造表,並分別為所述N個構造表中的每一個構造表選擇至少一個 哈希函數;其中,N為整數,且大於0 ; 掃描模塊,用於對於每個哈希函數,對相應的構造表進行掃描,以獲取與所述哈希表對 應的多哈希節點; 所述判斷模塊還用於對於每個哈希函數,根據所述哈希函數,在與所述哈希函數對應 的所述多哈希節點中,查詢是否存在與探測表匹配的連接條件的記錄; 所述收發模塊還用於在所述判斷模塊判斷出存在與探測表匹配的連接條件的記錄時, 將所述記錄發送到所述客戶端;其中,所述探測表為除構造表之外的其它關係表。
5. 根據權利要求4所述的裝置,其特徵在於, 所述掃描模塊,還用於對所述探測表進行掃描,獲得與所述探測表對應的掃描節點; 所述處理模塊還用於對於每個哈希函數,將所述掃描節點與所述哈希函數對應的多哈 希節點進行多哈希連接,生成對應的多哈希連接節點; 所述判斷模塊還用於對於每個哈希函數,判斷所述哈希函數對應的多哈希連接節點對 應的執行路徑是否滿足查詢條件; 則所述判斷模塊具體用於若所述哈希函數對應的多哈希連接節點對應的執行路徑滿 足所述查詢條件,則根據所述哈希函數,在與所述哈希函數對應的所述多哈希節點中,查詢 是否存在與探測表匹配的連接條件的記錄。
6. 根據權利要求5所述的裝置,其特徵在於,所述判斷模塊還包括:確定單元、獲取單 元和判斷單元; 其中,所述確定單元用於對於每個哈希函數,確定所述哈希函數對應的多哈希連接節 點對應的執行路徑; 所述獲取單元,用於獲取所述執行路徑上的各多哈希連接節點的權值,並將各所述權 值相加,獲得所述執行路徑的執行代價;其中,所述權值用於表示對應的多哈希連接節點與 其相鄰的多哈希連接節點之間的執行代價; 所述判斷單元,用於判斷所述哈希函數對應的執行路徑的所述執行代價,是否為所有 的執行路徑的執行代價中的最小值;若是,則所述哈希函數對應的多哈希連接節點對應的 執行路徑滿足查詢條件。
7. -種基於多哈希表的關係操作優化系統,其特徵在於,包括:客戶端和如權利要求 4-6任一項所述的基於多哈希表的關係操作優化裝置。
【文檔編號】G06F17/30GK104504114SQ201410844188
【公開日】2015年4月8日 申請日期:2014年12月30日 優先權日:2014年12月30日
【發明者】董亞輝, 嚴龍, 黃海燕 申請人:杭州華為數位技術有限公司