本申請涉及數(shù)據(jù)處理技術(shù)領(lǐng)域,更具體的說是涉及關(guān)系數(shù)據(jù)庫中的關(guān)系操作。
背景技術(shù):
關(guān)系數(shù)據(jù)庫是采用關(guān)系模型作為數(shù)據(jù)組織形式的數(shù)據(jù)庫。在關(guān)系模型中,實體以及實體之間的聯(lián)系都是用關(guān)系來表示的,在用戶看來,一個關(guān)系模型的邏輯結(jié)構(gòu)就是一張二維表。在關(guān)系模型中的關(guān)系操作可以包括:選擇、投影和連接等查詢操作。其中,匹配是從兩個關(guān)系的笛卡爾積中選取屬性間滿足一定條件的元組。
在進(jìn)行匹配時,需要依次對兩個關(guān)系中的各個元組之間進(jìn)行匹配檢測,即依次檢測兩個關(guān)系中的各個元組之間是否滿足連接條件,并從兩個關(guān)系中提取出與連接條件匹配的元組集合。然而由于每個關(guān)系中元組的數(shù)量一般都較大,這樣,在匹配過程中進(jìn)行匹配檢測的數(shù)據(jù)處理量也會非常大,從而影響到數(shù)據(jù)庫系統(tǒng)性能。
技術(shù)實現(xiàn)要素:
本申請?zhí)峁┝艘环N數(shù)據(jù)處理方法和數(shù)據(jù)庫服務(wù)器,以減少匹配中的數(shù)據(jù)處理量,提高數(shù)據(jù)庫系統(tǒng)的性能。
第一方面,本申請實施例提供一種數(shù)據(jù)處理方法,該方法應(yīng)用于數(shù)據(jù)庫系統(tǒng),該數(shù)據(jù)庫系統(tǒng)包含第一數(shù)據(jù)集合和第二數(shù)據(jù)集合,該第一數(shù)據(jù)集合包括至少一個元組,該第二數(shù)據(jù)集合包括至少一個元組,該方法中從第一數(shù)據(jù)集合中獲取待處理的第一元組;在第一數(shù)據(jù)集合的檢測記錄中,檢測與第一元組具有相同目標(biāo)屬性的元組的元組信息(如整條元組或者元組的目標(biāo)屬性的信息),該檢測記錄包含所述第一數(shù)據(jù)集合中與所述第二數(shù)據(jù)集合不滿足連接條件的元組的元組信息,該目標(biāo)屬性包括該連接條件所設(shè)定的需要進(jìn)行 匹配的屬性;當(dāng)該檢測記錄中不存在與該第一元組具有相同屬性的元組的元組信息時,依據(jù)該連接條件將第一元組與所述第二數(shù)據(jù)集合進(jìn)行匹配。
由于在檢測記錄中存在與第一元組具有相同目標(biāo)屬性的元組的信息的情況下,可以確定第二數(shù)據(jù)集合中不存在與第一元組滿足連接條件的元組,從而僅僅在檢測記錄中不存在與該第一元組具有相同目標(biāo)屬性的元組的信息,再將該第一元組與該第二數(shù)據(jù)集合進(jìn)行匹配檢測,可以減少循環(huán)進(jìn)行匹配的次數(shù),減少了數(shù)據(jù)處理量,有利于提高了數(shù)據(jù)庫系統(tǒng)性能。
在一個可能的設(shè)計中,與第一元組具有相同目標(biāo)屬性的元組可以為:與該第一元組相同的元組。
在一個可能的設(shè)計中,在依據(jù)連接條件將第一元組與第二數(shù)據(jù)集合進(jìn)行匹配之后,如果第一元組與第二數(shù)據(jù)集合中的任意一個元組均不滿足連接條件,將該第一元組的元組信息存儲到檢測記錄中。
在一個可能的設(shè)計中,當(dāng)該檢測記錄中存在與第一元組具有相同目標(biāo)屬性的元組的元組信息時,結(jié)束該第一元組與第二數(shù)據(jù)集合的匹配,從而無需將該第一元組與該第二數(shù)據(jù)集合進(jìn)行匹配,減少了與第二數(shù)據(jù)集合進(jìn)行匹配的次數(shù)。
在一個可能的設(shè)計中,在從所述第一數(shù)據(jù)集合中獲取待處理的第一元組之前,還可以將第一數(shù)據(jù)集合中的元組劃分為至少一個元組集合,任一元組集合包括至少一個元組,其中任一元組集合中的全部元組的目標(biāo)屬性相同;
相應(yīng)的,獲取第一元組可以是:從所述至少一個元組集合中獲取待處理的第一元組集合,然后,從該第一元組集合中獲取第一元組。這樣,在依據(jù)連接條件將第一元組與第二數(shù)據(jù)集合進(jìn)行匹配之后,如果該第一元組與第二數(shù)據(jù)集合中的任意一個元組均不滿足連接條件時,結(jié)束該第一元組集合中所有元組與第二數(shù)據(jù)集合的匹配,有利于進(jìn)一步減少處理量。
進(jìn)一步,當(dāng)該檢測記錄中存在與該第一元組具有相同屬性的元組的元組信息時,結(jié)束該第一元組集合中所有元組與第二數(shù)據(jù)集合的匹配,從而可以減少從檢測該檢測記錄的次數(shù),也可以減少匹配次數(shù),進(jìn)而大大減少了數(shù)據(jù)處理量。
第二方面,本發(fā)明實施例提供了一種數(shù)據(jù)庫服務(wù)器,該數(shù)據(jù)庫服務(wù)器具有實現(xiàn)上述方法實際中數(shù)據(jù)庫服務(wù)器行為的功能。所述功能可以通過硬件實現(xiàn),也可以通過硬件執(zhí)行相應(yīng)的軟件實現(xiàn)。所述硬件或軟件包括一個或多個與上述功能相對應(yīng)的模塊。
在一個可能的設(shè)計中,數(shù)據(jù)庫服務(wù)器的結(jié)構(gòu)中包括處理器和存儲器,處理器被配置為執(zhí)行上述方法中相應(yīng)的功能。該存儲器被配置為存儲上述方法所涉及的第一數(shù)據(jù)集合和第二數(shù)據(jù)集合該存儲器還用于與處理器耦合,其保存數(shù)據(jù)庫服務(wù)器必要的程序指令和數(shù)據(jù)。
第三方面,本發(fā)明實施例提供了一種數(shù)據(jù)庫服務(wù)系統(tǒng),該數(shù)據(jù)庫服務(wù)器系統(tǒng)包含第一數(shù)據(jù)集合和第二數(shù)據(jù)集合,該第一數(shù)據(jù)集合包括至少一個元組,該第二數(shù)據(jù)集合包括至少一個元組,該系統(tǒng)包括,包括:獲取單元,用于從該第一數(shù)據(jù)集合中獲取待處理的第一元組;檢測單元,用于在第一數(shù)據(jù)集合的檢測記錄中,檢測與第一元組具有相同目標(biāo)屬性的元組的元組信息,檢測記錄包含第一數(shù)據(jù)集合中與第二數(shù)據(jù)集合不滿足連接條件的元組的元組信息,目標(biāo)屬性包括連接條件所設(shè)定的需要進(jìn)行匹配的屬性;匹配單元,用于當(dāng)檢測記錄中不存在與該第一元組具有相同屬性的元組的元組信息時,依據(jù)連接條件將該第一元組與第二數(shù)據(jù)集合進(jìn)行匹配。
第四方面,本發(fā)明實施例提供了一種計算機(jī)存儲介質(zhì),用于儲存為第二方面所描述的數(shù)據(jù)處理的數(shù)據(jù)庫服務(wù)器所用的計算機(jī)軟件指令,其包含用于執(zhí)行第一方面的數(shù)據(jù)處理方法所設(shè)計的程序。
本發(fā)明實施例的第二、三、四等方面和第一方面的設(shè)計思路一致,技術(shù)手段類似,技術(shù)方案帶來的具體有益效果請參考第一方面,不再贅述。
附圖說明
為了更清楚地說明本申請實施例的技術(shù)方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本申請的實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)提供的附圖獲得其他的附圖。
圖1為本申請的一種可能的應(yīng)用場景示意圖;
圖2為本申請實施例提供的一種數(shù)據(jù)處理方法一個實施例的流程示意圖;
圖3示出了本申請實施例中對屬于不同元組序列內(nèi)的元組進(jìn)行排序的示意圖;
圖4示出了本申請?zhí)峁┑囊环N數(shù)據(jù)處理方法又一個實施例的流程示意圖;
圖5示出了本申請?zhí)峁┑囊环N數(shù)據(jù)庫服務(wù)器一種可能的結(jié)構(gòu)示意圖。
具體實施方式
下面將結(jié)合本申請實施例中的附圖,對本申請實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例僅僅是本申請一部分實施例,而不是全部的實施例?;诒旧暾堉械膶嵤├?,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本申請保護(hù)的范圍。
本申請實施例的技術(shù)方案可應(yīng)用于數(shù)據(jù)庫系統(tǒng),從最終用戶角度來看,數(shù)據(jù)庫系統(tǒng)可以分為單用戶數(shù)據(jù)庫系統(tǒng)、分布式數(shù)據(jù)庫系統(tǒng)等等。
為了便于理解,以分布式數(shù)據(jù)庫系統(tǒng)為例對本申請實施例的應(yīng)用場景進(jìn)行介紹。
分布式數(shù)據(jù)庫系統(tǒng)是指數(shù)據(jù)庫中的數(shù)據(jù)在邏輯上是一個整體,但物理地分布在計算機(jī)網(wǎng)絡(luò)的不同節(jié)點(diǎn)上,如圖1所示,分布式數(shù)據(jù)庫系統(tǒng)100可以包括多個數(shù)據(jù)節(jié)點(diǎn)101,這多個數(shù)據(jù)節(jié)點(diǎn)之間可以通過網(wǎng)絡(luò)相連,網(wǎng)絡(luò)可以是互聯(lián)網(wǎng)、因特網(wǎng)協(xié)議存儲區(qū)域網(wǎng)絡(luò)(ipsan,internetprotocolstorageareanetwork)以及私有網(wǎng)絡(luò)等等。網(wǎng)絡(luò)中的每個數(shù)據(jù)節(jié)點(diǎn)可以認(rèn)為是一臺數(shù)據(jù)庫服務(wù)器,數(shù)據(jù)節(jié)點(diǎn)可以獨(dú)立處理本地數(shù)據(jù)庫中的數(shù)據(jù),執(zhí)行局部應(yīng)用;也可以同時存儲和處理多個異地數(shù)據(jù)庫中的數(shù)據(jù),執(zhí)行全局應(yīng)用。
數(shù)據(jù)節(jié)點(diǎn)101可以包括:處理器、硬盤、內(nèi)存、系統(tǒng)總線、io設(shè)備、通信模塊以及電源模塊等等。
可選的,在分布式數(shù)據(jù)庫系統(tǒng)中還可以包括客戶端102,客戶端的用戶請求(如,數(shù)據(jù)讀取請求、數(shù)據(jù)編輯請求等)被傳送到數(shù)據(jù)庫服務(wù)器,數(shù)據(jù)庫 服務(wù)器進(jìn)行處理后,只將結(jié)果(而不是全部數(shù)據(jù))返回給用戶,從而減少網(wǎng)絡(luò)上的數(shù)據(jù)傳輸量。
特別的,在本申請實施例中所述的數(shù)據(jù)庫系統(tǒng)為關(guān)系型數(shù)據(jù)庫,關(guān)系型數(shù)據(jù)庫采用關(guān)系模型作為數(shù)據(jù)組織形式的數(shù)據(jù)庫。在用戶看來,一個關(guān)系就是一個二維表,它由行和列組成。
其中,關(guān)系模型中的關(guān)系就對應(yīng)著通常所說的表;
元組,表中的一行即為一個元組;
屬性,表中一列即為一個屬性。
關(guān)系模型中的關(guān)系操作包括:選擇、投影和匹配。
其中,匹配是將兩個關(guān)系連接成為一個關(guān)系,連接的結(jié)果是一個包含原關(guān)系所有列的新關(guān)系。匹配的兩個關(guān)系對應(yīng)兩個二維表,這兩個二維表可以是兩個表,也可以是同一個表。在進(jìn)行匹配時,這兩個二維表一個可以稱為外部表、一個可以稱為內(nèi)部表,具體將哪個表作為外部表是由用戶業(yè)務(wù)確定或者是按照預(yù)設(shè)規(guī)則來確定的。
其中,外部表可以認(rèn)為匹配中的驅(qū)動表,而內(nèi)部表可以認(rèn)為是匹配的被驅(qū)動表,一旦外部表和內(nèi)部表的角色確定,則執(zhí)行匹配的規(guī)則就是:選取外部表中的一個元組分別與內(nèi)部表中的各個元組進(jìn)行匹配檢測,若,外部表中的該元組與內(nèi)部表中某個元組滿足預(yù)設(shè)的連接條件,則將這兩個元組連接為一個元組,否則,不進(jìn)行拼接;然后,從外部表中選取另一個元組來分別與內(nèi)部表中各個元組進(jìn)行匹配檢測,如此循環(huán),直至外部表中的每個元組均與內(nèi)部表進(jìn)行了匹配檢測。
下面將結(jié)合本申請上面所述的共性方面,對本申請實施例進(jìn)一步詳細(xì)的描述。
現(xiàn)有的匹配實際上都是采用循環(huán)檢測的方式,這樣,當(dāng)數(shù)據(jù)表中的元組數(shù)據(jù)較大時,循環(huán)檢測的次數(shù)就會大大增加,導(dǎo)致匹配的數(shù)據(jù)處理量較大。然而對于兩個數(shù)據(jù)表的匹配而言,外部表中可能會存在某兩個或多個元組在基于該預(yù)設(shè)的連接條件與內(nèi)部表中各個元組進(jìn)行匹配檢測時,所得到檢測結(jié)果相同,這樣,如果外部表中的每個元組均進(jìn)行匹配檢測,則會出現(xiàn)冗余檢測。
為此,本申請實施例提供了一種數(shù)據(jù)處理方法,和基于該數(shù)據(jù)處理方法的數(shù)據(jù)庫服務(wù)器。在匹配中,數(shù)據(jù)庫服務(wù)器會將從第一數(shù)據(jù)集合獲取待處理的第一元組,并在第一數(shù)據(jù)結(jié)合的檢測記錄中,檢測是否存在與該第一元組具有相同目標(biāo)屬性的元組的信息,該目標(biāo)屬性為連接條件中設(shè)定的需要進(jìn)行匹配的屬性。由于檢測記錄中記錄了第一數(shù)據(jù)集合中與該第二數(shù)據(jù)集合不滿足連接條件的元組的信息,如果該檢測記錄中存在與該第一元組具有相同屬性的元組的信息時,則說明該第一元組與第二數(shù)據(jù)集合中任意一個元組也不滿足連接條件,則無需再將第一元組與該第二數(shù)據(jù)集合進(jìn)行匹配,而只有當(dāng)該檢測記錄中不存在與該第一元組具有相同屬性的元組的信息時,才會依據(jù)連接條件將第一元組與該第二數(shù)據(jù)集合進(jìn)行匹配,從而可以減少匹配檢測的次數(shù),降低匹配的數(shù)據(jù)處理量,從而提高數(shù)據(jù)庫系統(tǒng)性能。
下面結(jié)合圖2,對本申請實施例的數(shù)據(jù)處理方法進(jìn)行介紹。該數(shù)據(jù)處理方法應(yīng)用于數(shù)據(jù)庫系統(tǒng),該數(shù)據(jù)庫系統(tǒng)包括第一數(shù)據(jù)集合和第二數(shù)據(jù)集合,其中,第一數(shù)據(jù)集合包括至少一個元組,該第二數(shù)據(jù)集合包括至少一個元組。在本實施例中,該第一數(shù)據(jù)集合可以理解為如上所述的外部表,該第二數(shù)據(jù)集合可以理解為如上所述的內(nèi)部表。
如圖2,本申請實施例可以包括:
201,從所述第一數(shù)據(jù)集合中獲取待處理的第一元組。
為了便于區(qū)分,將第一數(shù)據(jù)集合中當(dāng)前待與第二數(shù)據(jù)集合進(jìn)行匹配的元組稱為第一元組。
確定第一元組的方式可以與現(xiàn)有的方式相似,如,可以按照第一數(shù)據(jù)集合中元組的順序,依次將第一數(shù)據(jù)集合中各個元組作為待進(jìn)行匹配檢測的元組,從而確定出當(dāng)前需要與第二數(shù)據(jù)集合進(jìn)行匹配的第一元組。又如,也可以是從第一數(shù)據(jù)集合中未與第二數(shù)據(jù)集合進(jìn)行匹配的元組中隨機(jī)確定出一個元組作為第一元組。當(dāng)然,還可以有其他確定當(dāng)前元組的方式,在此不一一列舉。
202,在該第一數(shù)據(jù)集合的檢測記錄中,檢測與該第一元組具有相同目標(biāo)屬性的元組的元組信息。
其中,該檢測記錄包括該第一數(shù)據(jù)集合中與該第二數(shù)據(jù)集合不滿足連接條件的元組的信息。具體的,該檢測記錄可以包括:當(dāng)前時刻之前,從第一 數(shù)據(jù)集合中檢測出的與第二數(shù)據(jù)集合中任意一個元組均不滿足連接條件的元組的信息。其中,該檢測記錄可以存儲于數(shù)據(jù)庫系統(tǒng)中,可選的,為了提高查詢檢測記錄的效率,該檢測記錄可以緩存于內(nèi)存中。
其中,目標(biāo)屬性包括連接條件所設(shè)定的需要進(jìn)行匹配的屬性。需要說明的是,連接條件可能會規(guī)定將第一數(shù)據(jù)集合中的一個或多個屬性分別與第二數(shù)據(jù)集合中的一個或多個屬性進(jìn)行匹配,因此,該目標(biāo)屬性可以理解有一個或多個。舉例說明,第一數(shù)據(jù)集合的元組與第二數(shù)據(jù)集合中的元組進(jìn)行連接的連接條件可以為:第一數(shù)據(jù)集合中元組屬性a的值與第二數(shù)據(jù)集合中元組的屬性b的值相等,且第一數(shù)據(jù)集合中元組的屬性c的值大于第二數(shù)據(jù)集合中元組的屬性d的值。則該第一數(shù)據(jù)集合的屬性a和屬性c均屬于連接條件設(shè)定的需要進(jìn)行匹配的目標(biāo)屬性。
相應(yīng)的,與第一元組具有相同目標(biāo)屬性的元組是指對于任意一個目標(biāo)元組而言,該元組的該目標(biāo)屬性的屬性值與該第一元組中該目標(biāo)屬性的屬性值相同。仍以上面例子中目標(biāo)屬性包括屬性a和屬性c為例進(jìn)行介紹,在對檢測記錄進(jìn)行檢測時,需要檢測檢測記錄中是否存在屬性a的屬性值與第一元組的屬性a的屬性值相同,且屬性c的屬性值與第二元組的屬性c的值相同的元組。其中,檢測該檢測記錄中與第一元組具有相同目標(biāo)屬性的元組的方式可以有多種實現(xiàn)方式。
在一個示例中,可以在該第一數(shù)據(jù)集合的檢測記錄中,檢測與該第一元組相同的元組的元組信息??梢岳斫獾氖?,當(dāng)兩個元組完全相同時,這兩個元組的每個目標(biāo)屬性的屬性值也必然相同,這樣,分別依據(jù)連接條件將這兩個元組與第二數(shù)據(jù)集合進(jìn)行匹配所得到的匹配結(jié)果相同,即如果一個元組無法從第二數(shù)據(jù)集合中匹配到滿足連接條件的元組,另一個元組也無法從第二數(shù)據(jù)集合中匹配到滿足連接條件的元組。
在另一個示例中,從檢測記錄中檢測與第一元組具有相同目標(biāo)屬性的元組也可以理解為從檢測記錄中檢測與該第一元祖的目標(biāo)屬性具有相同檢測結(jié)果的元組。具體的,可以檢測該檢測記錄中,是否存在與第一元組滿足如下預(yù)設(shè)關(guān)系的元組:對于任意一個目標(biāo)屬性,當(dāng)將該第一元組的該目標(biāo)屬性作為第二數(shù)據(jù)集合中第二元組的待匹配屬性時,則該檢測記錄中存儲的元組的目標(biāo)屬性與該第二元組的待匹配屬性之間滿足該連接條件,其中,該待匹配 屬性屬于第二數(shù)據(jù)集合且為該連接條件設(shè)定的需要與該目標(biāo)屬性進(jìn)行匹配的屬性。
當(dāng)檢測記錄中存在于第一元組的目標(biāo)屬性滿足如上預(yù)設(shè)關(guān)系的元組時,則在檢測記錄中該元組從第二數(shù)據(jù)集合中匹配不到滿足連接條件的元組的情況下,該第二數(shù)據(jù)集合中也同樣不會存在與該第一元組滿足連接條件的元組。
舉例說明,連接條件為“第一數(shù)據(jù)集合表中元組的屬性a的值與第二數(shù)據(jù)集合中元組的屬性b的值相等,且第一數(shù)據(jù)集合中元組的屬性c的值大于第二數(shù)據(jù)集合中元組的屬性d的值”時,目標(biāo)屬性包括屬性a和屬性c,而第二數(shù)據(jù)集合表中需要與屬性a進(jìn)行匹配的待匹配屬性為屬性b,第二數(shù)據(jù)集合中需要與屬性c進(jìn)行匹配的待匹配屬性為屬性d。那預(yù)設(shè)關(guān)系可以為:對于屬性a而言,假設(shè)第一元組的屬性a的值為第二數(shù)據(jù)集合中的第二元組的屬性b的值,那么檢測記錄中的元組的屬性a的值需要與第一元組的屬性a的值相同;同時,對于屬性c,假設(shè)第一元組的屬性c的值為第二數(shù)據(jù)集合中屬性d的值時,那么檢測記錄中元組的屬性c的值需要大于第一元組中屬性c的值。例如,假設(shè)檢測記錄中與第一元組滿足預(yù)設(shè)關(guān)系的元組的屬性a的值為5,且屬性c的值為7;那么在第一元組的屬性a的值為5,且屬性c的值為6(或者是小于6的數(shù)值)的情況下,如果第二數(shù)據(jù)集合中不存在屬性c的值為5,且屬性d的值小于值7的元組,那么第二數(shù)據(jù)集合中表中肯定不存在屬性值為5且屬性d的值小于6元組。
需要說明的是,為了能夠?qū)Ρ葘z測記錄中的元組的目標(biāo)屬性的屬性值與第一元組中該目標(biāo)屬性的屬性值進(jìn)行比對,在該檢測記錄中存儲的元組的元組信息可以是完整一條元組,即包括元組的全部屬性以及屬性值??蛇x的,為了減少數(shù)據(jù)存儲量以及從檢測記錄中匹配元組的數(shù)據(jù)量,在檢測記錄中可以僅僅記錄元組的目標(biāo)屬性的集合。例如,目標(biāo)屬性為屬性a和屬性c,則檢測記錄可以存儲元組的屬性a的值和屬性c的值。
203,當(dāng)該檢測記錄中不存在與該第一元組具有相同屬性的元組的元組信息時,則依據(jù)該連接條件將該第一元組與該第二數(shù)據(jù)集合進(jìn)行匹配。
當(dāng)檢測記錄中不存在與第一元組具有相同目標(biāo)屬性的元組的信息時,則無法確定該第一元組是否與第一數(shù)據(jù)集合表中的元組之間滿足該連接條件, 則需要依據(jù)連接條件將第一元組與第二數(shù)據(jù)集合進(jìn)行匹配,而在該種情況下所進(jìn)行的匹配并不會造成冗余檢測。
可以理解的是,對于任意一個目標(biāo)屬性,如果該檢測記錄中某個元組的該目標(biāo)屬性均與第一元組中該目標(biāo)屬性相同,那么在已知該第二數(shù)據(jù)集合不存在與檢測記錄中該元組滿足連接條件的元組的情況下,可以確定即使將該第一元組與第二數(shù)據(jù)集合進(jìn)行匹配,同樣無法從第二數(shù)據(jù)集合中匹配與該第一元組滿足連接條件的元組。因此,當(dāng)檢測記錄中存在與第一元組具有相同目標(biāo)屬性的元組的元組信息時,還可以結(jié)束第一元組與第二數(shù)據(jù)集合所需進(jìn)行的匹配,不進(jìn)行依據(jù)連接條件將第一元組與第二數(shù)據(jù)集合進(jìn)行匹配的操作,從而減少匹配檢測的次數(shù)
可選的,在步驟202之后,本申請實施例還可以包括:當(dāng)檢測記錄中存在與第一元組具有相同目標(biāo)屬性的元組的元組信息時,則從第一數(shù)據(jù)集合內(nèi)未處理的元組中,重新確定當(dāng)前待處理的第一元組,以實現(xiàn)繼續(xù)對第一數(shù)據(jù)集合中其他未處理元組的處理。
可選的,在步驟203之后,本申請實施例還可以包括:如果檢測到該第一元組與該第二數(shù)據(jù)集合中的任意一個元組均不滿足該連接條件,則將該第一元組的元組信息存儲到該檢測記錄中。在第一元組與第一數(shù)據(jù)集合中的任意一個元組均不滿足連接條件的情況下,將該第一元組的元組信息存儲到檢測記錄中,從而可以為第一數(shù)據(jù)集合中其他元組的匹配檢測提供依據(jù),有利于減少冗余檢測。
本申請實施例中,在確定第一數(shù)據(jù)集合中當(dāng)前待處理的第一元組后,會先檢測該檢測記錄中是否存在與該第一元組具有相同目標(biāo)屬性的元組的元組信息,如果檢測記錄中存在與第一元組具有相同目標(biāo)屬性的元組的元組信息,則可以確定第二數(shù)據(jù)集合不存在與該第一元組滿足連接條件的元組,從而可以僅僅在檢測記錄中不存在與該第一元組具有相同目標(biāo)屬性的元組的信息時,再依據(jù)連接條件將該第一元組與該第二數(shù)據(jù)集合進(jìn)行匹配,進(jìn)而可以減少循環(huán)進(jìn)行匹配檢測的次數(shù),減少了數(shù)據(jù)處理量,有利于提高了數(shù)據(jù)庫系統(tǒng)性能。
可選的,在本申請實施例中,在依據(jù)連接條件對第一數(shù)據(jù)集合與第二數(shù)據(jù)集合進(jìn)行匹配之前,還可以包括:將第一數(shù)據(jù)集合中的元組劃分為至少一個元組集合,其中,任意一個元組組合中包括至少一個元組,且任意一個元組序列中不同元組的目標(biāo)屬性相同。如目標(biāo)屬性包括屬性a和屬性c,則一個元組集合內(nèi)不同元組的屬性a的值均相同,且屬性c的值均相同。
在第一數(shù)據(jù)集合中的元組被劃分為多個元組集合的情況下,從第一數(shù)據(jù)集合中獲取待處理的第一元組可以為:從至少一個元組集合中獲取待處理的第一元組集合,然后從該第一元組集合中獲取待處理的第一元組。如,按照元組集合的先后順序,從至少一個元組集合中確定當(dāng)前待處理的元組集合,或者是,從至少一個元組集合中未被處理的元組集合中隨機(jī)確定一個待處理的元組集合。相應(yīng)的,從待處理的第一元組集合中確定待處理的第一元組可以是按照該第一元組集合中各個元組的順序,確定待處理的第一元組,也可以是,從第一元組集合中未處理的元組中,確定待處理的第一元組。
可以理解是,如果元組集合中某一個元組無法從第二數(shù)據(jù)集合中匹配到滿足連接條件的元組,則該元組集合中的其他元組同樣無法從第二數(shù)據(jù)集合中匹配到滿足連接條件的元組,因此,在劃分出至少一個元組集合后,對于某個元組集合中首個進(jìn)行處理的元組而言,如果第二數(shù)據(jù)集合中不存在與該元組滿足連接條件的元組,則無需對該元組集合中的其他元組進(jìn)行匹配檢測。因此,在依據(jù)該連接條件將該第一元組集合中的第一元組與該第二數(shù)據(jù)集合進(jìn)行匹配之后,如果該第一元組與第二數(shù)據(jù)集合中的任意一個元組均不滿足該連接條件時,則無需再將第一元組集合中其他元組與該第二數(shù)據(jù)集合進(jìn)行匹配,結(jié)束該第一元組集合中所有元組與第二數(shù)據(jù)集合的匹配??蛇x的,如果該第一元組與第二數(shù)據(jù)集合中的任意一個元組均不滿足該連接條件時,結(jié)束該第一元組集合中所有元組與第二數(shù)據(jù)集合的匹配的同時,可以從至少一個數(shù)據(jù)集合中未被處理的元組集合中重新確定第一元組集合,并從重新確定的第一元組集合中確定待處理的第一元組。
相應(yīng)的,對于該元組集合中首個待處理的第一元組而言,如果檢測記錄中存在與該第一元組具有相同目標(biāo)屬性的元組的信息,則結(jié)束第一元組與第二數(shù)據(jù)集合進(jìn)行匹配的同時,也無需將該元組集合中的其他元組與第二數(shù)據(jù)集合進(jìn)行匹配,即,當(dāng)該檢測記錄中存在與該第一元組具有相同屬性的元組 的元組信息時,則結(jié)束該第一元組集合中所有元組與該第二數(shù)據(jù)集合的匹配,以進(jìn)一步減少匹配次數(shù)。同時,當(dāng)該檢測記錄中存在與該第一元組具有相同屬性的元組的元組信息時,不進(jìn)行該第一元組集合中其他元組與該第二數(shù)據(jù)集合的匹配,也減少了將該第一元組集合中的其他元組與檢測記錄中存儲的元組進(jìn)行匹配的次數(shù),可以進(jìn)一步減少數(shù)據(jù)處理量。
可選的,在該檢測記錄中存在與該第一元組具有相同屬性的元組的元組信息的情況下,在結(jié)束該第一元組集合中所有元組與該第二數(shù)據(jù)集合的匹配的同時,還可以從未處理的元組集合中重新確定待處理的第一元組集合,并從重新確定出的第一元組集合中確定待處理的第一元組。
可以理解的是,由于第一數(shù)據(jù)集合中元組的數(shù)據(jù)量可能非常巨大,因此,在劃分元組集合時,可以僅僅將第一數(shù)據(jù)集合中已經(jīng)加載到內(nèi)存中的元組劃分為至少一個元組集合,然后從內(nèi)存中包含的元組集合中確定待處理的第一元組集合,并執(zhí)行后續(xù)操作。
可選的,在劃分出多個個元組集合之后,還可以采用標(biāo)識區(qū)分出屬于不同元組集合中的元組。
在一種示例中,在劃分出n(n為大于等于1的自然數(shù))個元組序列之后,為了區(qū)分出各個元組所屬的元組集合,還可以為元組集合分配唯一的集合標(biāo)識,并為屬于同一個元組集合的元組標(biāo)識出相同的集合標(biāo)識。如,元組集合a和元組集合b,則元組集合中每個元組可以標(biāo)識有集合標(biāo)識a,而元組集合b中的元組可以標(biāo)識有集合標(biāo)識b。
在另一種示例中,將內(nèi)存中第一數(shù)據(jù)集合中的元組劃分為多個元組集合之后,為了便于分區(qū)出各個元組所屬的元組集合,可以對內(nèi)存中第一數(shù)據(jù)集合的各個元組進(jìn)行排序,將屬于同一個元組集合的元組的排序順序相鄰,然后為同一元組集合中排序最靠前的元組分配標(biāo)識1,并為該元組集合中其他元組分配標(biāo)識0。
如圖3,其示出了對各個元組按照所屬的元組集合進(jìn)行排序以及為元組集合中各個元組分配標(biāo)識的示意圖。為了便于描述,圖3中僅僅以元組具有一個屬性,且該屬性為連接條件中設(shè)定的需要進(jìn)行匹配的目標(biāo)屬性為例進(jìn)行描述,圖3箭頭左側(cè)為在排序前該第一數(shù)據(jù)集合中各元祖的順序,而箭頭右側(cè) 為排序后的該第一數(shù)據(jù)集合中各個元組的順序。由圖3可見,目標(biāo)屬性的屬性值相同的元組屬于同一個元組集合,同一個元組集合中各個元組的順序相鄰;同時,同一元組集合中排序最靠前的元組分配的標(biāo)識為1,而該元組集合中其他元組的標(biāo)識為0。這樣,后續(xù)如果該元組集合中標(biāo)識為1的元組無法從第二數(shù)據(jù)集合中匹配到滿足連接條件的元組,則可以依次序不處理排序位于該元組之后標(biāo)識為0的元組,直至檢測到該元組之后下一個標(biāo)識為1的元組后,再對該標(biāo)識為1的元組進(jìn)行處理。
為了便于理解,下面將結(jié)合更多的附圖,對本發(fā)明的實施例做進(jìn)一步說明。
以將內(nèi)存中的第一數(shù)據(jù)集合的元組劃分為至少一個元組集合,且以屬于同一個元組集合的元組的順序相鄰為例進(jìn)行介紹,如圖4,其示出了本申請一種數(shù)據(jù)處理方法又一個實施例的流程示意圖,該實施例的數(shù)據(jù)處理方法可以包括:
401,將內(nèi)存中屬于第一數(shù)據(jù)集合的元組劃分為n個元組集合,并對內(nèi)存中第一數(shù)據(jù)集合中的元組進(jìn)行排序,以將屬于相同元組集合的元組的順序相鄰。
其中,n為大于等于1的自然數(shù)。
每個元組集合中包括至少一個第一數(shù)據(jù)集合的元組,且一個第一數(shù)據(jù)集合中不同元組具有相同的目標(biāo)屬性。
402,按照元組的先后順序,確定當(dāng)前待處理的第一元組。
舉例說明,先將排序位于第一個元組作為當(dāng)前元組,后續(xù)將位于上一次處理的元組之后最近一個元組作為待處理的第一元組。例如,仍以圖3中排序后的元組為例,假設(shè)上一次處理的元組為排序處于第三行的元組1,那么當(dāng)前需要將排序處于第四行的元組2作為第一元組。
403,檢測檢測記錄中是否存在與該第一元組具有相同目標(biāo)屬性的元組的元組信息,如果是,則執(zhí)行步驟404;如果否,則執(zhí)行步驟405。
其中,檢測記錄和目標(biāo)屬性與可以參見前面實施例的相關(guān)介紹相同。
404,按照元組的先后順序,確定排序位于該第一元組之后且最近一個標(biāo)識為1的目標(biāo)元組,并將該目標(biāo)元組作為待處理的第一元組,并返回403。
可以理解的是,如果當(dāng)前處理的元組的標(biāo)識為1,則說明該元組為所屬的元組集合中首個進(jìn)行處理的元組,在該種情況下,無法確定檢測檢測記錄中是否存在與該元組具有相同目標(biāo)屬性元組,因此,在獲取到待處理的標(biāo)識為1的元組之后,需要返回執(zhí)行步驟403。
同時,如果該檢測記錄中存在與該第一元組具有相同目標(biāo)屬性的元組,則無需對該第一元組所屬的元組集合中的其他元組進(jìn)行處理,結(jié)束對該第一元組所屬的元組集合中其他元組與第二數(shù)據(jù)集合的匹配。同時,可以從位于該第一元組之后的其他元組集合中確定需要處理的元組,即,將當(dāng)前元組之后最近一個標(biāo)識為1的元組確定為待處理的元組。
405,將該第一元組與第二數(shù)據(jù)集合進(jìn)行匹配檢測,返回402,直至內(nèi)存中不存在需要被處理的元組。
可以理解的是,在步驟405之后,如果檢測到該第一元組與第二數(shù)據(jù)集合中的任意一個元組之間均不滿足連接條件,同樣可以將該第一元組的元組信息存儲到該檢測記錄中。
可以理解的是,當(dāng)?shù)谝粩?shù)據(jù)集合中具有相同目標(biāo)屬性的元組較多時,采用本申請實施例的方法可以很明顯的減少數(shù)據(jù)處理量,相反的當(dāng)?shù)谝粩?shù)據(jù)集合中具有相同目標(biāo)屬性的元組較少,采用本申請實施例的數(shù)據(jù)處理方法進(jìn)行匹配處理的過程中,可能不能明顯體現(xiàn)出本申請實施例方法的優(yōu)勢。因此,可選的,在將第一數(shù)據(jù)集合與第二數(shù)據(jù)集合進(jìn)行匹配之前,可以先確定該第一數(shù)據(jù)集合中目標(biāo)屬性的屬性值與該第一數(shù)據(jù)集合中其他元組均不相同的元組,并統(tǒng)計這類元組的總數(shù)量,如果該類元組的總數(shù)量與第一數(shù)據(jù)集合中元組的總數(shù)量的比值小于預(yù)設(shè)閾值,則按照本申請實施例的方法將第一數(shù)據(jù)集合中的元組與第二數(shù)據(jù)集合進(jìn)行匹配;反之,則可以按照現(xiàn)有的其他方式來將第一數(shù)據(jù)集合中的元組與第二數(shù)據(jù)集合進(jìn)行匹配。
圖5示出了上述實施例中所涉及的數(shù)據(jù)庫服務(wù)器的一種可能的結(jié)構(gòu)示意圖。
該數(shù)據(jù)庫服務(wù)器500包括:存儲器501和處理器502。
存儲器501,用于存儲第一數(shù)據(jù)集合和第二數(shù)據(jù)集合,所述第一數(shù)據(jù)集合包括至少一個元組,所述第二數(shù)據(jù)集合包括至少一個元組;
處理器502,用于從所述第一數(shù)據(jù)集合中獲取待處理的第一元組;在所述第一數(shù)據(jù)集合的檢測記錄中,檢測與所述第一元組具有相同目標(biāo)屬性的元組的元組信息,所述檢測記錄包含所述第一數(shù)據(jù)集合中與所述第二數(shù)據(jù)集合不滿足連接條件的元組的信息,所述目標(biāo)屬性包括所述連接條件所設(shè)定的需要進(jìn)行匹配的屬性;當(dāng)所述檢測記錄中不存在與所述第一元組具有相同屬性的元組的元組信息時,依據(jù)所述連接條件將所述第一元組與所述第二數(shù)據(jù)集合進(jìn)行所述匹配。
當(dāng)然,該存儲器還可以用于存儲該處理器執(zhí)行以上操作的程序代碼和數(shù)據(jù)。
可選的,該數(shù)據(jù)庫服務(wù)器還可以包括:內(nèi)存503,用于存儲該第一數(shù)據(jù)集合的檢測記錄。
可以理解的是,圖5僅僅示出了數(shù)據(jù)庫服務(wù)器的簡化設(shè)計。在實際應(yīng)用中,數(shù)據(jù)庫服務(wù)器500還可以包括通信總線504,其中,內(nèi)存、處理器等可以通過通信總線相連。
該數(shù)據(jù)庫服務(wù)器還可以包含任意數(shù)量的控制器,通信單元等等,而所有可以實現(xiàn)本發(fā)明的數(shù)據(jù)庫服務(wù)器都在本申請的保護(hù)范圍之內(nèi)
可選的,所述處理器在所述第一數(shù)據(jù)集合的檢測記錄中,檢測與所述第一元組具有相同目標(biāo)屬性的元組的元組信息,具體為:在所述第一數(shù)據(jù)集合的檢測記錄中,檢測與所述第一元組相同的元組的元組信息。
可選的,所述處理器還用于,在依據(jù)所述連接條件將所述第一元組與所述第二數(shù)據(jù)集合進(jìn)行所述匹配之后,當(dāng)所述第一元組與所述第二數(shù)據(jù)集合中的任意一個元組均不滿足所述連接條件,將所述第一元組的元組信息存儲到所述檢測記錄中。
可選的,所述處理器還用于,當(dāng)所述檢測記錄中存在與所述第一元組具有相同目標(biāo)屬性的元組的元組信息時,結(jié)束所述第一元組與第二數(shù)據(jù)集合的所述匹配。
可選的,所述處理器還用于,在從所述第一數(shù)據(jù)集合中獲取待處理的第一元組之前,將所述第一數(shù)據(jù)集合中的元組劃分為至少一個元組集合,任一 元組集合包括至少一個元組,所述任一元組集合中的全部元組的所述目標(biāo)屬性相同;
則,所述處理器從所述第一數(shù)據(jù)集合中獲取待處理的第一元組,具體為:
從所述至少一個元組集合中獲取待處理的第一元組集合;
從所述第一元組集合中獲取第一元組;
則,所述處理器,還用于,在依據(jù)所述連接條件將所述第一元組與所述第二數(shù)據(jù)集合進(jìn)行匹配之后,當(dāng)所述第一元組與所述第二數(shù)據(jù)集合中的任意一個元組均不滿足所述連接條件時,則結(jié)束所述第一元組集合中所有元組與所述第二數(shù)據(jù)集合的所述匹配。
可選的,所述處理器還用于,當(dāng)所述檢測記錄中存在與所述第一元組具有相同屬性的元組的元組信息時,則結(jié)束所述第一元組集合中所有元組與所述第二數(shù)據(jù)集合的所述匹配。
本說明書中各個實施例采用遞進(jìn)的方式描述,每個實施例重點(diǎn)說明的都是與其他實施例的不同之處,各個實施例之間相同相似部分互相參見即可。對于實施例公開的裝置而言,由于其與實施例公開的方法相對應(yīng),所以描述的比較簡單,相關(guān)之處參見方法部分說明即可。
對所公開的實施例的上述說明,使本領(lǐng)域?qū)I(yè)技術(shù)人員能夠?qū)崿F(xiàn)或使用本申請。對這些實施例的多種修改對本領(lǐng)域的專業(yè)技術(shù)人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本申請的精神或范圍的情況下,在其它實施例中實現(xiàn)。因此,本申請將不會被限制于本文所示的這些實施例,而是要符合與本文所公開的原理和新穎特點(diǎn)相一致的最寬的范圍。