本發(fā)明涉及數(shù)據(jù)處理,尤其涉及一種基于關(guān)系型數(shù)據(jù)庫的關(guān)聯(lián)查詢方法及系統(tǒng)。
背景技術(shù):
1、隨著信息技術(shù)的發(fā)展,數(shù)據(jù)種類不斷豐富,數(shù)據(jù)量呈現(xiàn)爆炸式增長,基于關(guān)系型數(shù)據(jù)庫的信息關(guān)聯(lián)查詢已成為數(shù)據(jù)檢索的基本需求。然而,利用多表關(guān)聯(lián)和聯(lián)合查詢等方式實(shí)現(xiàn)關(guān)聯(lián)查詢對計(jì)算機(jī)性能的消耗較大,查詢效率較慢,必須不斷擴(kuò)展硬件資源才能提升查詢效率。此外,通過sql優(yōu)化、分區(qū)表技術(shù)、索引技術(shù)等方法進(jìn)行的優(yōu)化,雖然能在一定程度上提高效率,但改善幅度有限,并且受到數(shù)據(jù)庫設(shè)備資源性能瓶頸的制約,難以徹底解決這一問題。
2、現(xiàn)有技術(shù)中,主要有以下幾種方式來應(yīng)對數(shù)據(jù)庫關(guān)聯(lián)查詢的挑戰(zhàn):
3、(1)分布式搜索引擎技術(shù):該方案將數(shù)據(jù)加工處理并存儲(chǔ)在多個(gè)數(shù)據(jù)節(jié)點(diǎn)上,利用分詞技術(shù)、分布式計(jì)算等大數(shù)據(jù)技術(shù)來提高查詢效率。這種方案需要多臺(tái)服務(wù)器,且分布式數(shù)據(jù)庫無法應(yīng)用于傳統(tǒng)關(guān)系型數(shù)據(jù)庫場景中。例如,相關(guān)專利有cn117743506a
4、一種基于自然語言的數(shù)據(jù)關(guān)聯(lián)查詢方法及系統(tǒng)、cn117762920a一種基于bitmap的多表關(guān)聯(lián)查詢方法與裝置和cn115344612a一種多源數(shù)據(jù)關(guān)聯(lián)查詢方法、裝置及電子設(shè)備。
5、(2)多個(gè)數(shù)據(jù)節(jié)點(diǎn)存儲(chǔ)計(jì)算:該方法通過分布式地存儲(chǔ)第一數(shù)據(jù)表和第二數(shù)據(jù)表的多個(gè)計(jì)算節(jié)點(diǎn),適用于多個(gè)計(jì)算節(jié)點(diǎn)的關(guān)聯(lián)查詢應(yīng)用場景。例如,cn117076465a一種數(shù)據(jù)關(guān)聯(lián)查詢方法及相關(guān)設(shè)備提出了此類方案。
6、(3)事實(shí)表與維表的關(guān)聯(lián)字段:該方案基于基礎(chǔ)字段選擇維表上的字段作為與事實(shí)表關(guān)聯(lián)的字段,并通過緩存取數(shù)公式獲取關(guān)聯(lián)字段的取值,最終將這些取值與結(jié)果集進(jìn)行組合,以獲得最終查詢結(jié)果。此專利主要用于報(bào)表分析領(lǐng)域的數(shù)據(jù)鉆取,例如cn102521416a數(shù)據(jù)關(guān)聯(lián)查詢方法和數(shù)據(jù)關(guān)聯(lián)查詢裝置。
7、但前兩種方式需借助多臺(tái)設(shè)備進(jìn)行分布式計(jì)算,而第三種方式僅適用于報(bào)表分析的詳細(xì)數(shù)據(jù)鉆取??梢?,這些方式的關(guān)聯(lián)查詢效率均不高。
技術(shù)實(shí)現(xiàn)思路
1、本發(fā)明所要解決的技術(shù)問題是針對現(xiàn)有技術(shù)的上述不足,提出一種基于關(guān)系型數(shù)據(jù)庫的關(guān)聯(lián)查詢方法及系統(tǒng)。該方法能夠高效地實(shí)現(xiàn)關(guān)系型數(shù)據(jù)庫中的數(shù)據(jù)關(guān)聯(lián)查詢。
2、第一方面,本發(fā)明提供一種基于關(guān)系型數(shù)據(jù)庫的關(guān)聯(lián)查詢方法,所述方法包括如下步驟:
3、步驟s1:獲取請求方的查詢請求;
4、其中,所述查詢請求為基本信息查詢請求或業(yè)務(wù)信息查詢請求;
5、步驟s2:確定查詢請求中的基點(diǎn);
6、步驟s3:根據(jù)查詢請求中的基點(diǎn),執(zhí)行根表或業(yè)務(wù)表的初始查詢,得到初始的當(dāng)前查詢結(jié)果;
7、步驟s4:根據(jù)當(dāng)前查詢結(jié)果,確定關(guān)聯(lián)查詢基點(diǎn);
8、步驟s5:根據(jù)關(guān)聯(lián)查詢基點(diǎn),執(zhí)行關(guān)聯(lián)查詢;
9、步驟s6:判斷關(guān)聯(lián)查詢的查詢結(jié)果是否滿足請求方的查詢要求:
10、若關(guān)聯(lián)查詢的查詢結(jié)果能滿足請求方的查詢要求,則從所述根表中提取請求方所需的根表目標(biāo)信息,或從所述業(yè)務(wù)表中提取請求方所需的業(yè)務(wù)目標(biāo)信息;若關(guān)聯(lián)查詢的查詢結(jié)果不能滿足請求方的查詢要求,則重復(fù)步驟s4至步驟s6,直至關(guān)聯(lián)查詢的查詢結(jié)果能滿足請求方的查詢要求;
11、步驟s7:將請求方所需的根表目標(biāo)信息或業(yè)務(wù)目標(biāo)信息返回給請求方,以完成基于關(guān)系型數(shù)據(jù)庫的關(guān)聯(lián)查詢;
12、其中,其中,所述初始查詢和所述關(guān)聯(lián)查詢均包括一種或多種查詢方式,所述查詢方式為精準(zhǔn)查詢、和/或,同音查詢、和/或,拼音查詢、和/或,模糊查詢。
13、進(jìn)一步地,所述步驟s3之前,所述方法還包括步驟s0;
14、步驟s0:構(gòu)建根表和構(gòu)建業(yè)務(wù)表;以及,維護(hù)所述根表和所述業(yè)務(wù)表的關(guān)聯(lián)關(guān)系。
15、進(jìn)一步地,構(gòu)建根表,具體包括如下步驟:
16、步驟a1:根據(jù)人、地、事、物、組織的分類,確定根表類型;
17、其中,所述根表類型劃分為人員要素根表、地址要素根表、事件要素根表、物品要素根表、及組織要素根表;
18、步驟a2:根據(jù)確定的根表類型,確定根表需要的根字段及根表數(shù)據(jù)類型;
19、步驟a3:根據(jù)根表需要的根字段及根表數(shù)據(jù)類型,設(shè)定基礎(chǔ)要素?cái)?shù)據(jù)內(nèi)容;
20、其中,所述基礎(chǔ)要素?cái)?shù)據(jù)內(nèi)容包括根數(shù)據(jù)項(xiàng)信息、根關(guān)聯(lián)字段、根要素?cái)?shù)據(jù)id字段;所述根要素?cái)?shù)據(jù)id字段為唯一性字段約束;
21、步驟a4:根據(jù)所述根表類型、所述根字段、所述根表數(shù)據(jù)類型、及所述根要素?cái)?shù)據(jù)內(nèi)容,編寫相應(yīng)的數(shù)據(jù)庫查詢語句,得到所述根表。
22、進(jìn)一步地,構(gòu)建業(yè)務(wù)表,具體包括如下步驟:
23、步驟b1:根據(jù)人、地、事、物、組織的分類,確定業(yè)務(wù)表類型;
24、其中,所述業(yè)務(wù)表類型劃分為人員要素業(yè)務(wù)表、地址要素業(yè)務(wù)表、事件要素業(yè)務(wù)表、物品要素業(yè)務(wù)表、及組織要素業(yè)務(wù)表;
25、步驟b2:根據(jù)確定的業(yè)務(wù)表類型,確定業(yè)務(wù)表需要的業(yè)務(wù)字段及業(yè)務(wù)數(shù)據(jù)類型;
26、步驟b3:根據(jù)業(yè)務(wù)表需要的字段及業(yè)務(wù)數(shù)據(jù)類型,設(shè)定業(yè)務(wù)要素?cái)?shù)據(jù)內(nèi)容;
27、其中,所述業(yè)務(wù)要素?cái)?shù)據(jù)內(nèi)容包括業(yè)務(wù)數(shù)據(jù)項(xiàng)信息、業(yè)務(wù)關(guān)聯(lián)字段、業(yè)務(wù)要素?cái)?shù)據(jù)id字段;
28、步驟b4:根據(jù)所述業(yè)務(wù)表類型、所述業(yè)務(wù)字段、所述業(yè)務(wù)數(shù)據(jù)類型、及所述業(yè)務(wù)要素?cái)?shù)據(jù)內(nèi)容,編寫相應(yīng)的數(shù)據(jù)庫查詢語句,得到所述業(yè)務(wù)表。
29、進(jìn)一步地,維護(hù)所述根表和所述業(yè)務(wù)表的關(guān)聯(lián)關(guān)系,具體包括:
30、維護(hù)根表;以及,維護(hù)根表和業(yè)務(wù)表之間的關(guān)聯(lián)關(guān)系;
31、所述維護(hù)根表,具體包括:
32、步驟c1:設(shè)置根表數(shù)據(jù)id且為唯一性約束、設(shè)置根表根關(guān)聯(lián)字段,設(shè)置業(yè)務(wù)表數(shù)據(jù)id;
33、步驟c2:利用etl工具或sql語句從所述業(yè)務(wù)表提取信息、并將提取到的信息插入到所述根表中;
34、步驟c3:根據(jù)所述業(yè)務(wù)表中是否存在與所述根表相同的記錄,對所述根表進(jìn)行維護(hù):
35、若根表中存在與業(yè)務(wù)表相同的內(nèi)容記錄且未建立關(guān)聯(lián)關(guān)系,則根據(jù)所述業(yè)務(wù)表對所述根表進(jìn)行更新,否則不對根表進(jìn)行更新。
36、進(jìn)一步地,所述維護(hù)根表和業(yè)務(wù)表之間的關(guān)聯(lián)關(guān)系,具體包括如下步驟:
37、步驟k1:從業(yè)務(wù)關(guān)系對照表中提取動(dòng)態(tài)參數(shù);
38、其中,所述動(dòng)態(tài)參數(shù)包括表序號、表英文名、或表中文名;所述業(yè)務(wù)關(guān)系對照表是預(yù)先根據(jù)業(yè)務(wù)內(nèi)容構(gòu)建的;
39、步驟k2:根據(jù)所述動(dòng)態(tài)參數(shù),找到關(guān)聯(lián)的目標(biāo)業(yè)務(wù)表;
40、其中,所述目標(biāo)業(yè)務(wù)表包括未關(guān)聯(lián)數(shù)據(jù)和關(guān)聯(lián)數(shù)據(jù);
41、步驟k3:通過標(biāo)注,判斷目標(biāo)業(yè)務(wù)表中是否存在未關(guān)聯(lián)數(shù)據(jù):
42、若目標(biāo)業(yè)務(wù)表中存在未關(guān)聯(lián)數(shù)據(jù),則根據(jù)所述動(dòng)態(tài)參數(shù)從根表中提取對應(yīng)目標(biāo)數(shù)據(jù),對所述未關(guān)聯(lián)數(shù)據(jù)進(jìn)行更新得到關(guān)聯(lián)數(shù)據(jù),直至目標(biāo)業(yè)務(wù)表中不存在未關(guān)聯(lián)數(shù)據(jù);
43、其中,所述未關(guān)聯(lián)數(shù)據(jù)包括dataid為"000000000000000000"的記錄,未關(guān)聯(lián)數(shù)據(jù)的標(biāo)注為0,關(guān)聯(lián)數(shù)據(jù)的標(biāo)注為1。
44、進(jìn)一步地,所述步驟s7之后,所述方法還包括步驟s8;
45、步驟s8:將查詢請求、查詢過程及請求方所需的根表目標(biāo)信息或業(yè)務(wù)目標(biāo)信息進(jìn)行可視化展示。
46、第二方面,本發(fā)明提供一種關(guān)聯(lián)查詢系統(tǒng),該系統(tǒng)包括:
47、獲取模塊,用于獲取請求方的查詢請求;
48、其中,所述查詢請求為基本信息查詢請求或業(yè)務(wù)信息查詢請求;
49、第一確定模塊,與獲取模塊相連,用于確定查詢請求中的基點(diǎn);
50、第一執(zhí)行模塊,與確定模塊相連,用于根據(jù)查詢請求中的基點(diǎn),執(zhí)行根表或業(yè)務(wù)表的初始查詢,得到初始的當(dāng)前查詢結(jié)果;
51、第二確定模塊,與所述初始執(zhí)行模塊相連,用于根據(jù)當(dāng)前查詢結(jié)果,確定關(guān)聯(lián)查詢基點(diǎn);
52、第二執(zhí)行模塊,與第二確定模塊和第一執(zhí)行模塊分別相連,用于根據(jù)關(guān)聯(lián)查詢基點(diǎn),執(zhí)行關(guān)聯(lián)查詢;并判斷關(guān)聯(lián)查詢的查詢結(jié)果是否滿足請求方的查詢要求:
53、若關(guān)聯(lián)查詢的查詢結(jié)果能滿足請求方的查詢要求,則從所述根表中提取請求方所需的根表目標(biāo)信息,或從所述業(yè)務(wù)表中提取請求方所需的業(yè)務(wù)目標(biāo)信息;若關(guān)聯(lián)查詢的查詢結(jié)果不能滿足請求方的查詢要求,則觸發(fā)第一執(zhí)行模塊動(dòng)作,直至關(guān)聯(lián)查詢的查詢結(jié)果能滿足請求方的查詢要求;
54、返回模塊,與第二執(zhí)行模塊相連,用于將請求方所需的根表目標(biāo)信息或業(yè)務(wù)目標(biāo)信息返回給請求方,以完成基于關(guān)系型數(shù)據(jù)庫的關(guān)聯(lián)查詢;
55、其中,所述初始查詢和所述關(guān)聯(lián)查詢均包括一種或多種查詢方式,所述查詢方式為精準(zhǔn)查詢、和/或,同音查詢、和/或,拼音查詢、和/或,模糊查詢。
56、進(jìn)一步地,所述系統(tǒng)還包括:處理模塊;
57、所述處理模塊用于構(gòu)建根表和構(gòu)建業(yè)務(wù)表,以及用于維護(hù)所述根表和所述業(yè)務(wù)表的關(guān)聯(lián)關(guān)系。
58、進(jìn)一步地,所述系統(tǒng)還包括:
59、關(guān)聯(lián)信息展示模塊,與所述獲取模塊、所述第一執(zhí)行模塊、所述第二執(zhí)行模塊、所述返回模塊分別連接,用于將查詢請求、查詢過程及請求方所需的根表目標(biāo)信息或業(yè)務(wù)目標(biāo)信息進(jìn)行可視化展示。
60、本發(fā)明的有益效果:
61、1.本發(fā)明通過分步驟的查詢流程,從初始查詢到關(guān)聯(lián)查詢逐步逼近最終結(jié)果,避免了一次性查詢所需的復(fù)雜計(jì)算,從而提高了查詢效率。
62、2.本發(fā)明能夠根據(jù)不同類型的查詢請求靈活調(diào)整查詢方式(采用精準(zhǔn)查詢、同音查詢、拼音查詢、及模糊查詢中的一種或多種),適應(yīng)多種業(yè)務(wù)場景的需求。
63、3.本發(fā)明能夠?qū)崟r(shí)優(yōu)化查詢策略,確保最終結(jié)果滿足請求方的要求。這種迭代的查詢方式提高了查詢的準(zhǔn)確度。
64、4.本發(fā)明清晰區(qū)分根表和業(yè)務(wù)表,將基本信息與業(yè)務(wù)信息分開存儲(chǔ),有助于維護(hù)數(shù)據(jù)的整潔性和可管理性,提升了數(shù)據(jù)查詢的合理性。
65、5.本發(fā)明在查詢結(jié)果不滿足請求方要求的情況下,能夠迭代關(guān)聯(lián)查詢步驟,直到獲得滿足條件的結(jié)果,這種自適應(yīng)機(jī)制有效保證了查詢的完整性。
66、6.本發(fā)明通過將查詢流程分解為多個(gè)可管理的步驟,降低了查詢的復(fù)雜性,使得系統(tǒng)更易于維護(hù)和擴(kuò)展。
67、7.本發(fā)明最終返回給請求方的信息都是經(jīng)過驗(yàn)證的有效數(shù)據(jù),能夠更好地滿足請求方需求,從而提高用戶滿意度。