本公開(kāi)涉及數(shù)據(jù)庫(kù),尤其涉及一種分布式數(shù)據(jù)庫(kù)關(guān)聯(lián)表處理方法、裝置、設(shè)備及存儲(chǔ)介質(zhì)。
背景技術(shù):
1、分布式數(shù)據(jù)庫(kù)是用計(jì)算機(jī)網(wǎng)絡(luò)將物理上分散的多個(gè)數(shù)據(jù)庫(kù)單元連接起來(lái)組成的一個(gè)邏輯上統(tǒng)一的數(shù)據(jù)庫(kù)。每個(gè)被連接起來(lái)的數(shù)據(jù)庫(kù)單元稱為站點(diǎn)或節(jié)點(diǎn)。事務(wù)是一個(gè)獨(dú)立的操作單元,是一種要么全部是,要么全部不是的原子單位性的操作。
2、在應(yīng)用程序的業(yè)務(wù)邏輯中,兩個(gè)或多個(gè)表/分區(qū)之間存在某些相同的字段,這些字段的類(lèi)型和字段的長(zhǎng)度完全一致,字段的命名可能相同也可能不相同。而且在業(yè)務(wù)處理過(guò)程中,這些表總是出現(xiàn)在同一個(gè)sql語(yǔ)句或者業(yè)務(wù)邏輯單元中。在應(yīng)用軟件的物理設(shè)計(jì)階段,將數(shù)據(jù)庫(kù)中具有關(guān)聯(lián)關(guān)系的表/分區(qū)盡可能放置在分布式數(shù)據(jù)庫(kù)的同一個(gè)節(jié)點(diǎn)上,以減少數(shù)據(jù)的跨節(jié)點(diǎn)訪問(wèn),提高數(shù)據(jù)的存取效率,降低數(shù)據(jù)庫(kù)系統(tǒng)開(kāi)銷(xiāo)。
3、目前,在應(yīng)用程序設(shè)計(jì)過(guò)程中,需要人為將數(shù)據(jù)庫(kù)中存在關(guān)聯(lián)關(guān)系的表或者分區(qū)調(diào)整到同一節(jié)點(diǎn),數(shù)據(jù)庫(kù)中關(guān)聯(lián)關(guān)系的表或者分區(qū)的查找覆蓋度較低、查找效率較低,準(zhǔn)確度較低,且人力成本高,進(jìn)而影響數(shù)據(jù)庫(kù)結(jié)構(gòu)更新效率。
技術(shù)實(shí)現(xiàn)思路
1、本公開(kāi)提供一種分布式數(shù)據(jù)庫(kù)關(guān)聯(lián)表處理方法、裝置、設(shè)備及存儲(chǔ)介質(zhì),以至少解決現(xiàn)有數(shù)據(jù)庫(kù)中關(guān)聯(lián)關(guān)系的表或者分區(qū)查找覆蓋度較低、查找效率較低,準(zhǔn)確度較低,且人力成本高,進(jìn)而影響數(shù)據(jù)庫(kù)結(jié)構(gòu)更新效率的問(wèn)題。
2、本公開(kāi)的技術(shù)方案如下:
3、本公開(kāi)實(shí)施例提供一種分布式數(shù)據(jù)庫(kù)關(guān)聯(lián)表處理方法,包括:
4、獲取數(shù)據(jù)庫(kù)的查詢?nèi)罩荆?/p>
5、根據(jù)所述查詢?nèi)罩?,提取每次查詢?duì)應(yīng)的表或者分區(qū)中使用的字段和字段信息,以及提取每次查詢中作為查詢條件的字段和字段信息;
6、遍歷所述查詢?nèi)罩荆鶕?jù)所述每次查詢對(duì)應(yīng)的表或者分區(qū)中使用的字段和字段信息、所述每次查詢中作為查詢條件的字段和字段信息和哈希樹(shù),識(shí)別候選頻繁項(xiàng)集;
7、從所述候選頻繁項(xiàng)集中選擇出字段信息相同且字段信息作為查詢條件出現(xiàn)的目標(biāo)頻繁項(xiàng)集;
8、將所述目標(biāo)頻繁項(xiàng)集對(duì)應(yīng)的表或者分區(qū)調(diào)整到分布式數(shù)據(jù)庫(kù)的同一個(gè)節(jié)點(diǎn)。
9、可選地,所述根據(jù)所述查詢?nèi)罩?,提取每次查詢?duì)應(yīng)的表或者分區(qū)中使用的字段和字段信息,以及提取每次查詢中作為查詢條件的字段和字段信息,包括:
10、從所述查詢?nèi)罩局凶x取每個(gè)sql語(yǔ)句;
11、使用正則表達(dá)式或sql解析庫(kù)解析每個(gè)所述sql語(yǔ)句,得到每次查詢對(duì)應(yīng)的表或者分區(qū);
12、針對(duì)每次查詢對(duì)應(yīng)的表或者分區(qū),查詢數(shù)據(jù)庫(kù)元數(shù)據(jù),得到每次查詢對(duì)應(yīng)的表或者分區(qū)中使用的字段和字段信息;
13、從每個(gè)所述sql語(yǔ)句中提取where子句,以及解析where子句,得到每次查詢中作為查詢條件的字段和字段信息。
14、可選地,所述遍歷所述查詢?nèi)罩荆鶕?jù)所述每次查詢對(duì)應(yīng)的表或者分區(qū)中使用的字段和字段信息、所述每次查詢中作為查詢條件的字段和字段信息和哈希樹(shù),識(shí)別候選頻繁項(xiàng)集,包括:
15、創(chuàng)建空的哈希樹(shù);
16、遍歷查詢?nèi)罩?,?duì)所述查詢?nèi)罩緦?duì)應(yīng)的每次查詢,生成兩表組合;
17、將滿足字段匹配條件的目標(biāo)兩表組合插入所述哈希樹(shù);
18、根據(jù)所述目標(biāo)兩表組合,生成第一多項(xiàng)集;
19、從所述第一多項(xiàng)集中選擇出滿足所述字段匹配條件、且確認(rèn)字段作為查詢條件的第二多項(xiàng)集,以及更新所述第二多項(xiàng)集的出現(xiàn)頻率;
20、從所述第二多項(xiàng)集中選擇出所述出現(xiàn)頻率大于或者等于支持度閾值的候選頻繁項(xiàng)集。
21、可選地,所述將滿足字段匹配條件的目標(biāo)兩表組合插入所述哈希樹(shù),包括:
22、獲取第一個(gè)表的字段信息和第二個(gè)表的字段信息;
23、對(duì)比所述第一個(gè)表的字段信息和所述第一個(gè)表的字段信息;
24、在所述第一個(gè)表的字段信息和所述第二個(gè)表的字段信息相同的情況下,將所述第一個(gè)表和所述第二個(gè)表插入所述哈希樹(shù)。
25、可選地,所述從所述候選頻繁項(xiàng)集中選擇出字段信息相同且字段信息作為查詢條件出現(xiàn)的目標(biāo)頻繁項(xiàng)集,包括:
26、定義一個(gè)新函數(shù),該函數(shù)包括以下參數(shù):已知的頻繁項(xiàng)集列表、查詢記錄列表和表字段信息字典;其中,已知的頻繁項(xiàng)集列表存儲(chǔ)有所述候選頻繁項(xiàng)集;
27、初始化一個(gè)空列表,用于存儲(chǔ)篩選后的頻繁項(xiàng)集;
28、逐一遍歷已知的頻繁項(xiàng)集列表中的每個(gè)頻繁項(xiàng)集;
29、使用列表推導(dǎo)式檢查當(dāng)前頻繁項(xiàng)集中的每?jī)蓚€(gè)表是否都具有相同的字段;
30、在所述當(dāng)前頻繁項(xiàng)集中的所有表具有相同的字段的情況下,遍歷查詢記錄列表,檢查每一條查詢;
31、提取當(dāng)前查詢中的條件字段;
32、檢查所述當(dāng)前查詢的條件字段中是否存在與所述當(dāng)前頻繁項(xiàng)集中的表相同的字段;
33、在所述當(dāng)前查詢的條件字段中存在與所述當(dāng)前頻繁項(xiàng)集相同的字段,將當(dāng)前頻繁項(xiàng)集添加到新的列表中,直至篩選出所述目標(biāo)頻繁項(xiàng)集。
34、可選地,在所述從所述候選頻繁項(xiàng)集中選擇出字段信息相同且字段信息作為查詢條件出現(xiàn)的目標(biāo)頻繁項(xiàng)集之后,所述方法還包括:
35、將所述目標(biāo)頻繁項(xiàng)集以結(jié)構(gòu)化的方式輸出。
36、本公開(kāi)實(shí)施例還提供一種分布式數(shù)據(jù)庫(kù)關(guān)聯(lián)表處理裝置,包括:
37、獲取模塊,用于獲取數(shù)據(jù)庫(kù)的查詢?nèi)罩荆?/p>
38、提取模塊,用于根據(jù)所述查詢?nèi)罩荆崛∶看尾樵儗?duì)應(yīng)的表或者分區(qū)中使用的字段和字段信息,以及提取每次查詢中作為查詢條件的字段和字段信息;
39、識(shí)別模塊,用于遍歷所述查詢?nèi)罩?,根?jù)所述每次查詢對(duì)應(yīng)的表或者分區(qū)中使用的字段和字段信息、所述每次查詢中作為查詢條件的字段和字段信息和哈希樹(shù),識(shí)別候選頻繁項(xiàng)集;
40、選擇模塊,用于從所述候選頻繁項(xiàng)集中選擇出字段信息相同且字段信息作為查詢條件出現(xiàn)的目標(biāo)頻繁項(xiàng)集;
41、調(diào)整模塊,用于將所述目標(biāo)頻繁項(xiàng)集對(duì)應(yīng)的表或者分區(qū)調(diào)整到分布式數(shù)據(jù)庫(kù)的同一個(gè)節(jié)點(diǎn)。
42、本公開(kāi)實(shí)施例還提供一種電子設(shè)備,包括:
43、處理器;
44、用于存儲(chǔ)所述處理器可執(zhí)行指令的存儲(chǔ)器;
45、其中,所述處理器被配置為執(zhí)行所述指令,以實(shí)現(xiàn)上述的方法中的各步驟。
46、本公開(kāi)實(shí)施例還提供一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其上存儲(chǔ)有計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)上述的方法中的各步驟。
47、本公開(kāi)實(shí)施例還提供一種計(jì)算機(jī)程序產(chǎn)品,包括計(jì)算機(jī)程序/指令,所述計(jì)算機(jī)程序/指令被處理器執(zhí)行時(shí)實(shí)現(xiàn)上述的方法中的各步驟。
48、本公開(kāi)的實(shí)施例提供的技術(shù)方案至少帶來(lái)以下有益效果:
49、在本公開(kāi)的一些實(shí)施例中,獲取數(shù)據(jù)庫(kù)的查詢?nèi)罩荆桓鶕?jù)查詢?nèi)罩?,提取每次查詢?duì)應(yīng)的表或者分區(qū)中使用的字段和字段信息,以及提取每次查詢中作為查詢條件的字段和字段信息;遍歷查詢?nèi)罩?,根?jù)每次查詢對(duì)應(yīng)的表或者分區(qū)中使用的字段和字段信息、每次查詢中作為查詢條件的字段和字段信息和哈希樹(shù),識(shí)別候選頻繁項(xiàng)集;本公開(kāi)通過(guò)識(shí)別頻繁項(xiàng)集,從候選頻繁項(xiàng)集中選擇出字段信息相同且字段信息作為查詢條件出現(xiàn)的目標(biāo)頻繁項(xiàng)集;將目標(biāo)頻繁項(xiàng)集對(duì)應(yīng)的表或者分區(qū)調(diào)整到分布式數(shù)據(jù)庫(kù)的同一個(gè)節(jié)點(diǎn);自動(dòng)查找數(shù)據(jù)庫(kù)中存在關(guān)聯(lián)關(guān)系的表或者分區(qū),提高查找覆蓋度,提高查找效率,提升準(zhǔn)確度,降低人力成本,提高數(shù)據(jù)庫(kù)結(jié)構(gòu)更新效率。
50、應(yīng)當(dāng)理解的是,以上的一般描述和后文的細(xì)節(jié)描述僅是示例性和解釋性的,并不能限制本公開(kāi)。