一種數(shù)據(jù)庫(kù)訪問(wèn)方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)檢索,特別涉及一種數(shù)據(jù)庫(kù)訪問(wèn)方法。
【背景技術(shù)】
[0002]物聯(lián)網(wǎng)的出現(xiàn)為智能家居、智能醫(yī)療、智能城市、智能交通等眾多應(yīng)用領(lǐng)域的迅猛發(fā)展奠定了基礎(chǔ)。在物聯(lián)網(wǎng)的傳感器網(wǎng)絡(luò)中,擁有射頻識(shí)別設(shè)備、傳感器、智能嵌入設(shè)備等數(shù)目眾多的異質(zhì)設(shè)備,運(yùn)行著用于標(biāo)識(shí)、感知、處理和傳送信息的各類(lèi)服務(wù),因此網(wǎng)絡(luò)中各傳感節(jié)點(diǎn)所采用的通信標(biāo)準(zhǔn)和實(shí)現(xiàn)技術(shù)存在巨大的差異。這將導(dǎo)致分布在不同地點(diǎn)的各節(jié)點(diǎn)不斷產(chǎn)生大量、非連續(xù)且時(shí)間敏感的數(shù)據(jù)。這類(lèi)具有多維度屬性數(shù)據(jù)對(duì)保證產(chǎn)業(yè)的正常運(yùn)轉(zhuǎn)非常重要,但現(xiàn)有的數(shù)據(jù)管理方法不能有效解決其存儲(chǔ)與快速檢索問(wèn)題。
【發(fā)明內(nèi)容】
[0003]為解決上述現(xiàn)有技術(shù)所存在的問(wèn)題,本發(fā)明提出了一種數(shù)據(jù)庫(kù)訪問(wèn)方法,包括:
[0004]步驟一、通過(guò)支持語(yǔ)義的屬性數(shù)據(jù)描述傳感器網(wǎng)絡(luò)獲取的數(shù)據(jù);
[0005]步驟二、利用DOM樹(shù)結(jié)構(gòu),將所述傳感器網(wǎng)絡(luò)獲取的數(shù)據(jù)存儲(chǔ)在MySqL數(shù)據(jù)庫(kù)中;
[0006]步驟三、基于所述屬性數(shù)據(jù)在MySqL數(shù)據(jù)庫(kù)中進(jìn)行檢索。
[0007]優(yōu)選地,所述屬性數(shù)據(jù)包括對(duì)數(shù)據(jù)進(jìn)行宏觀描述的基本屬性和關(guān)聯(lián)于數(shù)據(jù)描述領(lǐng)域的擴(kuò)展屬性;當(dāng)新數(shù)據(jù)被獲取后,從屬性數(shù)據(jù)庫(kù)中調(diào)取屬性數(shù)據(jù)標(biāo)準(zhǔn)來(lái)描述該數(shù)據(jù),如能完整描述,則直接對(duì)其進(jìn)行描述;如不能夠完整描述,則在原有屬性數(shù)據(jù)標(biāo)準(zhǔn)的基礎(chǔ)上進(jìn)行屬性數(shù)據(jù)擴(kuò)展,生成目標(biāo)屬性數(shù)據(jù),然后使用新生成的目標(biāo)屬性數(shù)據(jù)標(biāo)準(zhǔn)對(duì)該類(lèi)數(shù)據(jù)進(jìn)行描述,同時(shí)將新生成的屬性數(shù)據(jù)標(biāo)準(zhǔn)添加到屬性數(shù)據(jù)庫(kù)中,完成屬性數(shù)據(jù)的學(xué)習(xí)過(guò)程;所述基本屬性包括:名稱、主題、描述、來(lái)源、創(chuàng)建者、標(biāo)識(shí)符、日期、類(lèi)型、格式;所述擴(kuò)展屬性是根據(jù)應(yīng)用領(lǐng)域的特征擴(kuò)展而成,包括地理數(shù)據(jù)、媒體數(shù)據(jù)、狀態(tài)數(shù)據(jù)、時(shí)間數(shù)據(jù)。
[0008]優(yōu)選地,所述步驟二利用DOM樹(shù)結(jié)構(gòu),將所述傳感器網(wǎng)絡(luò)獲取的數(shù)據(jù)存儲(chǔ)在MySqL數(shù)據(jù)庫(kù)中,進(jìn)一步包括:
[0009]利用MySqL數(shù)據(jù)庫(kù)來(lái)存儲(chǔ)經(jīng)屬性數(shù)據(jù)所描述的DOM數(shù)據(jù),將MySqL數(shù)據(jù)庫(kù)按照數(shù)據(jù)維度來(lái)組織,每一個(gè)數(shù)據(jù)維度映射成一個(gè)關(guān)系表,DOM文檔中的元素、屬性與表中的字段相對(duì)應(yīng),為每個(gè)表增加一個(gè)標(biāo)識(shí)字段作為外鍵,以便與其它表建立關(guān)聯(lián);
[0010]對(duì)于傳感器網(wǎng)絡(luò)中存在的結(jié)構(gòu)化數(shù)據(jù)、非結(jié)構(gòu)化數(shù)據(jù)和半結(jié)構(gòu)化數(shù)據(jù)采用不同的永久存儲(chǔ)策略;對(duì)于結(jié)構(gòu)化數(shù)據(jù),直接存儲(chǔ)到MySqL數(shù)據(jù)庫(kù)的表和字段中;對(duì)于非結(jié)構(gòu)化數(shù)據(jù),將其存儲(chǔ)在磁盤(pán)的文件系統(tǒng)中;對(duì)于半結(jié)構(gòu)化數(shù)據(jù),選用MySqL數(shù)據(jù)庫(kù)和文件系統(tǒng)相結(jié)合的方式,即用MySqL數(shù)據(jù)庫(kù)存儲(chǔ)數(shù)據(jù)的結(jié)構(gòu)化部分,用文件系統(tǒng)來(lái)存儲(chǔ)數(shù)據(jù)的非結(jié)構(gòu)化部分,并將非結(jié)構(gòu)化數(shù)據(jù)的索引信息存儲(chǔ)在相應(yīng)的MySqL數(shù)據(jù)庫(kù)中;
[0011]通過(guò)以下過(guò)程對(duì)MySqL數(shù)據(jù)庫(kù)存儲(chǔ)內(nèi)容進(jìn)行優(yōu)化:
[0012](I)根據(jù)屬性數(shù)據(jù)描述文件,通過(guò)遞歸深度遍歷DOM數(shù)據(jù)來(lái)創(chuàng)建屬性樹(shù)和屬性數(shù)據(jù)所描述的數(shù)據(jù)樹(shù);
[0013](2)對(duì)屬性樹(shù)進(jìn)行編碼:對(duì)文檔樹(shù)中每個(gè)節(jié)點(diǎn)進(jìn)行編碼,并按照層次順序進(jìn)行遍歷,每個(gè)樹(shù)節(jié)點(diǎn)存儲(chǔ)數(shù)據(jù)信息和編碼;編碼規(guī)則是將根節(jié)點(diǎn)編碼為1,子節(jié)點(diǎn)的編碼=父節(jié)點(diǎn)的編碼+ “.”+ “i”;
[0014](3)查找空節(jié)點(diǎn),將其消除,合并相似節(jié)點(diǎn)。
[0015]優(yōu)選地,所述步驟三基于所述屬性數(shù)據(jù)在MySqL數(shù)據(jù)庫(kù)中進(jìn)行檢索,進(jìn)一步包括:
[0016]利用具有語(yǔ)義的描述的屬性,當(dāng)處理檢索時(shí),一方面對(duì)屬性數(shù)據(jù)進(jìn)行檢索,得到具體的數(shù)據(jù)集,縮小數(shù)據(jù)檢索的范圍;另一方面根據(jù)屬性數(shù)據(jù)檢索結(jié)果,轉(zhuǎn)到MySqL數(shù)據(jù)庫(kù)中進(jìn)行進(jìn)一步檢索,以得到相應(yīng)的數(shù)據(jù),最后將檢索結(jié)果進(jìn)行處理和封裝,返回給檢索請(qǐng)求者;
[0017]在數(shù)據(jù)檢索過(guò)程中:
[0018](I)首先對(duì)檢索條件進(jìn)行預(yù)處理,針對(duì)帶有語(yǔ)義的檢索,提取檢索元素;
[0019](2)根據(jù)檢索元素生成DOM查詢樹(shù)和屬性樹(shù);
[0020](3)將查詢樹(shù)與屬性樹(shù)進(jìn)行匹配,得到一個(gè)中間樹(shù);在匹配時(shí),進(jìn)行兩種運(yùn)算,即添加和消除;對(duì)于消除運(yùn)算,所有數(shù)據(jù)對(duì)象都采用同一個(gè)屬性數(shù)據(jù)標(biāo)準(zhǔn),各數(shù)據(jù)對(duì)象的屬性樹(shù)節(jié)點(diǎn)都是同一屬性樹(shù)的一部分,但是屬性數(shù)據(jù)值不同,通過(guò)消除運(yùn)算,消除未匹配到的屬性樹(shù)節(jié)點(diǎn);對(duì)于不能完全匹配,但具有語(yǔ)義相關(guān)性的維度,可近似匹配的屬性數(shù)據(jù),對(duì)其進(jìn)行添加運(yùn)算;
[0021](4)根據(jù)MySqL數(shù)據(jù)庫(kù)生成關(guān)系樹(shù),再對(duì)步驟(3)中生成的中間樹(shù)進(jìn)行編碼,然后進(jìn)行消除匹配得到最終的SQL查詢樹(shù);
[0022](5)利用經(jīng)過(guò)添加和消除匹配后得到的SQL查詢樹(shù),構(gòu)成檢索數(shù)據(jù)集對(duì)應(yīng)的元素和元素屬性,產(chǎn)生SQL檢索語(yǔ)句,生成對(duì)MySqL數(shù)據(jù)庫(kù)的檢索,執(zhí)行MySqL數(shù)據(jù)庫(kù)檢索,并返回一個(gè)結(jié)果集;
[0023](6)將結(jié)果數(shù)據(jù)進(jìn)行整理聚合,對(duì)檢索得到的數(shù)據(jù)進(jìn)行分類(lèi)、排序操作,并將結(jié)果返回給請(qǐng)求者。
[0024]本發(fā)明相比現(xiàn)有技術(shù),具有以下優(yōu)點(diǎn):
[0025]本發(fā)明提出了一種數(shù)據(jù)庫(kù)訪問(wèn)方法,實(shí)現(xiàn)了傳感器網(wǎng)絡(luò)數(shù)據(jù)的壓縮存儲(chǔ)與快速檢索,有效改善了數(shù)據(jù)存儲(chǔ)量大且檢索速度慢的問(wèn)題。
【附圖說(shuō)明】
[0026]圖1是根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)庫(kù)訪問(wèn)方法的流程圖。
【具體實(shí)施方式】
[0027]下文與圖示本發(fā)明原理的附圖一起提供對(duì)本發(fā)明一個(gè)或者多個(gè)實(shí)施例的詳細(xì)描述。結(jié)合這樣的實(shí)施例描述本發(fā)明,但是本發(fā)明不限于任何實(shí)施例。本發(fā)明的范圍僅由權(quán)利要求書(shū)限定,并且本發(fā)明涵蓋諸多替代、修改和等同物。在下文描述中闡述諸多具體細(xì)節(jié)以便提供對(duì)本發(fā)明的透徹理解。出于示例的目的而提供這些細(xì)節(jié),并且無(wú)這些具體細(xì)節(jié)中的一些或者所有細(xì)節(jié)也可以根據(jù)權(quán)利要求書(shū)實(shí)現(xiàn)本發(fā)明。
[0028]本發(fā)明的一方面提供了一種數(shù)據(jù)庫(kù)訪問(wèn)方法。圖1是根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)庫(kù)訪問(wèn)方法流程圖。本發(fā)明通過(guò)改進(jìn)的DOM樹(shù)匹配方法提高了數(shù)據(jù)檢索效率與檢索精度,實(shí)現(xiàn)了對(duì)多維度數(shù)據(jù)壓縮存儲(chǔ)與快速檢索的優(yōu)化設(shè)計(jì)。傳統(tǒng)數(shù)據(jù)結(jié)構(gòu)很難描述具有多維度特征的傳感器網(wǎng)絡(luò)數(shù)據(jù)。在屬性數(shù)據(jù)結(jié)構(gòu)中使用支持語(yǔ)義的屬性數(shù)據(jù),成為一種數(shù)據(jù)描述的可行方案。傳感器網(wǎng)絡(luò)的外延十分廣泛,各種應(yīng)用領(lǐng)域的數(shù)據(jù)具有不同特征,用一種屬性數(shù)據(jù)標(biāo)準(zhǔn)不能對(duì)其進(jìn)行通用描述。因此,本發(fā)明根據(jù)不同領(lǐng)域的具體應(yīng)用進(jìn)行擴(kuò)展。擴(kuò)展屬性分為一級(jí)擴(kuò)展和多級(jí)擴(kuò)展?;緦傩詫?duì)數(shù)據(jù)進(jìn)行基本的宏觀描述,而擴(kuò)展屬性是在基本屬性描述的基礎(chǔ)上,再對(duì)數(shù)據(jù)進(jìn)行詳細(xì)描述,這樣就為異質(zhì)數(shù)據(jù)的同質(zhì)描述提供了可能,為傳感器網(wǎng)絡(luò)數(shù)據(jù)的互操作和資源的共享奠定了基礎(chǔ)。
[0029](I)基本屬性:用于描述數(shù)據(jù)的基本特征。本發(fā)明保留數(shù)據(jù)的9個(gè)元素:名稱、主題、描述、來(lái)源、創(chuàng)建者、標(biāo)識(shí)符、日期、類(lèi)型、格式。
[0030](2)擴(kuò)展屬性:根據(jù)各應(yīng)用領(lǐng)域的特征擴(kuò)展而成,是對(duì)數(shù)據(jù)的詳細(xì)描述,如地理數(shù)據(jù)、媒體數(shù)據(jù)、狀態(tài)數(shù)據(jù)、時(shí)間數(shù)據(jù)等。
[0031]隨著傳感器網(wǎng)絡(luò)規(guī)模、數(shù)據(jù)種類(lèi)和數(shù)據(jù)量的不斷膨脹,屬性數(shù)據(jù)需要不斷地學(xué)習(xí)和擴(kuò)展以適應(yīng)該情況,當(dāng)新數(shù)據(jù)被系統(tǒng)獲取后,系統(tǒng)將從屬性數(shù)據(jù)庫(kù)中調(diào)取屬性數(shù)據(jù)標(biāo)準(zhǔn)來(lái)描述該數(shù)據(jù),如能完整描述,則直接對(duì)其進(jìn)行描述;如不能夠完整描述,則在原有屬性數(shù)據(jù)標(biāo)準(zhǔn)的基礎(chǔ)上進(jìn)行屬性數(shù)據(jù)擴(kuò)展,生成目標(biāo)屬性數(shù)據(jù),然后使用新生成的目標(biāo)屬性數(shù)據(jù)標(biāo)準(zhǔn)對(duì)該類(lèi)數(shù)據(jù)進(jìn)行描述,同時(shí)將新生成的屬性數(shù)據(jù)標(biāo)準(zhǔn)添加到屬性數(shù)據(jù)庫(kù)中,完成屬性數(shù)據(jù)的學(xué)習(xí)過(guò)程。
[0032]利用MySqL數(shù)據(jù)庫(kù)來(lái)存儲(chǔ)經(jīng)傳感器網(wǎng)絡(luò)屬性數(shù)據(jù)所描述的DOM數(shù)據(jù)。將MySqL數(shù)據(jù)庫(kù)按照數(shù)據(jù)維度來(lái)組織,每一個(gè)數(shù)據(jù)維度映射成一個(gè)關(guān)系表,DOM文檔中的元素、屬性與表中的字段相對(duì)應(yīng)。為每個(gè)表增加一個(gè)標(biāo)識(shí)字段作為外鍵,以便與其它表建立關(guān)聯(lián)。
[0033]傳感器網(wǎng)絡(luò)中存在的結(jié)構(gòu)化數(shù)據(jù)、非結(jié)構(gòu)化數(shù)據(jù)和半結(jié)構(gòu)化數(shù)據(jù)永久存儲(chǔ)策略各不相同。
[0034]對(duì)于結(jié)構(gòu)化數(shù)據(jù),其具有規(guī)范的結(jié)構(gòu),數(shù)據(jù)的組織比較有規(guī)則,可直接存儲(chǔ)到MySqL數(shù)據(jù)庫(kù)的表和字段中。
[0035]對(duì)于非結(jié)構(gòu)化數(shù)據(jù),一般沒(méi)有固定的結(jié)構(gòu),如視頻、聲音、圖像等。這些數(shù)據(jù)不易在MySqL數(shù)據(jù)庫(kù)中存儲(chǔ),因此可將其存儲(chǔ)在磁盤(pán)的文件系統(tǒng)中。
[0036]對(duì)于半結(jié)構(gòu)化數(shù)據(jù),介于結(jié)構(gòu)化數(shù)據(jù)與非結(jié)構(gòu)化數(shù)據(jù)之間的數(shù)據(jù)。選用MySqL數(shù)據(jù)庫(kù)和文件系統(tǒng)相結(jié)合的方式對(duì)此類(lèi)數(shù)據(jù)進(jìn)行存儲(chǔ)。其中用MySqL數(shù)據(jù)庫(kù)存儲(chǔ)數(shù)據(jù)的結(jié)構(gòu)化部分,用文件系統(tǒng)來(lái)存儲(chǔ)數(shù)據(jù)的非結(jié)構(gòu)化部分,并將非結(jié)構(gòu)化數(shù)據(jù)的索引信息存儲(chǔ)在相應(yīng)的MySqL數(shù)據(jù)庫(kù)中。
[0037]若將所有屬性數(shù)據(jù)元素一一映射到MySqL數(shù)據(jù)庫(kù)中,必將產(chǎn)生一些無(wú)效字段和利用率低的字段。隨著存儲(chǔ)數(shù)據(jù)量的增長(zhǎng),這些無(wú)用的字段成為沉重的冗余數(shù)據(jù),浪費(fèi)存儲(chǔ)空間。所以需要對(duì)MySqL數(shù)據(jù)庫(kù)模型進(jìn)行優(yōu)化,即消除無(wú)用字段,合并低效字段。
[0038