本發(fā)明涉及數(shù)據(jù)處理,特別是指一種混合結(jié)構(gòu)的多模態(tài)數(shù)據(jù)查詢語言的方法及系統(tǒng)。
背景技術(shù):
1、sql(structured?query?language,結(jié)構(gòu)化查詢語言)是一種用于管理關(guān)系型存儲(chǔ)數(shù)據(jù)集的標(biāo)準(zhǔn)化語言。它是一種聲明式的、非過程化的語言,一方面,用戶只需要在邏輯層面描述需求,不必關(guān)心具體的數(shù)據(jù)存儲(chǔ)、提取等操作步驟,簡(jiǎn)化了訪問存儲(chǔ)數(shù)據(jù)集的復(fù)雜性,使用戶能夠更專注于問題的本質(zhì),而非過多關(guān)注底層實(shí)現(xiàn)細(xì)節(jié)。另一方面,查詢語句可以自動(dòng)進(jìn)行優(yōu)化過程,存儲(chǔ)數(shù)據(jù)集管理系統(tǒng)根據(jù)查詢的語義和底層數(shù)據(jù)結(jié)構(gòu)選擇最有效的執(zhí)行計(jì)劃。sql的理論基礎(chǔ)是關(guān)系模型,該模型將數(shù)據(jù)組織為表格形式,并基于關(guān)系代數(shù)提供了一套規(guī)范的操作方法。通過使用sql,用戶可以輕松實(shí)現(xiàn)各種存儲(chǔ)數(shù)據(jù)集操作,包括數(shù)據(jù)查詢、數(shù)據(jù)定義、數(shù)據(jù)操縱和數(shù)據(jù)控制等。
2、多模態(tài)數(shù)據(jù)是指來自不同類型和格式的數(shù)據(jù),這些數(shù)據(jù)可以包含文本、圖像、音頻、視頻以及其他形式的信息?;旌辖Y(jié)構(gòu)的多模態(tài)數(shù)據(jù)則融合了結(jié)構(gòu)化、半結(jié)構(gòu)化和非結(jié)構(gòu)化的數(shù)據(jù),從而提供更全面和豐富的內(nèi)容描述。多模態(tài)數(shù)據(jù)存儲(chǔ)在nosql數(shù)據(jù)庫中,與傳統(tǒng)的關(guān)系型存儲(chǔ)數(shù)據(jù)集不同,多模態(tài)數(shù)據(jù)集的查詢語言目前沒有統(tǒng)一的標(biāo)準(zhǔn),隨數(shù)據(jù)庫的不同而有較大差別。例如,mongodb使用接口函數(shù)操作數(shù)據(jù)集,couchbase使用聲明式的n1ql(non-first?normal?form?query?language,非第一范式查詢語言)來檢索數(shù)據(jù)集,elasticsearch使用自定義的dsl(domain?specific?language,領(lǐng)域特定語言)查詢語法,neo4j使用聲明式查詢語言cypher。
3、隨著互聯(lián)網(wǎng)、社交網(wǎng)絡(luò)、智能推薦等大數(shù)據(jù)業(yè)務(wù)的興起,多模態(tài)數(shù)據(jù)的分析處理需求大幅增長(zhǎng),傳統(tǒng)的sql在面臨海量的多源異構(gòu)數(shù)據(jù)時(shí)已不再適用。一方面是數(shù)據(jù)模型不匹配,sql只能處理原子類型的屬性,因?yàn)殛P(guān)系模型中不存在嵌套屬性,而多模態(tài)數(shù)據(jù)模型中嵌套結(jié)構(gòu)是很常見的,因此傳統(tǒng)sql無法滿足多模態(tài)數(shù)據(jù)模型中對(duì)嵌套屬性的支持。另一方面,關(guān)系模型中的表結(jié)構(gòu)是在存儲(chǔ)數(shù)據(jù)集建立之初,由存儲(chǔ)數(shù)據(jù)集管理員事前定義好的固定模式,無法根據(jù)需求的變化由終端用戶在使用存儲(chǔ)數(shù)據(jù)集的過程中自行動(dòng)態(tài)調(diào)整。但在大數(shù)據(jù)環(huán)境下,數(shù)據(jù)和需求的更新都是快速的、實(shí)時(shí)的,存儲(chǔ)數(shù)據(jù)集管理員難以未卜先知考慮所有情況,用戶在使用中動(dòng)態(tài)地自主構(gòu)建模式是必要的。這違背了傳統(tǒng)sql的部分范式和固定模式,因此無法將sql直接用于多模態(tài)數(shù)據(jù),無法利用sql本身具備的強(qiáng)大功能和其聲明式、非過程化的特性。
4、鑒于此,如何克服現(xiàn)有技術(shù)所存在的缺陷,解決傳統(tǒng)sql語言與多模態(tài)數(shù)據(jù)兼容度低的現(xiàn)象,是本技術(shù)領(lǐng)域待解決的問題。
技術(shù)實(shí)現(xiàn)思路
1、為了解決現(xiàn)有技術(shù)存在的技術(shù)問題,本發(fā)明實(shí)施例提供了一種混合結(jié)構(gòu)的多模態(tài)數(shù)據(jù)查詢語言的方法及系統(tǒng)。所述技術(shù)方案如下:
2、一方面,提供了一種混合結(jié)構(gòu)的多模態(tài)數(shù)據(jù)查詢語言的方法,該方法由混合結(jié)構(gòu)的多模態(tài)數(shù)據(jù)查詢語言的設(shè)備實(shí)現(xiàn),該方法包括:
3、s1、用戶將已有的數(shù)據(jù)整理后,自主創(chuàng)建多模態(tài)數(shù)據(jù)集的數(shù)據(jù)模式,獲取數(shù)據(jù)模式中不同類型數(shù)據(jù)元素之間的嵌套關(guān)系;其中,多模態(tài)數(shù)據(jù)是指融合了結(jié)構(gòu)化、半結(jié)構(gòu)化和非結(jié)構(gòu)化的數(shù)據(jù)。
4、s2、選擇一個(gè)關(guān)鍵數(shù)據(jù)結(jié)構(gòu)或輔以算法作為整個(gè)數(shù)據(jù)模式的第一層數(shù)據(jù)結(jié)構(gòu),將不同類型的數(shù)據(jù)元素作為第一層數(shù)據(jù)結(jié)構(gòu)或第一層數(shù)據(jù)結(jié)構(gòu)下的元素或子結(jié)構(gòu),并輔以算法形成單層或多層數(shù)據(jù)結(jié)構(gòu)。
5、s3、根據(jù)s2中的單層或多層數(shù)據(jù)結(jié)構(gòu)所形成的嵌套關(guān)系以及構(gòu)建的查詢語言,建立數(shù)據(jù)元素對(duì)象。
6、s4、根據(jù)數(shù)據(jù)元素對(duì)象、定義的數(shù)據(jù)模式表示規(guī)則、定義的屬性表示規(guī)則、定義的值變換規(guī)則以及定義的普通的表達(dá)式過濾條件和針對(duì)嵌套類型數(shù)據(jù)元素的復(fù)雜過濾條件,完成多模態(tài)數(shù)據(jù)集查詢語言動(dòng)態(tài)自主構(gòu)建。
7、s5、獲取用戶輸入的查詢語句,根據(jù)查詢語句以及構(gòu)建的多模態(tài)數(shù)據(jù)集查詢語言,得到查詢結(jié)果。
8、可選地,數(shù)據(jù)元素包括單層或多層級(jí)的數(shù)據(jù)元素。
9、數(shù)據(jù)元素對(duì)象包括:數(shù)據(jù)元素的屬性、數(shù)據(jù)元素的數(shù)據(jù)類型以及當(dāng)?shù)谝粚蛹?jí)的數(shù)據(jù)元素的數(shù)據(jù)類型為非原子類型時(shí),非原子類型的數(shù)據(jù)元素所包含的子數(shù)據(jù)元素。
10、可選地,定義的數(shù)據(jù)模式表示規(guī)則,包括:
11、采用多種表達(dá)方式,對(duì)所有數(shù)據(jù)元素以及對(duì)不同類型數(shù)據(jù)元素之間的嵌套關(guān)系進(jìn)行表示。
12、多種表達(dá)方式包括多維立體化表達(dá)方式和二維扁平化表達(dá)方式。
13、多維立體化表達(dá)方式包括顯式的表達(dá)數(shù)據(jù)元素的類型以及數(shù)據(jù)元素包含的子數(shù)據(jù)元素的屬性、類型和特征,將處于同一層級(jí)的數(shù)據(jù)元素間用逗號(hào)分隔,將處于不同層級(jí)的數(shù)據(jù)元素間用縮進(jìn)的位置進(jìn)行區(qū)分。
14、二維扁平化表達(dá)方式包括對(duì)數(shù)據(jù)元素的嵌套關(guān)系進(jìn)行平鋪展開,將平鋪展開后的所有數(shù)據(jù)元素放到同一層級(jí),用符號(hào)連接數(shù)據(jù)元素中的父數(shù)據(jù)元素和子數(shù)據(jù)元素,對(duì)每一個(gè)除第一層級(jí)外的其他層級(jí)的數(shù)據(jù)元素,將層級(jí)的上層級(jí)的所有數(shù)據(jù)元素作為前綴。
15、可選地,定義的屬性表示規(guī)則,包括:
16、對(duì)第一層級(jí)的數(shù)據(jù)元素的屬性進(jìn)行表示,以及當(dāng)?shù)谝粚蛹?jí)的數(shù)據(jù)元素的數(shù)據(jù)類型為非原子類型時(shí),對(duì)非原子類型的數(shù)據(jù)元素包含的子數(shù)據(jù)元素的屬性進(jìn)行表示。
17、其中,對(duì)第一層級(jí)的數(shù)據(jù)元素的屬性進(jìn)行表示,包括:
18、當(dāng)?shù)谝粚蛹?jí)的數(shù)據(jù)元素的數(shù)據(jù)類型為原子類型時(shí),數(shù)據(jù)元素的屬性為原子類型的數(shù)據(jù)元素的字段名稱。
19、當(dāng)?shù)谝粚蛹?jí)的數(shù)據(jù)元素的數(shù)據(jù)類型為非原子類型時(shí),第一層級(jí)的非原子類型的數(shù)據(jù)元素的屬性為非原子類型的數(shù)據(jù)元素的名稱,其他層級(jí)的非原子類型的數(shù)據(jù)元素的屬性為其他層級(jí)的父層級(jí)數(shù)據(jù)元素的結(jié)構(gòu)遞歸直至第一層級(jí)的非原子類型的數(shù)據(jù)元素的結(jié)構(gòu)。
20、可選地,定義的值變換規(guī)則,包括:
21、對(duì)根據(jù)屬性表示規(guī)則描述的屬性,進(jìn)行數(shù)據(jù)內(nèi)容的提取和變換。
22、可選地,定義的where子句的過濾條件,包括:
23、對(duì)原子類型的數(shù)據(jù)元素,設(shè)計(jì)普通的表達(dá)式過濾條件,對(duì)非原子類型的數(shù)據(jù)元素,設(shè)計(jì)復(fù)雜的表達(dá)式過濾條件。
24、過濾條件包括全部滿足和存在滿足。
25、可選地,s5中的獲取用戶輸入的查詢語句,根據(jù)查詢語句以及構(gòu)建的多模態(tài)數(shù)據(jù)集查詢語言,得到查詢結(jié)果,包括:
26、s51、獲取用戶輸入的查詢語句,將查詢語句輸入到模塊編譯器,得到模塊編譯器輸出。
27、其中,模塊編譯器輸出包括通過詞法分析器輸出的tokens,根據(jù)tokens以及語法分析器,得到語法分析樹。
28、s52、將模塊編譯器輸出輸入到模塊解析器,得到模塊解析器輸出。
29、其中,模塊解析器輸出包括通過掃描器輸出的語法分析樹的節(jié)點(diǎn)值,根據(jù)節(jié)點(diǎn)值以及綁定器,得到邏輯計(jì)劃樹。
30、s53、將模塊解析器輸出輸入到模塊權(quán)限檢查器,得到允許訪問或不允許訪問。
31、s54、若允許訪問,則將模塊解析器輸出輸入到模塊優(yōu)化器,得到模塊優(yōu)化器輸出。
32、若不允許訪問,則結(jié)束查詢。
33、s55、將模塊優(yōu)化器輸出輸入到模塊執(zhí)行器,得到查詢結(jié)果。
34、另一方面,提供了一種混合結(jié)構(gòu)的多模態(tài)數(shù)據(jù)查詢語言的系統(tǒng),該系統(tǒng)應(yīng)用于混合結(jié)構(gòu)的多模態(tài)數(shù)據(jù)查詢語言的方法,該系統(tǒng)包括:
35、獲取模塊,用于用戶將已有的數(shù)據(jù)整理后,自主創(chuàng)建多模態(tài)數(shù)據(jù)集的數(shù)據(jù)模式,獲取數(shù)據(jù)模式中不同類型數(shù)據(jù)元素之間的嵌套關(guān)系;其中,多模態(tài)數(shù)據(jù)是指融合了結(jié)構(gòu)化、半結(jié)構(gòu)化和非結(jié)構(gòu)化的數(shù)據(jù)。
36、結(jié)構(gòu)構(gòu)建模塊,用于選擇一個(gè)關(guān)鍵數(shù)據(jù)結(jié)構(gòu)或輔以算法作為整個(gè)數(shù)據(jù)模式的第一層數(shù)據(jù)結(jié)構(gòu),將不同類型的數(shù)據(jù)元素作為第一層數(shù)據(jù)結(jié)構(gòu)或第一層數(shù)據(jù)結(jié)構(gòu)下的元素或子結(jié)構(gòu),并輔以算法形成單層或多層數(shù)據(jù)結(jié)構(gòu)。
37、建立模塊,用于根據(jù)單層或多層數(shù)據(jù)結(jié)構(gòu)所形成的嵌套關(guān)系以及構(gòu)建的查詢語言,建立數(shù)據(jù)元素對(duì)象。
38、構(gòu)建模塊,用于根據(jù)數(shù)據(jù)元素對(duì)象、定義的數(shù)據(jù)模式表示規(guī)則、定義的屬性表示規(guī)則、定義的值變換規(guī)則以及定義的普通的表達(dá)式過濾條件和針對(duì)嵌套類型數(shù)據(jù)元素的復(fù)雜過濾條件,完成多模態(tài)數(shù)據(jù)集查詢語言動(dòng)態(tài)自主構(gòu)建。
39、輸出模塊,用于獲取用戶輸入的查詢語句,根據(jù)查詢語句以及構(gòu)建的多模態(tài)數(shù)據(jù)集查詢語言,得到查詢結(jié)果。
40、另一方面,提供一種混合結(jié)構(gòu)的多模態(tài)數(shù)據(jù)查詢語言的設(shè)備,所述混合結(jié)構(gòu)的多模態(tài)數(shù)據(jù)查詢語言的設(shè)備包括:處理器;存儲(chǔ)器,所述存儲(chǔ)器上存儲(chǔ)有計(jì)算機(jī)可讀指令,所述計(jì)算機(jī)可讀指令被所述處理器執(zhí)行時(shí),實(shí)現(xiàn)如上述混合結(jié)構(gòu)的多模態(tài)數(shù)據(jù)查詢語言的方法中的任一項(xiàng)方法。
41、另一方面,提供了一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述存儲(chǔ)介質(zhì)中存儲(chǔ)有至少一條指令,所述至少一條指令由處理器加載并執(zhí)行以實(shí)現(xiàn)上述混合結(jié)構(gòu)的多模態(tài)數(shù)據(jù)查詢語言的方法中的任一項(xiàng)方法。
42、本發(fā)明實(shí)施例提供的技術(shù)方案帶來的有益效果至少包括:
43、本發(fā)明實(shí)施例中,解決了傳統(tǒng)sql語言與多模態(tài)數(shù)據(jù)集兼容度低的問題,擴(kuò)展sql有利于簡(jiǎn)潔高效檢索多模態(tài)數(shù)據(jù)。
44、本發(fā)明針對(duì)數(shù)據(jù)模式進(jìn)行動(dòng)態(tài)自主構(gòu)建。區(qū)別于傳統(tǒng)的關(guān)系型數(shù)據(jù)庫和sql由數(shù)據(jù)庫管理員事前構(gòu)建數(shù)據(jù)模式,本發(fā)明提出的查詢語言和方法支持用戶在使用數(shù)據(jù)庫的過程中,根據(jù)需求動(dòng)態(tài)自主構(gòu)建數(shù)據(jù)模式,無需依賴數(shù)據(jù)庫管理員。同時(shí)支持更多的數(shù)據(jù)類型和嵌套操作,在使用模式和具體操作上都更加靈活。