本申請(qǐng)公開了一種存儲(chǔ)引擎中數(shù)據(jù)索引的方法以及相關(guān)裝置,通過獲取指示數(shù)據(jù)來索引目標(biāo)事務(wù)。根據(jù)目標(biāo)事務(wù)確定第一存儲(chǔ)引擎中的第一索引表;然后根據(jù)第一索引表確定在第二存儲(chǔ)引擎中配置的至少一個(gè)第二索引表;進(jìn)而從第二索引表中確定與第一存儲(chǔ)引擎中的數(shù)據(jù)索引條件對(duì)應(yīng)的索引數(shù)據(jù)。從而實(shí)現(xiàn)了跨存儲(chǔ)引擎的數(shù)據(jù)索引過程,由于減少了新的存儲(chǔ)引擎引入的開發(fā)復(fù)雜度,實(shí)現(xiàn)了多存儲(chǔ)引擎的代碼復(fù)用,提高了數(shù)據(jù)庫的索引效率。
A method of data index in storage engine and related devices
【技術(shù)實(shí)現(xiàn)步驟摘要】
一種存儲(chǔ)引擎中數(shù)據(jù)索引的方法以及相關(guān)裝置
本申請(qǐng)涉及計(jì)算機(jī)
,尤其涉及一種存儲(chǔ)引擎中數(shù)據(jù)索引的方法以及相關(guān)裝置。
技術(shù)介紹
隨著云技術(shù)的發(fā)展,越來越多的應(yīng)用出現(xiàn)在人們生活中,而在云技術(shù)中,需要數(shù)據(jù)庫的參與,以實(shí)現(xiàn)數(shù)據(jù)交互。數(shù)據(jù)庫,簡(jiǎn)而言之可視為電子化的文件柜——存儲(chǔ)電子文件的處所,用戶可以對(duì)文件中的數(shù)據(jù)進(jìn)行新增、查詢、更新、刪除等操作。一般,可以采用MySQL這一支持多種存儲(chǔ)引擎的數(shù)據(jù)庫管理系統(tǒng)以適用于不同的應(yīng)用場(chǎng)景中。其中,不同存儲(chǔ)引擎對(duì)事務(wù)的支持能力可以不同。例如InnoDB存儲(chǔ)引擎實(shí)現(xiàn)了完整的事務(wù)支持,也支持分布式事務(wù)的XA協(xié)議;而MyISAM存儲(chǔ)引擎便于拓展;另外NEWDB引擎則支持單語句的事務(wù);從而實(shí)現(xiàn)多種場(chǎng)景的數(shù)據(jù)索引過程。但是,在MySQL的插件式體系架構(gòu)中,每個(gè)存儲(chǔ)引擎的代碼都是獨(dú)立的,每開發(fā)一個(gè)新的存儲(chǔ)引擎,都需要單獨(dú)開發(fā)完整的一套數(shù)據(jù)存儲(chǔ)和事務(wù)機(jī)制;然而這個(gè)開發(fā)過程復(fù)雜度高,且容易造成代碼的冗余,影響數(shù)據(jù)庫的索引效率。
技術(shù)實(shí)現(xiàn)思路
有鑒于此,本申請(qǐng)?zhí)峁┮环N數(shù)據(jù)索引的方法,可以有效減少存儲(chǔ)引擎應(yīng)用過程的復(fù)雜度以及代碼的冗余,提高數(shù)據(jù)索引過程的效率。本申請(qǐng)第一方面提供一種數(shù)據(jù)索引的方法,可以應(yīng)用于終端設(shè)備中包含數(shù)據(jù)索引功能的系統(tǒng)或程序中,具體包括:獲取目標(biāo)事務(wù),所述目標(biāo)事務(wù)用于指示數(shù)據(jù)索引過程;根據(jù)所述目標(biāo)事務(wù)確定第一存儲(chǔ)引擎中的目標(biāo)數(shù)據(jù),所述目標(biāo)數(shù)據(jù)包含于至少一個(gè)第一索引表中;根據(jù)所述第一索引表確定在第二存儲(chǔ)引擎中配置的至少一個(gè)第二索引表,所述第二索引表為基于所述第一索引表增加行標(biāo)識(shí)所得,所述行標(biāo)識(shí)用于指示所述目標(biāo)數(shù)據(jù)中的行數(shù)據(jù),所述行數(shù)據(jù)與所述目標(biāo)數(shù)據(jù)中的索引列相對(duì)應(yīng),所述索引列基于所述目標(biāo)事務(wù)所得,所述第二存儲(chǔ)引擎支持所述目標(biāo)事務(wù)的執(zhí)行;從所述第二索引表中確定與所述第一存儲(chǔ)引擎中的數(shù)據(jù)索引條件對(duì)應(yīng)的索引數(shù)據(jù),所述索引數(shù)據(jù)包含于所述目標(biāo)數(shù)據(jù)。本申請(qǐng)第二方面提供一種數(shù)據(jù)索引的裝置,包括:獲取單元,用于獲取目標(biāo)事務(wù),所述目標(biāo)事務(wù)用于指示數(shù)據(jù)索引過程;確定單元,用于根據(jù)所述目標(biāo)事務(wù)確定第一存儲(chǔ)引擎中的目標(biāo)數(shù)據(jù),所述目標(biāo)數(shù)據(jù)包含于至少一個(gè)第一索引表中;映射單元,用于根據(jù)所述第一索引表確定在第二存儲(chǔ)引擎中配置的至少一個(gè)第二索引表,所述第二索引表為基于所述第一索引表增加行標(biāo)識(shí)所得,所述行標(biāo)識(shí)用于指示所述目標(biāo)數(shù)據(jù)中的行數(shù)據(jù),所述行數(shù)據(jù)與所述目標(biāo)數(shù)據(jù)中的索引列相對(duì)應(yīng),所述索引列基于所述目標(biāo)事務(wù)所得,所述第二存儲(chǔ)引擎支持所述目標(biāo)事務(wù)的執(zhí)行;索引單元,用于從所述第二索引表中確定與所述第一存儲(chǔ)引擎中的數(shù)據(jù)索引條件對(duì)應(yīng)的索引數(shù)據(jù),所述索引數(shù)據(jù)包含于所述目標(biāo)數(shù)據(jù)。本申請(qǐng)第三方面提供一種計(jì)算機(jī)設(shè)備,包括:存儲(chǔ)器、處理器以及總線系統(tǒng);所述存儲(chǔ)器用于存儲(chǔ)程序代碼;所述處理器用于根據(jù)所述程序代碼中的指令執(zhí)行上述第一方面所述的數(shù)據(jù)索引的方法。本申請(qǐng)第四方面提供一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中存儲(chǔ)有指令,當(dāng)其在計(jì)算機(jī)上運(yùn)行時(shí),使得計(jì)算機(jī)執(zhí)行上述第一方面所述的數(shù)據(jù)索引的方法。從以上技術(shù)方案可以看出,本申請(qǐng)實(shí)施例具有以下優(yōu)點(diǎn):通過獲取指示數(shù)據(jù)索引過程目標(biāo)事務(wù),并根據(jù)目標(biāo)事務(wù)確定第一存儲(chǔ)引擎中的目標(biāo)數(shù)據(jù),目標(biāo)數(shù)據(jù)包含于至少一個(gè)第一索引表中;然后根據(jù)第一索引表確定在第二存儲(chǔ)引擎中配置的至少一個(gè)第二索引表,第二索引表為基于第一索引表增加行標(biāo)識(shí)所得,行標(biāo)識(shí)用于指示目標(biāo)數(shù)據(jù)中的行數(shù)據(jù),行數(shù)據(jù)與目標(biāo)數(shù)據(jù)中的索引列相對(duì)應(yīng),索引列基于目標(biāo)事務(wù)所得,第二存儲(chǔ)引擎支持目標(biāo)事務(wù)的執(zhí)行;進(jìn)而從第二索引表中確定與第一存儲(chǔ)引擎中的數(shù)據(jù)索引條件對(duì)應(yīng)的索引數(shù)據(jù)。從而實(shí)現(xiàn)了跨存儲(chǔ)引擎的數(shù)據(jù)索引過程,由于減少了新的存儲(chǔ)引擎引入的開發(fā)復(fù)雜度,實(shí)現(xiàn)了多存儲(chǔ)引擎的代碼復(fù)用,提高了數(shù)據(jù)庫的索引效率;進(jìn)一步的通過對(duì)于第二存儲(chǔ)引擎的功能設(shè)計(jì)使得第一存儲(chǔ)引擎可以執(zhí)行自身無法搭載的功能,進(jìn)一步的提高了數(shù)據(jù)庫的應(yīng)用范圍以及索引效率。附圖說明為了更清楚地說明本申請(qǐng)實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本申請(qǐng)的實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)提供的附圖獲得其他的附圖。圖1為數(shù)據(jù)索引系統(tǒng)運(yùn)行的網(wǎng)絡(luò)架構(gòu)圖;圖2為本申請(qǐng)實(shí)施例提供的一種數(shù)據(jù)索引的流程架構(gòu)圖;圖3為本申請(qǐng)實(shí)施例提供的一種數(shù)據(jù)索引的方法的流程圖;圖4為本申請(qǐng)實(shí)施例提供的一種索引表更新流程示意圖;圖5為本申請(qǐng)實(shí)施例提供的另一種數(shù)據(jù)索引的方法的流程圖;圖6為本申請(qǐng)實(shí)施例提供的一種數(shù)據(jù)插入操作流程示意圖;圖7為本申請(qǐng)實(shí)施例提供的一種數(shù)據(jù)恢復(fù)的方法的流程圖;圖8為本申請(qǐng)實(shí)施例提供的一種數(shù)據(jù)索引裝置的結(jié)構(gòu)示意圖;圖9為本申請(qǐng)實(shí)施例提供的另一種數(shù)據(jù)索引裝置的結(jié)構(gòu)示意圖。具體實(shí)施方式本申請(qǐng)實(shí)施例提供了一種數(shù)據(jù)索引的方法以及相關(guān)裝置,可以應(yīng)用于終端設(shè)備中包含數(shù)據(jù)索引功能的系統(tǒng)或程序中,通過獲取指示數(shù)據(jù)索引過程目標(biāo)事務(wù),并根據(jù)目標(biāo)事務(wù)確定第一存儲(chǔ)引擎中的目標(biāo)數(shù)據(jù),目標(biāo)數(shù)據(jù)包含于至少一個(gè)第一索引表中;然后根據(jù)第一索引表確定在第二存儲(chǔ)引擎中配置的至少一個(gè)第二索引表,第二索引表為基于第一索引表增加行標(biāo)識(shí)所得,行標(biāo)識(shí)用于指示目標(biāo)數(shù)據(jù)中的行數(shù)據(jù),行數(shù)據(jù)與目標(biāo)數(shù)據(jù)中的索引列相對(duì)應(yīng),索引列基于目標(biāo)事務(wù)所得,第二存儲(chǔ)引擎支持目標(biāo)事務(wù)的執(zhí)行;進(jìn)而從第二索引表中確定與第一存儲(chǔ)引擎中的數(shù)據(jù)索引條件對(duì)應(yīng)的索引數(shù)據(jù)。從而實(shí)現(xiàn)了跨存儲(chǔ)引擎的數(shù)據(jù)索引過程,由于減少了新的存儲(chǔ)引擎引入的開發(fā)復(fù)雜度,實(shí)現(xiàn)了多存儲(chǔ)引擎的代碼復(fù)用,提高了數(shù)據(jù)庫的索引效率;進(jìn)一步的通過對(duì)于第二存儲(chǔ)引擎的功能設(shè)計(jì)使得第一存儲(chǔ)引擎可以執(zhí)行自身無法搭載的功能,進(jìn)一步的提高了數(shù)據(jù)庫的應(yīng)用范圍以及索引效率。本申請(qǐng)的說明書和權(quán)利要求書及上述附圖中的術(shù)語“第一”、“第二”、“第三”、“第四”等(如果存在)是用于區(qū)別類似的對(duì)象,而不必用于描述特定的順序或先后次序。應(yīng)該理解這樣使用的數(shù)據(jù)在適當(dāng)情況下可以互換,以便這里描述的本申請(qǐng)的實(shí)施例例如能夠以除了在這里圖示或描述的那些以外的順序?qū)嵤4送猓g(shù)語“包括”和“對(duì)應(yīng)于”以及他們的任何變形,意圖在于覆蓋不排他的包含,例如,包含了一系列步驟或單元的過程、方法、系統(tǒng)、產(chǎn)品或設(shè)備不必限于清楚地列出的那些步驟或單元,而是可包括沒有清楚地列出的或?qū)τ谶@些過程、方法、產(chǎn)品或設(shè)備固有的其它步驟或單元。首先,對(duì)本申請(qǐng)實(shí)施例中可能出現(xiàn)的一些名詞進(jìn)行解釋。MySQL:一個(gè)關(guān)系型數(shù)據(jù)庫管理系統(tǒng),它采用插件式體系結(jié)構(gòu),可同時(shí)支持多個(gè)存儲(chǔ)引擎。存儲(chǔ)引擎:負(fù)責(zé)數(shù)據(jù)庫管理系統(tǒng)中數(shù)據(jù)存儲(chǔ)和事務(wù)管理等功能,是數(shù)據(jù)庫系統(tǒng)的核心模塊。MySQL可以同時(shí)支持多個(gè)不同的存儲(chǔ)引擎,以提供針對(duì)不同場(chǎng)景優(yōu)化的數(shù)據(jù)存儲(chǔ)和事務(wù)管理能力;常見的存儲(chǔ)引擎有InnoDB、MyISAM等。事務(wù)(transaction):是訪問并可能操作各種本文檔來自技高網(wǎng)...
【技術(shù)保護(hù)點(diǎn)】
1.一種存儲(chǔ)引擎中數(shù)據(jù)索引的方法,其特征在于,包括:/n獲取目標(biāo)事務(wù),所述目標(biāo)事務(wù)用于指示數(shù)據(jù)索引過程;/n根據(jù)所述目標(biāo)事務(wù)確定第一存儲(chǔ)引擎中的目標(biāo)數(shù)據(jù),所述目標(biāo)數(shù)據(jù)包含于至少一個(gè)第一索引表中;/n根據(jù)所述第一索引表確定在第二存儲(chǔ)引擎中配置的至少一個(gè)第二索引表,所述第二索引表為基于所述第一索引表增加行標(biāo)識(shí)所得,所述行標(biāo)識(shí)用于指示所述目標(biāo)數(shù)據(jù)中的行數(shù)據(jù),所述行數(shù)據(jù)與所述目標(biāo)數(shù)據(jù)中的索引列相對(duì)應(yīng),所述索引列基于所述目標(biāo)事務(wù)所得,所述第二存儲(chǔ)引擎支持所述目標(biāo)事務(wù)的執(zhí)行;/n從所述第二索引表中確定與所述第一存儲(chǔ)引擎中的數(shù)據(jù)索引條件對(duì)應(yīng)的索引數(shù)據(jù),所述索引數(shù)據(jù)包含于所述目標(biāo)數(shù)據(jù)。/n
【技術(shù)特征摘要】
1.一種存儲(chǔ)引擎中數(shù)據(jù)索引的方法,其特征在于,包括:
獲取目標(biāo)事務(wù),所述目標(biāo)事務(wù)用于指示數(shù)據(jù)索引過程;
根據(jù)所述目標(biāo)事務(wù)確定第一存儲(chǔ)引擎中的目標(biāo)數(shù)據(jù),所述目標(biāo)數(shù)據(jù)包含于至少一個(gè)第一索引表中;
根據(jù)所述第一索引表確定在第二存儲(chǔ)引擎中配置的至少一個(gè)第二索引表,所述第二索引表為基于所述第一索引表增加行標(biāo)識(shí)所得,所述行標(biāo)識(shí)用于指示所述目標(biāo)數(shù)據(jù)中的行數(shù)據(jù),所述行數(shù)據(jù)與所述目標(biāo)數(shù)據(jù)中的索引列相對(duì)應(yīng),所述索引列基于所述目標(biāo)事務(wù)所得,所述第二存儲(chǔ)引擎支持所述目標(biāo)事務(wù)的執(zhí)行;
從所述第二索引表中確定與所述第一存儲(chǔ)引擎中的數(shù)據(jù)索引條件對(duì)應(yīng)的索引數(shù)據(jù),所述索引數(shù)據(jù)包含于所述目標(biāo)數(shù)據(jù)。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述從所述第二索引表中確定與所述第一存儲(chǔ)引擎中的數(shù)據(jù)索引條件對(duì)應(yīng)的索引數(shù)據(jù),包括:
獲取所述目標(biāo)事務(wù)在所述第一存儲(chǔ)引擎中的數(shù)據(jù)索引條件,以確定所述數(shù)據(jù)索引條件指示的行標(biāo)識(shí);
根據(jù)所述數(shù)據(jù)索引條件指示的行標(biāo)識(shí)確定在所述第二索引表中對(duì)應(yīng)的行標(biāo)識(shí),以得到所述行數(shù)據(jù);
根據(jù)所述行數(shù)據(jù)確定對(duì)應(yīng)的索引數(shù)據(jù)。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述數(shù)據(jù)索引條件包括目標(biāo)索引值,所述根據(jù)所述操作指令對(duì)所述行數(shù)據(jù)進(jìn)行索引,以得到對(duì)應(yīng)的索引數(shù)據(jù),包括:
根據(jù)所述目標(biāo)索引值確定對(duì)應(yīng)的第二索引表;
確定所述第二索引表中對(duì)應(yīng)于所述目標(biāo)索引值的行數(shù)據(jù),以得到對(duì)應(yīng)的索引數(shù)據(jù)。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還包括:
確定所述目標(biāo)事務(wù)中的數(shù)據(jù)操縱信息,所述數(shù)據(jù)操縱信息用于指示數(shù)據(jù)的插入、更新或刪除;
根據(jù)所述數(shù)據(jù)操縱信息對(duì)所述第二索引表進(jìn)行更新。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述根據(jù)所述數(shù)據(jù)操縱信息對(duì)所述第二索引表進(jìn)行更新,包括:
根據(jù)所述數(shù)據(jù)操縱信息確定所述第一索引表中的變化信息;
根據(jù)所述變化信息確定在所述第二索引表中對(duì)應(yīng)的行標(biāo)識(shí);
基于所述行標(biāo)識(shí)確定所述變化信息在所述第二索引表中的對(duì)應(yīng)項(xiàng),以對(duì)所述第二索引表進(jìn)行更新。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述基于所述行標(biāo)識(shí)確定所述變化信息在所述第二索引表中的對(duì)應(yīng)項(xiàng),以對(duì)所述第二索引表進(jìn)行更新之后,所述方法還包括:
根據(jù)所述變化信息確定所述第一存儲(chǔ)引擎對(duì)應(yīng)的版本號(hào),以在所述第二存儲(chǔ)引擎中生成日志表;
確定所述日志表中相鄰的所述第一存儲(chǔ)引擎版本號(hào)的數(shù)據(jù)對(duì)應(yīng)情況,以進(jìn)行數(shù)據(jù)恢復(fù)。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述確定所述日志表中相鄰的所述第一存儲(chǔ)引擎版本號(hào)的數(shù)據(jù)對(duì)應(yīng)情況,以進(jìn)行數(shù)據(jù)恢復(fù),包括:
確定所述變化信息對(duì)應(yīng)的處理流程;
為所述處理流程設(shè)置至少一個(gè)故障檢測(cè)點(diǎn),所述故障檢測(cè)點(diǎn)基于所述第一...
【專利技術(shù)屬性】
技術(shù)研發(fā)人員:龍劍,張文亮,
申請(qǐng)(專利權(quán))人:騰訊科技深圳有限公司,
類型:發(fā)明
國別省市:廣東;44
還沒有人留言評(píng)論。發(fā)表了對(duì)其他瀏覽者有用的留言會(huì)獲得科技券。