一種連接查詢方法及裝置制造方法
【專(zhuān)利摘要】本發(fā)明公開(kāi)了一種連接查詢方法及裝置,包括:為至少兩個(gè)子查詢結(jié)果的每個(gè)行記錄中的字段值,建立與字段名的映射關(guān)系,獲得與所述至少兩個(gè)子查詢結(jié)果相應(yīng)的至少兩個(gè)行記錄集合;獲取至少兩個(gè)行記錄集合分別對(duì)應(yīng)的關(guān)聯(lián)字段名;針對(duì)至少兩個(gè)行記錄集合中的每個(gè)行記錄,分別根據(jù)行記錄所在行記錄集合對(duì)應(yīng)的關(guān)聯(lián)字段名有映射關(guān)系的字段值,生成行記錄的屬性值;對(duì)至少兩個(gè)行記錄集合進(jìn)行比較,判斷是否有屬性值相等的行記錄;如果有屬性值相等的行記錄,將屬性值相等的行記錄拼接為一行記錄,加入合并行記錄集合;實(shí)現(xiàn)了在對(duì)子查詢結(jié)果進(jìn)行比較及合并時(shí)無(wú)特定格式要求,提高方案的擴(kuò)展性的目的。
【專(zhuān)利說(shuō)明】一種連接查詢方法及裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)庫(kù)查詢領(lǐng)域,特別涉及一種連接查詢方法及裝置。
【背景技術(shù)】
[0002]在關(guān)系型數(shù)據(jù)庫(kù)應(yīng)用中,使用連接查詢指令進(jìn)行查詢,可以將有關(guān)聯(lián)的多張表中,關(guān)聯(lián)字段的字段值相同的行連接起來(lái),合并為一個(gè)結(jié)果輸出。由于連接查詢指令的一次查詢是針對(duì)多張表進(jìn)行的,如果其中一張或多張表的數(shù)據(jù)量比較多時(shí),查詢的速度會(huì)非常慢。
[0003]為了解決這一問(wèn)題,有些方案提出將連接查詢分為多個(gè)子查詢,以降低一次查詢的數(shù)據(jù)量,提高查詢速度。由于返回的子查詢結(jié)果為表結(jié)構(gòu),特定含義的字段值被放在由特定含義的字段名統(tǒng)領(lǐng)的列中,對(duì)子查詢結(jié)果中屬于關(guān)聯(lián)字段的字段值的操作,需要通過(guò)對(duì)關(guān)聯(lián)字段所在列的操作實(shí)現(xiàn),因此,為了便于將多個(gè)子查詢結(jié)果中關(guān)聯(lián)字段的字段值進(jìn)行比較,這些方案對(duì)子查詢結(jié)果的格式有特定要求,要求各個(gè)子查詢結(jié)果中的關(guān)聯(lián)字段的字段值被調(diào)整在固定列,通過(guò)對(duì)這些子查詢的結(jié)果的固定列中的字段值進(jìn)行比較,將固定列中字段值相同的行記錄合并,實(shí)現(xiàn)獲得連接查詢的結(jié)果的目的。
[0004]可見(jiàn),由于這些方案對(duì)子查詢結(jié)果存在特定格式要求,需要根據(jù)固定列中的字段值進(jìn)行比較及合并,導(dǎo)致方案的擴(kuò)展性較差。
【發(fā)明內(nèi)容】
[0005]有鑒于此,本發(fā)明的主要目的在于提供一種連接查詢方法及裝置以實(shí)現(xiàn)在對(duì)子查詢結(jié)果進(jìn)行比較及合并時(shí)無(wú)特定格式要求,進(jìn)而提高方案的擴(kuò)展性的目的。
[0006]在本發(fā)明實(shí)施例的一個(gè)方面,提供了一種連接查詢方法,該方法包括:
[0007]為至少兩個(gè)子查詢結(jié)果的每個(gè)行記錄中的字段值,建立與字段名的映射關(guān)系,獲得與所述至少兩個(gè)子查詢結(jié)果相應(yīng)的至少兩個(gè)行記錄集合;
[0008]獲取所述至少兩個(gè)行記錄集合分別對(duì)應(yīng)的關(guān)聯(lián)字段名;
[0009]針對(duì)所述至少兩個(gè)行記錄集合中的每個(gè)行記錄,分別根據(jù)行記錄所在行記錄集合對(duì)應(yīng)的關(guān)聯(lián)字段名有映射關(guān)系的字段值,生成行記錄的屬性值;
[0010]對(duì)所述至少兩個(gè)行記錄集合進(jìn)行比較,判斷是否有屬性值相等的行記錄;
[0011]如果有屬性值相等的行記錄,將屬性值相等的行記錄拼接為一行記錄,加入合并行記錄集合;
[0012]如果還有屬性值相等的行記錄,返回到將屬性值相等的行記錄拼接為一行記錄的步驟;
[0013]如果沒(méi)有,返回獲得的合并行記錄集合。
[0014]在本發(fā)明實(shí)施例的另一個(gè)方面,提供了一種連接查詢裝置,該裝置包括:
[0015]子查詢單元:用于為至少兩個(gè)子查詢結(jié)果的每個(gè)行記錄中的字段值,建立與字段名的映射關(guān)系,獲得與所述至少兩個(gè)子查詢結(jié)果相應(yīng)的至少兩個(gè)行記錄集合;
[0016]獲取關(guān)聯(lián)字段單元:用于獲取所述至少兩個(gè)行記錄集合分別對(duì)應(yīng)的關(guān)聯(lián)字段名;
[0017]屬性生成單元:用于針對(duì)所述至少兩個(gè)行記錄集合中的每個(gè)行記錄,分別根據(jù)行記錄所在行記錄集合對(duì)應(yīng)的關(guān)聯(lián)字段名有映射關(guān)系的字段值,生成行記錄的屬性值;
[0018]比較單元:用于對(duì)所述至少兩個(gè)行記錄集合進(jìn)行比較,判斷是否有屬性值相等的行記錄;
[0019]合并單元:用于如果有屬性值相等的行記錄,將屬性值相等的行記錄拼接為一行記錄,加入合并行記錄集合,判斷是否還有屬性值相等的行記錄,如果有,觸發(fā)合并單元重新執(zhí)行,如果沒(méi)有,觸發(fā)返回單元執(zhí)行;
[0020]返回單元:用于返回獲得的合并行記錄集合。
[0021]可見(jiàn)本發(fā)明具有如下有益效果:
[0022]在本發(fā)明中,由于為至少兩個(gè)子查詢結(jié)果的每個(gè)行記錄中的字段值均建立了與字段名的映射關(guān)系,因此,所獲得的與至少兩個(gè)子查詢結(jié)果相應(yīng)的至少兩個(gè)行記錄集合中的每個(gè)行記錄都是字段值與字段名有映射關(guān)系的獨(dú)立的記錄,不存在固定的數(shù)據(jù)結(jié)構(gòu),為了能夠?qū)蓚€(gè)行記錄集合進(jìn)行連接,又獲取指定的每個(gè)行記錄集合各自對(duì)應(yīng)的關(guān)聯(lián)字段名,針對(duì)每個(gè)行記錄集合中的每個(gè)行記錄,分別根據(jù)行記錄所在行記錄集合對(duì)應(yīng)的關(guān)聯(lián)字段名有映射關(guān)系的字段值,即關(guān)聯(lián)字段的字段值,生成每個(gè)行記錄的屬性值,因此,在進(jìn)行比較及合并時(shí),不存在特定格式要求,對(duì)于每個(gè)行記錄來(lái)說(shuō),如果與關(guān)聯(lián)字段名有映射關(guān)系的字段值相同,則行記錄的屬性值也相同,可以直接根據(jù)與關(guān)聯(lián)字段名有映射關(guān)系的字段值所確定的行記錄的屬性值,對(duì)至少兩個(gè)行記錄集合中的行記錄進(jìn)行比較,將屬性值相等的行記錄進(jìn)行連接,而且,所返回的合并行記錄集合中的行記錄,同樣均為字段值與字段名有映射關(guān)系的獨(dú)立記錄,可以按照實(shí)際需要靈活指定最終合并行記錄集合輸出的格式,具有較強(qiáng)的擴(kuò)展性。
【專(zhuān)利附圖】
【附圖說(shuō)明】
[0023]為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0024]圖1是根據(jù)本發(fā)明實(shí)施例的一種連接查詢方法的流程示意圖之一;
[0025]圖2是根據(jù)本發(fā)明實(shí)施例的一種連接查詢方法的流程示意圖之二 ;
[0026]圖3是根據(jù)本發(fā)明實(shí)施例的一種連接查詢方法的流程示意圖之三;
[0027]圖4是根據(jù)本發(fā)明實(shí)施例的一種連接查詢裝置的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0028]為使本發(fā)明的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖和【具體實(shí)施方式】對(duì)本發(fā)明實(shí)施例作進(jìn)一步詳細(xì)的說(shuō)明。
[0029]本發(fā)明實(shí)施例的連接查詢方法,適用于關(guān)系型數(shù)據(jù)庫(kù)的連接查詢。下面,首先對(duì)關(guān)系型數(shù)據(jù)庫(kù)進(jìn)行簡(jiǎn)單介紹:
[0030]在關(guān)系型數(shù)據(jù)庫(kù)中,可以包含多個(gè)表,每個(gè)表中包含若干行記錄,每行記錄中包含若干字段值,特定含義的字段值放在由該特定含義的字段名統(tǒng)領(lǐng)的固定列中。表與表之間的關(guān)系,通過(guò)關(guān)聯(lián)字段建立,例如,在某一關(guān)系型數(shù)據(jù)庫(kù)中包含如下表一、表二和表三,表一、表二及表三的關(guān)系通過(guò)屬于關(guān)聯(lián)字段的字段名2A、字段名2B、字段名2C對(duì)應(yīng)的相同字段值建立:
[0031]表一:
[0032]
【權(quán)利要求】
1.一種連接查詢方法,其特征在于,包括: 為至少兩個(gè)子查詢結(jié)果的每個(gè)行記錄中的字段值,建立與字段名的映射關(guān)系,獲得與所述至少兩個(gè)子查詢結(jié)果相應(yīng)的至少兩個(gè)行記錄集合; 獲取所述至少兩個(gè)行記錄集合分別對(duì)應(yīng)的關(guān)聯(lián)字段名; 針對(duì)所述至少兩個(gè)行記錄集合中的每個(gè)行記錄,分別根據(jù)行記錄所在行記錄集合對(duì)應(yīng)的關(guān)聯(lián)字段名有映射關(guān)系的字段值,生成行記錄的屬性值; 對(duì)所述至少兩個(gè)行記錄集合進(jìn)行比較,判斷是否有屬性值相等的行記錄; 如果有屬性值相等的行記錄,將屬性值相等的行記錄拼接為一行記錄,加入合并行記錄集合; 如果還有屬性值相等的行記錄,返回到將屬性值相等的行記錄拼接為一行記錄的步驟; 如果沒(méi)有,返回獲得的合并行記錄集合。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,還包括通過(guò)以下步驟獲得所述至少兩個(gè)子查詢結(jié)果: 獲得需返回的字段名及查詢條件; 根據(jù)預(yù)先保存的信息配置表,查詢需返回的字段名對(duì)應(yīng)的表名、該表名對(duì)應(yīng)的連接屬性,其中,所述預(yù)先保存的信息配置表用于記錄字段名,與字段名對(duì)應(yīng)的表名,與表名對(duì)應(yīng)的連接屬性、其中,按照預(yù)設(shè)的關(guān)聯(lián)條件,至少存在兩個(gè)互相不關(guān)聯(lián)的連接屬性; 按照互相關(guān)聯(lián)的為一組、不關(guān)聯(lián)的各自為單獨(dú)一組的方式,將查詢出的連接屬性進(jìn)行分組、且將需返回的字段名、及查詢條件分到與之對(duì)應(yīng)的連接屬性的組中,獲得與連接屬性對(duì)應(yīng)的至少兩個(gè)查詢組; 針對(duì)每個(gè)查詢組,根據(jù)查詢指令生成規(guī)則,對(duì)應(yīng)該查詢組生成至少一條子查詢指令; 執(zhí)行所述子查詢指令,獲得子查詢結(jié)果。
3.根據(jù)權(quán)利要求2所述的方法,其中所述根據(jù)查詢指令生成規(guī)則,對(duì)應(yīng)該查詢組生成至少一條子查詢指令包括: 根據(jù)單表查詢的查詢指令生成規(guī)則,對(duì)應(yīng)該查詢組中的每個(gè)表名,各生成一條子查詢指令; 其中,所述單表查詢的查詢指令生成規(guī)則包括:該查詢組中對(duì)應(yīng)該表名的字段名作為該條子查詢指令的被查詢字段、且該查詢組中對(duì)應(yīng)該表名的字段名的查詢條件作為該條子查詢指令的查詢條件,該表名為被查詢的表。
4.根據(jù)權(quán)利要求2所述的方法,其特征在于,其中所述根據(jù)查詢指令生成規(guī)則,對(duì)應(yīng)該查詢組生成至少一條子查詢指令包括: 如果該查詢組包含多個(gè)表名,根據(jù)多表查詢指令生成規(guī)則生成一條子查詢指令,如果該查詢組包含一個(gè)表名,根據(jù)單表查詢指令生成規(guī)則生成一條子查詢指令; 其中,所述多表查詢的查詢指令生成規(guī)則包括:該查詢組包含的字段名,作為該條子查詢指令的被查詢字段;該查詢組包含的查詢條件,作為該條子查詢指令的查詢條件;該查詢組包含的表名,作為該條子查詢指令的被連接的表;該查詢組包含的、且與該查詢組對(duì)應(yīng)的連接屬性對(duì)應(yīng)的、且屬于關(guān)聯(lián)字段的字段名,作為該條子查詢指令的被連接的表的關(guān)聯(lián)字段,其中,屬于關(guān)聯(lián)字段的字段名在信息配置表中有特定屬性; 所述單表查詢的查詢指令生成規(guī)則包括:該查詢組包含的字段名,作為該條子查詢指令的被查詢字段;該查詢組包含的查詢條件,作為該條子查詢指令的查詢條件;該查詢組包含的表名,作為該條子查詢指令的被查詢的表。
5.根據(jù)權(quán)利要求2所述的方法,其特征在于,針對(duì)每個(gè)查詢組,在所述根據(jù)查詢指令生成規(guī)則,對(duì)應(yīng)該查詢組生成至少一條子查詢指令之前,還包括: 判斷該查詢組是否與緩存系統(tǒng)中的歷史查詢組相匹配,匹配條件為該查詢組對(duì)應(yīng)的連接屬性與該歷史查詢組對(duì)應(yīng)的連接屬性互相關(guān)聯(lián)、且該查詢組包含的查詢條件與該歷史查詢組包含的查詢條件相同、且該查詢組包含的字段名為該歷史查詢組包含的字段名的子集; 如果匹配,從所述緩存系統(tǒng)中取出與該查詢組匹配的歷史查詢組對(duì)應(yīng)的行記錄集合中與需返回的字段名有映射關(guān)系的字段值的集合,作為該查詢組對(duì)應(yīng)的行記錄集合,進(jìn)入所述獲取至少兩個(gè)行記錄集合分別對(duì)應(yīng)的關(guān)聯(lián)字段名的步驟; 如果不匹配,進(jìn)入根據(jù)查詢指令生成規(guī)則,對(duì)應(yīng)該查詢組生成至少一條子查詢指令的步驟,且將生成該子查詢指令的查詢組與執(zhí)行該子查詢指令之后相應(yīng)獲得的行記錄集合對(duì)應(yīng),并將該查詢組對(duì)應(yīng)的行記錄集合保存于所述緩存系統(tǒng)。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述如果匹配,從所述緩存系統(tǒng)中取出與該查詢組匹配的歷史查詢組對(duì)應(yīng)的行記錄集合的具體實(shí)現(xiàn)為: 如果匹配,且該歷史查詢組的緩存期限未過(guò)期,從所述緩存系統(tǒng)中取出該歷史查詢組對(duì)應(yīng)的行記錄集合中與需返回的字段名有映射關(guān)系的字段值的集合,作為該查詢組對(duì)應(yīng)的行記錄集合,進(jìn)入所述獲取至少兩個(gè)行記錄集合分別對(duì)應(yīng)的關(guān)聯(lián)字段名的步驟; 如果匹配,且該歷史查詢組的緩存期限已過(guò)期,進(jìn)入根據(jù)查詢指令生成規(guī)則,對(duì)應(yīng)該查詢組生成至少一條子查詢指令的步驟,且將生成該子查詢指令的查詢組與執(zhí)行該子查詢指令之后相應(yīng)獲得的行記錄集合對(duì)應(yīng),并將該查詢組對(duì)應(yīng)的行記錄集合保存于所述緩存系統(tǒng)。
7.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述獲取至少兩個(gè)行記錄集合分別對(duì)應(yīng)的關(guān)聯(lián)字段名的具體實(shí)現(xiàn)為: 根據(jù)生成該子查詢指令的查詢組、及執(zhí)行該子查詢指令之后相應(yīng)獲得的行記錄集合,確定每個(gè)行記錄集合對(duì)應(yīng)的查詢組; 針對(duì)每個(gè)行記錄集合對(duì)應(yīng)的查詢組,查詢出信息配置表中,與該查詢組對(duì)應(yīng)的連接屬性對(duì)應(yīng)、且與該查詢組包含的表名對(duì)應(yīng)、屬于關(guān)聯(lián)字段的字段名,以該屬于關(guān)聯(lián)字段的字段名作為該行記錄集合對(duì)應(yīng)的關(guān)聯(lián)字段名,其中,屬于關(guān)聯(lián)字段的字段名在信息配置表中有特定屬性。
8.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述需返回的字段名及查詢條件從客戶端獲??; 所述返回獲得的合并行記錄集合具體將所述獲得的合并行記錄集合返回到所述客戶端。
9.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述獲得至少兩個(gè)查詢組之后,還包括:為每個(gè)查詢組各分配一個(gè)線程,所述線程用于執(zhí)行所述獲得該查詢組對(duì)應(yīng)的行記錄集合之前的任意步驟,所述線程之間為并行執(zhí)行。
10.根據(jù)權(quán)利要求9所述的方法,其特征在于, 所述線程一次讀取表中的所有數(shù)據(jù)后,執(zhí)行子查詢指令進(jìn)行查詢; 或者, 所述線程分次讀取表中的預(yù)設(shè)數(shù)量行記錄,逐次執(zhí)行子查詢指令進(jìn)行查詢。
11.根據(jù)權(quán)利要求2所述的方法,其特征在于,在所述根據(jù)查詢指令生成規(guī)則,對(duì)應(yīng)一個(gè)查詢組生成至少一條子查詢指令時(shí),還將行記錄數(shù)量之閾值作為子查詢指令中用于限制返回行數(shù)的參數(shù)。
12.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述預(yù)設(shè)的關(guān)聯(lián)條件為連接屬性相同,所述互相不關(guān)聯(lián)的連接屬性為不相同的連接屬性,所述互相關(guān)聯(lián)的連接屬性為相同的連接屬性。
13.根據(jù)權(quán)利要求1所述的方法,其特征在于,還包括: 獲取所述至少兩個(gè)行記錄集合各自的權(quán)重; 按照權(quán)重大小,排序所述至少兩個(gè)行記錄集合的位置; 所述如果有屬性值相等的行記錄,將屬性值相等的行記錄拼接為一行記錄,加入合并行記錄集合包括: 如果有屬性值相等的行記錄,將在非第一位置的行記錄集合中的所述屬性值相等的行記錄,按排序順序拼接在第一位置的行記錄集合中所述屬性值相等的行記錄的行尾成為一行,加入合并行記錄集合。
14.根據(jù)權(quán)利要求1或13所述的方法,其特征在于,還包括: 如果所述至少兩個(gè)行記錄集合存在屬性值不相等的行記錄,將屬性值不相等的行記錄,作為新行記錄插入到合并行記錄集合的結(jié)尾。
15.根據(jù)權(quán)利要求13所述的方法,其特征在于,所述信息配置表中的連接屬性具有權(quán)重,互相關(guān)聯(lián)的連接屬性具有相同的權(quán)重; 所述獲取所述至少兩個(gè)行記錄集合各自的權(quán)重包括: 從所述至少兩個(gè)行記錄集合各自對(duì)應(yīng)的連接屬性中,提取出各自的權(quán)重。
16.一種連接查詢裝置,其特征在于,包括: 子查詢單元:用于為至少兩個(gè)子查詢結(jié)果的每個(gè)行記錄中的字段值,建立與字段名的映射關(guān)系,獲得與所述至少兩個(gè)子查詢結(jié)果相應(yīng)的至少兩個(gè)行記錄集合; 獲取關(guān)聯(lián)字段單元:用于獲取所述至少兩個(gè)行記錄集合分別對(duì)應(yīng)的關(guān)聯(lián)字段名;屬性生成單元:用于針對(duì)所述至少兩個(gè)行記錄集合中的每個(gè)行記錄,分別根據(jù)行記錄所在行記錄集合對(duì)應(yīng)的關(guān)聯(lián)字段名有映射關(guān)系的字段值,生成行記錄的屬性值; 比較單元:用于對(duì)所述至少兩個(gè)行記錄集合進(jìn)行比較,判斷是否有屬性值相等的行記錄; 合并單元:用于如果有屬性值相等的行記錄,將屬性值相等的行記錄拼接為一行記錄,加入合并行記錄集合,判斷是否還有屬性值相等的行記錄,如果有,觸發(fā)合并單元重新執(zhí)行,如果沒(méi)有,觸發(fā)返回單元執(zhí)行; 返回單元:用于返回獲得的合并行記錄集合。
17.根據(jù)權(quán)利要求16所述的裝置,其特征在于,還包括: 獲取輸入單元:用于獲得需返回的字段名及查詢條件; 配置查詢單元:用于根據(jù)預(yù)先保存的信息配置表,查詢需返回的字段名對(duì)應(yīng)的表名、該表名對(duì)應(yīng)的連接屬性,其中,所述預(yù)先保存的信息配置表用于記錄字段名,與字段名對(duì)應(yīng)的表名,與表名對(duì)應(yīng)的連接屬性、其中,按照預(yù)設(shè)的關(guān)聯(lián)條件,至少存在兩個(gè)互相不關(guān)聯(lián)的連接屬性; 分組單元:用于按照互相關(guān)聯(lián)的為一組、不關(guān)聯(lián)的各自為單獨(dú)一組的方式,將查詢出的連接屬性進(jìn)行分組、且將需返回的字段名、及查詢條件分到與之對(duì)應(yīng)的連接屬性的組中,獲得與連接屬性對(duì)應(yīng)的至少兩個(gè)查詢組; 子查詢生成單元:用于針對(duì)每個(gè)查詢組,根據(jù)查詢指令生成規(guī)則,對(duì)應(yīng)該查詢組生成至少一條子查詢指令;執(zhí)行所述子查詢指令,獲得子查詢結(jié)果。
18.根據(jù)權(quán)利要求17所述的裝置,其特征在于,所述子查詢生成單元:用于針對(duì)每個(gè)查詢組,根據(jù)單表查詢的查詢指令生成規(guī)則,對(duì)應(yīng)該查詢組中的每個(gè)表名,各生成一條子查詢指令;其中,所述單表查詢的查詢指令生成規(guī)則包括:該查詢組中對(duì)應(yīng)該表名的字段名作為該條子查詢指令的被查詢字段、且該查詢組中對(duì)應(yīng)該表名的字段名的查詢條件作為該條子查詢指令的查詢條件,該表名為被查詢的表。
19.根據(jù)權(quán)利要求17所述的裝置,其特征在于,所述子查詢生成單元:用于針對(duì)每個(gè)查詢組,如果該查詢組包含多個(gè)表名,根據(jù)多表查詢指令生成規(guī)則生成一條子查詢指令,如果該查詢組包含一個(gè)表名,根據(jù)單表查詢指令生成規(guī)則生成一條子查詢指令;其中,所述多表查詢的查詢指令生成規(guī)則包括:該查詢組包含的字段名,作為該條子查詢指令的被查詢字段;該查詢組包含的查詢條件,作為該條子查詢指令的查詢條件;該查詢組包含的表名,作為該條子查詢指令的被連接的表;該查詢組包含的、且與該查詢組對(duì)應(yīng)的連接屬性對(duì)應(yīng)的、且屬于關(guān)聯(lián)字段的字段名,作為該條子查詢指令的被連接的表的關(guān)聯(lián)字段,其中,屬于關(guān)聯(lián)字段的字段名在信息配置表中有特定屬性;所述單表查詢的查詢指令生成規(guī)則包括:該查詢組包含的字段名,作為該條子查詢指令的被查詢字段;該查詢組包含的查詢條件,作為該條子查詢指令的查詢條件;該查詢組包含的表名,作為該條子查詢指令的被查詢的表。
20.根據(jù)權(quán)利要求17所述的裝置,其中所述子查詢生成單元:還用于針對(duì)每個(gè)查詢組,在所述根據(jù)查詢指令生成規(guī)則,對(duì)應(yīng)該查詢組生成至少一條子查詢指令之前,判斷該查詢組是否與緩存系統(tǒng)中的歷史查詢組相匹配,匹配條件為該查詢組對(duì)應(yīng)的連接屬性與該歷史查詢組對(duì)應(yīng)的連接屬性互相關(guān)聯(lián)、且該查詢組包含的查詢條件與該歷史查詢組包含的查詢條件相同、且該查詢組包含的字段名為該歷史查詢組包含的字段名的子集;如果匹配,從所述緩存系統(tǒng)中取出與該查詢組匹配的歷史查詢組對(duì)應(yīng)的行記錄集合中與需返回的字段名有映射關(guān)系的字段值的集合,作為該查詢組對(duì)應(yīng)的行記錄集合,并觸發(fā)所述獲取關(guān)聯(lián)字段單元執(zhí)行;如果不匹配,進(jìn)入所述根據(jù)查詢指令生成規(guī)則,對(duì)應(yīng)該查詢組生成至少一條子查詢指令的步驟,且將生成該子查詢指令的查詢組與執(zhí)行該子查詢指令之后相應(yīng)獲得的行記錄集合對(duì)應(yīng),并將該查詢組對(duì)應(yīng)的行記錄集合保存于所述緩存系統(tǒng)。
21.根據(jù)權(quán)利要求20所述的裝置,其特征在于,所述子查詢單元:用于如果匹配,且該歷史查詢組的緩存期限未過(guò)期,從所述緩存系統(tǒng)中取出該歷史查詢組對(duì)應(yīng)的行記錄集合中與需返回的字段名有映射關(guān)系的字段值的集合,作為該查詢組對(duì)應(yīng)的行記錄集合,并觸發(fā)所述獲取關(guān)聯(lián)字段單元執(zhí)行;如果匹配,且該歷史查詢組的緩存期限已過(guò)期,進(jìn)入所述根據(jù)查詢指令生成規(guī)則,對(duì)應(yīng)該查詢組生成至少一條子查詢指令的步驟,且將生成該子查詢指令的查詢組與執(zhí)行該子查詢指令之后相應(yīng)獲得的行記錄集合對(duì)應(yīng),并將該查詢組對(duì)應(yīng)的行記錄集合保存于所述緩存系統(tǒng)。
22.根據(jù)權(quán)利要求17所述的裝置,其特征在于,所述獲取關(guān)聯(lián)字段單元:用于根據(jù)生成該子查詢指令的查詢組、及執(zhí)行該子查詢指令之后相應(yīng)獲得的行記錄集合,確定每個(gè)行記錄集合對(duì)應(yīng)的查詢組;針對(duì)每個(gè)行記錄集合對(duì)應(yīng)的查詢組,查詢出信息配置表中,與該查詢組對(duì)應(yīng)的連接屬性對(duì)應(yīng)、且與該查詢組包含的表名對(duì)應(yīng)、屬于關(guān)聯(lián)字段的字段名,以該屬于關(guān)聯(lián)字段的字段名作為該行記錄集合對(duì)應(yīng)的關(guān)聯(lián)字段名,其中,屬于關(guān)聯(lián)字段的字段名在信息配置表中有特定屬性。
23.根據(jù)權(quán)利要求17所述的裝置,其特征在于,所述獲取輸入單元:用于從客戶端獲取需返回的字段名及查詢條件; 所述返回單元:用于將獲得的合并行記錄集合返回到所述客戶端。
24.根據(jù)權(quán)利要求17所述的裝置,其特征在于,所述分組單元:還用于在獲得至少兩個(gè)查詢組之后,為每個(gè)查詢組各分配一個(gè)線程,所述線程用于執(zhí)行所述獲得該查詢組對(duì)應(yīng)的行記錄集合之前的任意步驟,所述線程之間為并行執(zhí)行。
25.根據(jù)權(quán)利要求17所述的裝置,其特征在于,所述子查詢單元:還用于在根據(jù)查詢指令生成規(guī)則,對(duì)應(yīng)一個(gè)查詢組生成至少一條子查詢指令時(shí),將該行記錄數(shù)量之閾值作為子查詢指令中用于限制返回行數(shù)的參數(shù)。
26.根據(jù)權(quán)利要求16所述的裝置,其特征在于,所述合并單元:還用于獲取所述至少兩個(gè)行記錄集合各自的權(quán)重;按照權(quán)重大小,排序所述至少兩個(gè)行記錄集合的位置,如果有屬性值相等的行記錄,在將屬性值相等的行記錄拼接為一行記錄時(shí),將在非第一位置的行記錄集合中的所述屬性值相等的行記錄,按排序順序拼接在第一位置的行記錄集合中所述屬性值相等的行記錄的行尾成為一行,加入合并行記錄集合。
27.根據(jù)權(quán)利要求16或26所述的裝置,其特征在于,所述合并單元:還用于如果所述至少兩個(gè)行記錄集合存在屬性值不相等的行記錄,將屬性值不相等的行記錄,作為新行記錄插入到合并行記錄集合的結(jié)尾。
28.根據(jù)權(quán)利要求26所述的裝置,其特征在于,所述合并單元:用于從所述至少兩個(gè)行記錄集合各自對(duì)應(yīng)的連接屬性中,提取出各自的權(quán)重,其中,信息配置表中的連接屬性具有權(quán)重,互相關(guān)聯(lián)的連接屬性具有相同的權(quán)重。
【文檔編號(hào)】G06F17/30GK104182405SQ201310192991
【公開(kāi)日】2014年12月3日 申請(qǐng)日期:2013年5月22日 優(yōu)先權(quán)日:2013年5月22日
【發(fā)明者】熊水林 申請(qǐng)人:阿里巴巴集團(tuán)控股有限公司