一種云端大數(shù)據(jù)處理方法和系統(tǒng)的制作方法
【專利摘要】本發(fā)明提供了一種云端大數(shù)據(jù)處理方法和系統(tǒng),該方法包括:定義數(shù)據(jù)層次模型,所述數(shù)據(jù)層次模型包括SQL層和XML層;在數(shù)據(jù)尋址時,使用B-樹結(jié)構(gòu)存儲XML層的索引表和數(shù)據(jù)表;定義映射函數(shù),將SQL層中的數(shù)據(jù)項對應(yīng)到XML層中的數(shù)據(jù)項。本發(fā)明融合了兩種數(shù)據(jù)模型,增加了數(shù)據(jù)表達的靈活性和擴展性,性能得到了很大的提高。
【專利說明】一種云端大數(shù)據(jù)處理方法和系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及云存儲,特別涉及一種大數(shù)據(jù)的云計算方法和系統(tǒng)。
【背景技術(shù)】
[0002]隨著移動互聯(lián)網(wǎng)、物聯(lián)網(wǎng)等應(yīng)用的飛速發(fā)展,全球數(shù)據(jù)量出現(xiàn)了爆炸式增長。數(shù)據(jù)量的飛速增長預(yù)示著現(xiàn)在已經(jīng)進入了大數(shù)據(jù)時代。網(wǎng)絡(luò)運營商擁有龐大的用戶,同時具有對終端及用戶上網(wǎng)通道的掌控能力,使得在用戶行為分析方面具有很好的數(shù)據(jù)基礎(chǔ),深入分析用戶流量行為特征和規(guī)律,發(fā)現(xiàn)用戶潛在消費需求,是提升價值和經(jīng)營水平的有效手段。然而,不僅僅是數(shù)據(jù)規(guī)模越來越大,而且數(shù)據(jù)類型多和處理實時性要求都極大地增加了大數(shù)據(jù)處理的復(fù)雜度。大數(shù)據(jù)給傳統(tǒng)的數(shù)據(jù)分析處理技術(shù)(例如并行數(shù)據(jù)庫、數(shù)據(jù)倉庫)帶來的技術(shù)挑戰(zhàn)。傳統(tǒng)數(shù)據(jù)分析處理技術(shù)無法處理大數(shù)據(jù)的高擴展性和海量需求。針對億萬的用戶,數(shù)據(jù)呈現(xiàn)出多源化、異構(gòu)化的趨勢,不同的應(yīng)用對數(shù)據(jù)的一致性、數(shù)據(jù)交互、傳輸延時等均有不同的需求。基于XML的數(shù)據(jù)模型很好地解決了多機并行處理的瓶頸,存儲容量也不再受限,并且能更好地存儲各種復(fù)雜的數(shù)據(jù)類型,查詢效率也更高。但XML數(shù)據(jù)模型功能較單一,使用起來沒有SQL數(shù)據(jù)模型靈活,不能增加表以及多表結(jié)合來完成復(fù)雜的查詢功能,應(yīng)用者必須要更深入的分析大數(shù)據(jù)之間的結(jié)構(gòu),對應(yīng)用支持不好,使用不方便。
[0003]因此,針對相關(guān)技術(shù)中所存在的上述問題,目前尚未提出有效的解決方案。
【發(fā)明內(nèi)容】
[0004]為解決上述現(xiàn)有技術(shù)所存在的問題,本發(fā)明提出了一種云端大數(shù)據(jù)處理方法和系統(tǒng),該方法包括:
[0005]定義數(shù)據(jù)層次模型,所述數(shù)據(jù)層次模型包括SQL層和XML層;
[0006]在數(shù)據(jù)尋址時,使用B-樹結(jié)構(gòu)存儲XML層的索引表和數(shù)據(jù)表;
[0007]定義映射函數(shù),將SQL層中的數(shù)據(jù)項對應(yīng)到XML層中的數(shù)據(jù)項。
[0008]優(yōu)選地,所述SQL層和XML層均由表結(jié)構(gòu)來表示數(shù)據(jù);在該層次模型中,SQL層位于最上層,用于處理應(yīng)用給出的各種事務(wù)性的操作,以及對結(jié)構(gòu)化數(shù)據(jù)的管理,數(shù)據(jù)的屬性和聯(lián)系均用二維表表示。
[0009]優(yōu)選地,所述XML層中的表結(jié)構(gòu)米用多維存儲,表第一行是表的結(jié)構(gòu)信息,在定義表時首先定義表的列簇,所述列簇包含多列,行和列在進行數(shù)據(jù)插入時寫入,在表中插入數(shù)據(jù)時,要指定行、表中存在的列簇、以及列,并產(chǎn)生一個時間戳,根據(jù)時間戳個數(shù),決定數(shù)據(jù)的副本個數(shù);XML層的數(shù)據(jù)表和索引表采用水平分片,將表劃分為子表管理,隨著數(shù)據(jù)的插入,當(dāng)子表增長到預(yù)定大小時分裂為兩個子表,每個子表由若干記錄行組成。
[0010]優(yōu)選地,所述SQL表中的數(shù)據(jù)項和XML表中的數(shù)據(jù)項是一一對應(yīng)的,SQL層和XML層的劃分都是針對同一個實體型的數(shù)據(jù),屬于同一實體型的橫向分層,均封裝在系統(tǒng)的SQL層中;所述XML層中,只有數(shù)據(jù)表存儲了實際的大字段數(shù)據(jù),包括鍵和值,二層索引表保存了數(shù)據(jù)表的地址信息以及元數(shù)據(jù)信息,二層索引表中每行記錄對應(yīng)于一個數(shù)據(jù)表,根索引表保存了二層索引表的地址信息以及其他元數(shù)據(jù)信息,根索引表中每條記錄對應(yīng)一個二層索引表。
[0011]優(yōu)選地,所述B-樹的根索引節(jié)點不被劃分,具有唯一性;根據(jù)可自定義的節(jié)點大小與其文件大小確定數(shù)據(jù)節(jié)點的合并和分裂條件;數(shù)據(jù)插入和刪除,都在數(shù)據(jù)節(jié)點進行,樹形結(jié)構(gòu)始終由兩層索引節(jié)點和一層數(shù)據(jù)節(jié)點組成;包括根索引節(jié)點在內(nèi)的索引節(jié)點的子樹個數(shù)等于索引節(jié)點的記錄項數(shù)目;索引節(jié)點的記錄項數(shù)目等于可自定義的節(jié)點大小與每行記錄大小的比值。
[0012]優(yōu)選地,所述映射函數(shù)根據(jù)不同的SQL層數(shù)據(jù)項而使用不同的映射函數(shù)進行轉(zhuǎn)換,當(dāng)轉(zhuǎn)換成表之間的映射時,SQL表與XML表之間是多對一的映射,即SQL層中I到i_l的表的某個分量都映射到了 XML層中同一個數(shù)據(jù)子表中不同的數(shù)據(jù)項,其中I < i < η,η為映射函數(shù)的個數(shù);
[0013]并且若定義域為X,值域為Y,映射函數(shù)f滿足以下約束:
[0014]6.1,任何不同的數(shù)據(jù)項或者NULL均表示X或Y中一個唯一元素;
[0015]6.2對于任意一個元素χ e X,通過f轉(zhuǎn)換,在Y中有唯一元素與其對應(yīng);
[0016]6.3對于每個函數(shù)fi (I ( i彡η),定義域X為SQL表中某個屬性的分量,或者直接為查詢條件,值域Y均為XML層中的表的數(shù)據(jù)。
[0017]優(yōu)選地,所述存儲和查詢操作中,用戶通過統(tǒng)一接口控制SQL層和XML層數(shù)據(jù)的插入或者刪除,數(shù)據(jù)查詢在接口中優(yōu)化為通過SQL層和XML層的查詢,并且對SQL層和XML層的數(shù)據(jù)訪問并發(fā)進行,保證SQL層和XML層數(shù)據(jù)的一致性和完整性,其中XML層數(shù)據(jù)的讀寫并發(fā)根據(jù)時間戳進行控制。
[0018]優(yōu)選地,所述SQL層和XML層數(shù)據(jù)的一致性和完整性通過以下約束過程來獲取:
[0019]8.1,當(dāng)創(chuàng)建表時,如果不同的表有相同的聯(lián)合主鍵,則主鍵順序一致;
[0020]8.2,標(biāo)記與XML層中行相關(guān)的主鍵列,其余的主鍵列或者主鍵列的聯(lián)合作為步驟
8.2中列簇的列,當(dāng)SQL層中只有唯一主鍵時,自動標(biāo)記為行;
[0021]8.3,標(biāo)記表中的大字段屬性;
[0022]8.4,統(tǒng)計每一類型表中各個屬性列的信息,使一個schema下的各個SQL表映射到同一個XML表中;
[0023]8.5,對于步驟8.4中的SQL表和XML表,如果SQL表中,除去已經(jīng)在步驟8.2中標(biāo)記的主鍵列,其余屬性均為大字段,則標(biāo)記該SQL表為大字段,然后在XML表中增加一個名為SQL表名的列簇,否則增加一個名為SQL表中標(biāo)記的屬性的列簇;
[0024]8.6,對映射函數(shù)的約束,當(dāng)原象為NULL時,象必為NULL ;
[0025]并且,在進行數(shù)據(jù)操作時,其鍵值根據(jù)查詢條件動態(tài)產(chǎn)生,一次事務(wù)操作只有一個鍵。
[0026]根據(jù)本發(fā)明的另一方面,提供了一種云端大數(shù)據(jù)處理系統(tǒng),用于結(jié)合結(jié)構(gòu)化SQL和非結(jié)構(gòu)化XML對大數(shù)據(jù)進行存儲和查詢,其特征在于,包括:
[0027]模型定義模塊,用于定義數(shù)據(jù)層次模型,所述數(shù)據(jù)層次模型包括SQL層和XML層;
[0028]存儲模塊,用于在在數(shù)據(jù)尋址時,使用B-樹結(jié)構(gòu)存儲XML層的索引表和數(shù)據(jù)表;
[0029]映射模塊,用于定義映射函數(shù),將SQL層中的數(shù)據(jù)項對應(yīng)到XML層中的數(shù)據(jù)項。
[0030]本發(fā)明相比現(xiàn)有技術(shù),具有以下優(yōu)點:
[0031]改進了大數(shù)據(jù)處理方法和系統(tǒng),按實體的屬性類型進行橫向劃分,融合了兩種數(shù)據(jù)模型,使數(shù)據(jù)應(yīng)用在靈活性和擴展性之間有了較好的平衡。在處理大字段數(shù)據(jù)時,性能得到了很大的提高,在云計算大數(shù)據(jù)管理領(lǐng)域發(fā)揮更大的功能。
【專利附圖】
【附圖說明】
[0032]圖1是根據(jù)本發(fā)明實施例的云端大數(shù)據(jù)處理方法的流程圖。
【具體實施方式】
[0033]下文與圖示本發(fā)明原理的附圖一起提供對本發(fā)明一個或者多個實施例的詳細描述。結(jié)合這樣的實施例描述本發(fā)明,但是本發(fā)明不限于任何實施例。本發(fā)明的范圍僅由權(quán)利要求書限定,并且本發(fā)明涵蓋諸多替代、修改和等同物。在下文描述中闡述諸多具體細節(jié)以便提供對本發(fā)明的透徹理解。出于示例的目的而提供這些細節(jié),并且無這些具體細節(jié)中的一些或者所有細節(jié)也可以根據(jù)權(quán)利要求書實現(xiàn)本發(fā)明。
[0034]本發(fā)明的一方面提供了一種云端大數(shù)據(jù)處理方法和系統(tǒng)。根據(jù)數(shù)據(jù)實體的屬性類型,對數(shù)據(jù)實體進行進一步切分,每個子實體屬于SQL型即結(jié)構(gòu)化模型和XML型即非結(jié)構(gòu)化模型中的一種。在處理復(fù)雜數(shù)據(jù)類型時,首先在實體模式定義中標(biāo)記數(shù)據(jù)對應(yīng)屬性,然后自動轉(zhuǎn)換到對應(yīng)模塊,實現(xiàn)結(jié)構(gòu)化數(shù)據(jù)的平滑過渡。圖1是根據(jù)本發(fā)明實施例的云端大數(shù)據(jù)處理方法和系統(tǒng)流程圖。如圖1所示,實施本發(fā)明方法的具體步驟如下:
[0035]首先,定義數(shù)據(jù)層次模型,所述數(shù)據(jù)層次模型包括SQL層和XML層;
[0036]其次,在數(shù)據(jù)尋址時,使用B-樹結(jié)構(gòu)存儲XML層的索引表和數(shù)據(jù)表;
[0037]第三,映射函數(shù),將SQL層中的數(shù)據(jù)項對應(yīng)到XML層中的數(shù)據(jù)項。
[0038]在定義數(shù)據(jù)層次模型步驟中,SQL層和XML層均由表結(jié)構(gòu)來表示數(shù)據(jù);在該層次模型中,最上層的是SQL層,與SQL數(shù)據(jù)庫系統(tǒng)一樣,數(shù)據(jù)的各種屬性和聯(lián)系均用二維表表示。SQL層主要負責(zé)處理應(yīng)用給出的各種事務(wù)性的操作,以及對常見的結(jié)構(gòu)化數(shù)據(jù)的管理。
[0039]SQL表中的一個數(shù)據(jù)項和XML表中的一個數(shù)據(jù)項是一一對應(yīng)的。SQL表和XML表是η:1的關(guān)系,并且組成樹形結(jié)構(gòu);SQL層和XML層的劃分都是針對同一個實體型的數(shù)據(jù),屬于同一實體型的橫向分層。因此,在處理實體間的無論一對多,還是多對多都很方便,不需要建立冗余節(jié)點和虛擬節(jié)點,均封裝在系統(tǒng)的SQL層中,克服了縱向分層結(jié)構(gòu)的弱點。
[0040]在XML層中,數(shù)據(jù)的邏輯格式也是表,這點和SQL層一致,但是表內(nèi)部的結(jié)構(gòu)不同,XML層中的表結(jié)構(gòu)是多維的。
[0041]XML層中表的一行數(shù)據(jù),第一行是表的結(jié)構(gòu)信息。在定義表時,要定義表的列簇,列簇包含很多列,列可以動態(tài)寫入,列簇信息屬于表結(jié)構(gòu)的組成信息。行也是在進行數(shù)據(jù)插入時寫入。所以在某個表中插入一項數(shù)據(jù)時,要指定行、表中存在的列簇、以及列。每插入一個數(shù)據(jù),系統(tǒng)會產(chǎn)生一個時間戳,所以系統(tǒng)中支持的時間戳個數(shù),決定數(shù)據(jù)的副本個數(shù)。
[0042]數(shù)據(jù)表和索引表都米用水平分片的技術(shù),將一張表分為很多子表管理。索引表和數(shù)據(jù)表結(jié)構(gòu)一致,均由一個或多個不同的列簇組成。數(shù)據(jù)庫系統(tǒng)初始化時,數(shù)據(jù)量較小,都保存在一個表中,即只有一個子表。隨著數(shù)據(jù)的不斷插入,當(dāng)?shù)谝粋€子表增長到預(yù)定大小,開始分裂為兩個子表,分裂后較小的兩個子表可以繼續(xù)插入然后再分裂。依次繼續(xù),到最后,原來的表由當(dāng)前由多個分裂出的子表組成,所以當(dāng)一張表的數(shù)據(jù)量很大時,可以包含很多子表,每個子表由若干記錄行組成。
[0043]XML層中,只有數(shù)據(jù)表存儲了實際的大字段數(shù)據(jù),包括其鍵及值。其他都是索引表,二層索引表保存了數(shù)據(jù)表的地址信息以及其它元數(shù)據(jù)信息,二層索引表中每行記錄對應(yīng)一個數(shù)據(jù)表。根索引表保存了二層索引表的地址信息以及其他元數(shù)據(jù)信息,根索引表中每條記錄對應(yīng)一個二層索引表。數(shù)據(jù)尋址時,涉及到分散的多臺服務(wù)器的磁盤查詢,為了降低磁盤讀取次數(shù),使用改進的B-樹結(jié)構(gòu)存儲索引表和數(shù)據(jù)表,每個節(jié)點即為一個子表。本發(fā)明的B-樹形成過程具體包括以下步驟:
[0044](I)簡化第一層根索引節(jié)點和第二層索引節(jié)點的操作,根索引節(jié)點不分裂,永遠只有一個;
[0045](2)根據(jù)可自定義的節(jié)點大小與其文件大小而確定數(shù)據(jù)節(jié)點的合并和分裂條件,而不由B-樹的最小度數(shù)或者階數(shù)確定;
[0046](3)無論數(shù)據(jù)插入還是刪除,都在數(shù)據(jù)節(jié)點進行,樹形結(jié)構(gòu)永遠都由兩層索引節(jié)點和一層數(shù)據(jù)節(jié)點組成;
[0047](4)索引節(jié)點(包括根索引節(jié)點)的子樹個數(shù)等于索引節(jié)點的記錄項數(shù)目,而不是由B-樹的最小度數(shù)或者階數(shù)決定。
[0048](5)索引節(jié)點的記錄項數(shù)目等于可自定義的節(jié)點大小除以每行記錄大小。
[0049]如果根索引表在內(nèi)存中,每次根據(jù)鍵訪問值時,就只需兩次磁盤操作。將鍵與根索引節(jié)點中的記錄行比較,找到指向二層索引節(jié)點的指針,將相應(yīng)二層索引節(jié)點的數(shù)據(jù)讀入內(nèi)存,這是第一次磁盤讀取。然后再將鍵與二層索引節(jié)點中的記錄行比較,找到指向數(shù)據(jù)節(jié)點的指針,將相應(yīng)數(shù)據(jù)節(jié)點的數(shù)據(jù)讀入內(nèi)存,這是第二次磁盤讀取。最后在數(shù)據(jù)節(jié)點中,進行查找,就能訪問到與鍵關(guān)聯(lián)的值。改進后的B-樹不僅提高了查詢效率,而且由于其合并和分裂時,數(shù)據(jù)操作較單一,不用考慮樹的高度變化。
[0050]本發(fā)明定義了一組映射函數(shù)?.:Π....^..?.η(1彡i彡n,n為函數(shù)個數(shù))。映射函數(shù)f在用戶查詢條下,負責(zé)將SQL層中的數(shù)據(jù)項對應(yīng)到XML層中的數(shù)據(jù)項,可能數(shù)據(jù)類型或者數(shù)據(jù)結(jié)構(gòu)有差異,不同的SQL層數(shù)據(jù)項需要用不同的映射函數(shù)進行轉(zhuǎn)換,映射函數(shù)的功能決定了系統(tǒng)支持的映射種類,映射種類越完善,對XML層數(shù)據(jù)的訪問效率就越好。SQL層中的表由于關(guān)系約束,是嚴格規(guī)范化的;XML層中的表沒有SQL約束,表結(jié)構(gòu)較靈活,能存儲的字段很多,所以當(dāng)轉(zhuǎn)換成表之間的映射時,SQL表與XML表之間是多對一的映射。即SQL層中I到i_l的表的某個分量都映射到了 XML層中同一個數(shù)據(jù)子表中不同的數(shù)據(jù)項。
[0051]在設(shè)計映射函數(shù)組f時,假設(shè)定義域為X,值域為Y,有以下幾點約束條件:
[0052](I)任何不同的數(shù)據(jù)項或者NULL均表示X或Y中一個唯一元素;
[0053](2)對于任意一個元素X e X,通過f轉(zhuǎn)換,在Y中有唯一元素與其對應(yīng);
[0054](3)對于每個函數(shù)fi (I ( i彡η),他們的定義域X為SQL表中某個屬性的分量,或者直接為查詢條件。值域Y均為XML層中的表的數(shù)據(jù)。
[0055]設(shè)計好的映射函數(shù),必須很好的分析函數(shù)的定義域、值域。實踐表明,為了提高查詢效率,在設(shè)計映射函數(shù)f時,一個原則就是使XML表中的行盡量簡單,因為映射函數(shù)在執(zhí)行時會產(chǎn)生與行進行匹配的中間值,而在對XML表的查詢中,行也是一個主要的查詢條件,需要解析行。因此,設(shè)計越簡單的行越能減少查詢時間模型支持查詢、插入、刪除和修改等操作,并且對復(fù)雜數(shù)據(jù)的查詢進行了優(yōu)化。針對實體的不同屬性,本發(fā)明數(shù)據(jù)操作也有自己如下的特點。
[0056](I)通過統(tǒng)一接口控制SQL層和XML層數(shù)據(jù)的插入或者刪除。
[0057](2)數(shù)據(jù)查詢在接口中優(yōu)化為通過SQL層和XML層的查詢。
[0058](3)對SQL層和XML層的數(shù)據(jù)訪問并發(fā)進行。
[0059](4)XML層數(shù)據(jù)的讀寫并發(fā),根據(jù)時間戳進行控制。在XML層中我們定義行的約束條件,即當(dāng)行為空時,該行不能有數(shù)據(jù)。
[0060]接下來是組織好XML層的列簇及其列的個數(shù),整合SQL層和XML層的操作,保證SQL層和XML層數(shù)據(jù)的一致性和完整性。對同時包含SQL子實體和XML子實體的新模型,自定義了如下約束過程:
[0061](I)當(dāng)創(chuàng)建表時,如果不同的表有相同的聯(lián)合主鍵,則主鍵順序一致;
[0062](2)標(biāo)記與XML層中行相關(guān)的主鍵列,其余的主鍵列或者主鍵列的聯(lián)合作為步驟
(5)中列簇的列,當(dāng)SQL層中只有唯一主鍵時,自動標(biāo)記為行;
[0063](3)標(biāo)記表中的大字段屬性,如圖片或者長段文字描述等;
[0064](4)統(tǒng)計每一類型表中各個屬性列的信息,使一個schema下的各個SQL表能映射到同一個XML表中;
[0065](5)對于步驟(4)中的SQL表和XML表,如果SQL表中,除去已經(jīng)在步驟⑵中標(biāo)記的主鍵列,其余屬性均為大字段,則標(biāo)記該SQL表為大字段,然后在XML表中增加一個名為SQL表名的列簇,否則增加一個名為SQL表中標(biāo)記的屬性的列簇。
[0066](6)對映射函數(shù)的約束,當(dāng)原象為NULL時,象必為NULL。
[0067]根據(jù)這些數(shù)據(jù)約束條件,當(dāng)在進行數(shù)據(jù)操作時,尤其是對大字段數(shù)據(jù)的索引,其鍵值是根據(jù)查詢條件動態(tài)產(chǎn)生的,一次事務(wù)操作只有一個鍵,而不是一個鍵組。
[0068]下面從數(shù)據(jù)的基本讀寫訪問開始說明本發(fā)明數(shù)據(jù)存儲結(jié)構(gòu)的操作流程及具體實現(xiàn)。
[0069]在對外接口時,無論SQL層和XML層,還是SQL表和非SQL表,都是透明的,但是SQL層與XML層之間的交互,采用兩階段提交協(xié)議。應(yīng)當(dāng)注意,有大字段標(biāo)記的屬性列,新模型都處理成字節(jié)類型,有可能數(shù)據(jù)容量較大,因此在對其進行寫入時需指定輸入源,讀取時要定義好相應(yīng)的數(shù)據(jù)容器。
[0070]數(shù)據(jù)寫入:
[0071]為了保證數(shù)據(jù)的一致性,方便數(shù)據(jù)的管理,本發(fā)明向外提供統(tǒng)一的數(shù)據(jù)寫入接口。即在創(chuàng)建表時,只需指明各列的數(shù)據(jù)屬性(大字段屬性標(biāo)記或者主鍵列的行標(biāo)記),然后接口內(nèi)部封裝了對有標(biāo)記的屬性列的操作,用戶不用接觸XML型數(shù)據(jù)的定義和操作。
[0072]首先用戶通過DDL語言定義表,標(biāo)記大字段的屬性列,用行標(biāo)記相關(guān)的主鍵列,然后模型根據(jù)標(biāo)記信息和其他相關(guān)信息,自動產(chǎn)生對應(yīng)的XML表。
[0073]表定義完成后,用戶可以在表中插入數(shù)據(jù)。對于沒有大字段的表,在SQL表中寫入即可。如果只寫入有大字段屬性的列,直接調(diào)用數(shù)據(jù)寫入接口,接口內(nèi)部會轉(zhuǎn)換成對相應(yīng)XML表的寫入操作。當(dāng)在XML表中的操作完成后,在SQL表的屬性列的相應(yīng)行寫上對應(yīng)的大數(shù)據(jù)項的索引信息,只有這個分量寫入成功后才算對大字段的數(shù)據(jù)寫入操作完成。如果索引信息為NULL,則對應(yīng)的XML表數(shù)據(jù)項不能有數(shù)據(jù)。
[0074]對于同時有SQL子實體和XML子實體的數(shù)據(jù)進行插入時,可并發(fā)進行。在SQL表中寫入基本數(shù)據(jù),在XML數(shù)據(jù)庫表中寫入大字段的數(shù)據(jù)。同一個實體型的數(shù)據(jù)除主鍵或者行之外,在SQL層中和XML層中是相互獨立的。
[0075]數(shù)據(jù)讀取:
[0076]在數(shù)據(jù)讀取過程中,與以往的SQL查詢不同的是,系統(tǒng)對非結(jié)構(gòu)化的大字段數(shù)據(jù)做了查詢優(yōu)化,并且同時保留結(jié)構(gòu)化數(shù)據(jù)的查詢優(yōu)勢。對于沒有大字段的表,數(shù)據(jù)讀取與傳統(tǒng)的SQL模型一致。
[0077]如果只讀取有大字段屬性的列,直接調(diào)用數(shù)據(jù)讀取接口,在接口內(nèi)部轉(zhuǎn)換成對相應(yīng)的XML表的讀取操作。當(dāng)執(zhí)行較小數(shù)據(jù)量的查詢時,大大減少了讀取時間。
[0078]對于同時涉及到數(shù)據(jù)的SQL子實體和XML子實體的復(fù)雜查詢時,首先要分析查詢條件,以便于查詢優(yōu)化。如果查詢的SQL子實體與XML子實體的數(shù)據(jù)之間沒有嚴格的拓撲關(guān)系,可以并行查詢,否則就先在SQL層中查詢,然后通過映射函數(shù)再到XML層。
[0079]根據(jù)本發(fā)明的另一方面,提供了一種云端大數(shù)據(jù)處理系統(tǒng),用于結(jié)合結(jié)構(gòu)化SQL和非結(jié)構(gòu)化XML對大數(shù)據(jù)進行存儲和查詢,其特征在于,包括:
[0080]模型定義模塊,用于定義數(shù)據(jù)層次模型,所述數(shù)據(jù)層次模型包括SQL層和XML層;
[0081]存儲模塊,用于在在數(shù)據(jù)尋址時,使用B-樹結(jié)構(gòu)存儲XML層的索引表和數(shù)據(jù)表;
[0082]映射模塊,用于定義映射函數(shù),將SQL層中的數(shù)據(jù)項對應(yīng)到XML層中的數(shù)據(jù)項。
[0083]綜上所述,本發(fā)明改進了大數(shù)據(jù)處理方法和系統(tǒng),按實體的屬性類型進行橫向劃分,融合了兩種數(shù)據(jù)模型,使數(shù)據(jù)應(yīng)用在靈活性和擴展性之間有了較好的平衡。在處理大字段數(shù)據(jù)時,性能得到了很大的提高,在云計算大數(shù)據(jù)管理領(lǐng)域發(fā)揮更大的功能。
[0084]顯然,本領(lǐng)域的技術(shù)人員應(yīng)該理解,上述的本發(fā)明的各模塊或各步驟可以用通用的計算系統(tǒng)來實現(xiàn),它們可以集中在單個的計算系統(tǒng)上,或者分布在多個計算系統(tǒng)所組成的網(wǎng)絡(luò)上,可選地,它們可以用計算系統(tǒng)可執(zhí)行的程序代碼來實現(xiàn),從而,可以將它們存儲在存儲系統(tǒng)中由計算系統(tǒng)來執(zhí)行。這樣,本發(fā)明不限制于任何特定的硬件和軟件結(jié)合。
[0085]應(yīng)當(dāng)理解的是,本發(fā)明的上述【具體實施方式】僅僅用于示例性說明或解釋本發(fā)明的原理,而不構(gòu)成對本發(fā)明的限制。因此,在不偏離本發(fā)明的精神和范圍的情況下所做的任何修改、等同替換、改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。此外,本發(fā)明所附權(quán)利要求旨在涵蓋落入所附權(quán)利要求范圍和邊界、或者這種范圍和邊界的等同形式內(nèi)的全部變化和修改例。
【權(quán)利要求】
1.一種云端大數(shù)據(jù)處理方法,用于結(jié)合結(jié)構(gòu)化SQL和非結(jié)構(gòu)化XML對大數(shù)據(jù)進行存儲和查詢,其特征在于,包括: 定義數(shù)據(jù)層次模型,所述數(shù)據(jù)層次模型包括SQL層和XML層; 在數(shù)據(jù)尋址時,使用B-樹結(jié)構(gòu)存儲XML層的索引表和數(shù)據(jù)表; 定義映射函數(shù),將SQL層中的數(shù)據(jù)項對應(yīng)到XML層中的數(shù)據(jù)項。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述SQL層和XML層均由表結(jié)構(gòu)來表示數(shù)據(jù);在該層次模型中,SQL層位于最上層,用于處理應(yīng)用給出的各種事務(wù)性的操作,以及對結(jié)構(gòu)化數(shù)據(jù)的管理,數(shù)據(jù)的屬性和聯(lián)系均用二維表表示。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述XML層中的表結(jié)構(gòu)采用多維存儲,表第一行是表的結(jié)構(gòu)信息,在定義表時首先定義表的列簇,所述列簇包含多列,行和列在進行數(shù)據(jù)插入時寫入,在表中插入數(shù)據(jù)時,要指定行、表中存在的列簇、以及列,并產(chǎn)生一個時間戳,根據(jù)時間戳個數(shù),決定數(shù)據(jù)的副本個數(shù);XML層的數(shù)據(jù)表和索引表采用水平分片,將表劃分為子表管理,隨著數(shù)據(jù)的插入,當(dāng)子表增長到預(yù)定大小時分裂為兩個子表,每個子表由若干記錄行組成。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述SQL表中的數(shù)據(jù)項和XML表中的數(shù)據(jù)項是一一對應(yīng)的,SQL層和XML層的劃分都是針對同一個實體型的數(shù)據(jù),屬于同一實體型的橫向分層,均封裝在系統(tǒng)的SQL層中;所述XML層中,只有數(shù)據(jù)表存儲了實際的大字段數(shù)據(jù),包括鍵和值,二層索引表保存了數(shù)據(jù)表的地址信息以及元數(shù)據(jù)信息,二層索引表中每行記錄對應(yīng)于一個數(shù)據(jù)表,根索引表保存了二層索引表的地址信息以及其他元數(shù)據(jù)信息,根索引表中每條記錄對應(yīng)一個二層索引表。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述B-樹的根索引節(jié)點不被劃分,具有唯一性;根據(jù)可自定義的節(jié)點大小與其文件大小確定數(shù)據(jù)節(jié)點的合并和分裂條件;數(shù)據(jù)插入和刪除,都在數(shù)據(jù)節(jié)點進行,樹形結(jié)構(gòu)始終由兩層索引節(jié)點和一層數(shù)據(jù)節(jié)點組成;包括根索引節(jié)點在內(nèi)的索引節(jié)點的子樹個數(shù)等于索引節(jié)點的記錄項數(shù)目;索引節(jié)點的記錄項數(shù)目等于可自定義的節(jié)點大小與每行記錄大小的比值。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述映射函數(shù)根據(jù)不同的SQL層數(shù)據(jù)項而使用不同的映射函數(shù)進行轉(zhuǎn)換,當(dāng)轉(zhuǎn)換成表之間的映射時,SQL表與XML表之間是多對一的映射,即SQL層中I到1-Ι的表的某個分量都映射到了 XML層中同一個數(shù)據(jù)子表中不同的數(shù)據(jù)項,其中I < i < η,η為映射函數(shù)的個數(shù); 并且若定義域為X,值域為Y,映射函數(shù)f滿足以下約束: 6.1,任何不同的數(shù)據(jù)項或者NULL均表示X或Y中一個唯一元素; 6.2對于任意一個元素χ e X,通過f轉(zhuǎn)換,在Y中有唯一元素與其對應(yīng); 6.3對于每個函數(shù)fi (I彡i彡η),定義域X為SQL表中某個屬性的分量,或者直接為查詢條件,值域Y均為XML層中的表的數(shù)據(jù)。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述存儲和查詢操作中,用戶通過統(tǒng)一接口控制SQL層和XML層數(shù)據(jù)的插入或者刪除,數(shù)據(jù)查詢在接口中優(yōu)化為通過SQL層和XML層的查詢,并且對SQL層和XML層的數(shù)據(jù)訪問并發(fā)進行,保證SQL層和XML層數(shù)據(jù)的一致性和完整性,其中XML層數(shù)據(jù)的讀寫并發(fā)根據(jù)時間戳進行控制。
8.根據(jù)權(quán)利要求7所述的方法,其特征在于,所述SQL層和XML層數(shù)據(jù)的一致性和完整性通過以下約束過程來獲取: 8.1,當(dāng)創(chuàng)建表時,如果不同的表有相同的聯(lián)合主鍵,則主鍵順序一致; 8.2,標(biāo)記與XML層中行相關(guān)的主鍵列,其余的主鍵列或者主鍵列的聯(lián)合作為步驟8.2中列簇的列,當(dāng)SQL層中只有唯一主鍵時,自動標(biāo)記為行; 8.3,標(biāo)記表中的大字段屬性; 8.4,統(tǒng)計每一類型表中各個屬性列的信息,使一個schema下的各個SQL表映射到同一個XML表中; 8.5,對于步驟8.4中的SQL表和XML表,如果SQL表中,除去已經(jīng)在步驟8.2中標(biāo)記的主鍵列,其余屬性均為大字段,則標(biāo)記該SQL表為大字段,然后在XML表中增加一個名為SQL表名的列簇,否則增加一個名為SQL表中標(biāo)記的屬性的列簇; 8.6,對映射函數(shù)的約束,當(dāng)原象為NULL時,象必為NULL ; 并且,在進行數(shù)據(jù)操作時,其鍵值根據(jù)查詢條件動態(tài)產(chǎn)生,一次事務(wù)操作只有一個鍵。
9.一種云端大數(shù)據(jù)處理系統(tǒng),用于結(jié)合結(jié)構(gòu)化SQL和非結(jié)構(gòu)化XML對大數(shù)據(jù)進行存儲和查詢,其特征在于,包括: 模型定義模塊,用于定義數(shù)據(jù)層次模型,所述數(shù)據(jù)層次模型包括SQL層和XML層; 存儲模塊,用于在在數(shù)據(jù)尋址時,使用B-樹結(jié)構(gòu)存儲XML層的索引表和數(shù)據(jù)表; 映射模塊,用于定義映射函數(shù),將SQL層中的數(shù)據(jù)項對應(yīng)到XML層中的數(shù)據(jù)項。
【文檔編號】G06F17/30GK104133890SQ201410370225
【公開日】2014年11月5日 申請日期:2014年7月30日 優(yōu)先權(quán)日:2014年7月30日
【發(fā)明者】蒲思羽 申請人:四川中亞聯(lián)邦科技有限公司