文件包括實(shí)際數(shù)據(jù)塊、數(shù)據(jù)索引塊、本地元數(shù)據(jù)塊、元數(shù)據(jù)索引塊以及文件頁(yè)腳;
[0231]判斷待更新的元數(shù)據(jù)是否屬于全局文件元數(shù)據(jù),如果否,則:
[0232]更新本地元數(shù)據(jù);
[0233]根據(jù)更新后的本地元數(shù)據(jù),在多個(gè)行組文件中增加更新后的本地元數(shù)據(jù)塊、元數(shù)據(jù)索引塊以及文件頁(yè)腳。
[0234]本說(shuō)明書(shū)中各個(gè)實(shí)施例采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說(shuō)明的都是與其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似部分互相參見(jiàn)即可。對(duì)于實(shí)施例公開(kāi)的裝置而言,由于其與實(shí)施例公開(kāi)的方法相對(duì)應(yīng),所以描述的比較簡(jiǎn)單,相關(guān)之處參見(jiàn)方法部分說(shuō)明即可。
[0235]本領(lǐng)域技術(shù)人員可以理解附圖只是一個(gè)優(yōu)選實(shí)施例的示意圖,附圖中的模塊或流程并不一定是實(shí)施本發(fā)明所必須的。
[0236]本領(lǐng)域技術(shù)人員可以理解實(shí)施例中的裝置中的模塊可以按照實(shí)施例描述分布于實(shí)施例的裝置中,也可以進(jìn)行相應(yīng)變化位于不同于本實(shí)施例的一個(gè)或多個(gè)裝置中。上述實(shí)施例的模塊可以合并為一個(gè)模塊,也可以進(jìn)一步拆分成多個(gè)子模塊。
[0237]本領(lǐng)域普通技術(shù)人員可以理解上述實(shí)施例方法中的全部或部分處理是可以通過(guò)程序來(lái)指令相關(guān)的硬件完成,所述的程序可以存儲(chǔ)于一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中。
[0238]對(duì)所公開(kāi)的實(shí)施例的上述說(shuō)明,使本領(lǐng)域?qū)I(yè)技術(shù)人員能夠?qū)崿F(xiàn)或使用本發(fā)明。對(duì)這些實(shí)施例的多種修改對(duì)本領(lǐng)域的專(zhuān)業(yè)技術(shù)人員來(lái)說(shuō)將是顯而易見(jiàn)的,本文中所定義的一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其它實(shí)施例中實(shí)現(xiàn)。因此,本發(fā)明將不會(huì)被限制于本文所示的這些實(shí)施例,而是要符合與本文所公開(kāi)的原理和新穎特點(diǎn)相一致的最寬的范圍。
【主權(quán)項(xiàng)】
1.一種基于分布式文件系統(tǒng)列式存儲(chǔ)的元數(shù)據(jù)更新方法,其特征在于,方法包括: 獲取分布式文件系統(tǒng)的數(shù)據(jù)表中待更新的元數(shù)據(jù),將所述數(shù)據(jù)表的數(shù)據(jù)記錄按行分割為多個(gè)行組,將所述數(shù)據(jù)表轉(zhuǎn)換成一個(gè)全局文件元數(shù)據(jù),以及多個(gè)行組文件,其中,所述行組文件包括實(shí)際數(shù)據(jù)塊、數(shù)據(jù)索引塊、本地元數(shù)據(jù)塊、元數(shù)據(jù)索引塊以及文件頁(yè)腳; 判斷所述待更新的元數(shù)據(jù)是否屬于所述全局文件元數(shù)據(jù),如果否,則: 更新本地元數(shù)據(jù); 根據(jù)更新后的本地元數(shù)據(jù),在所述多個(gè)行組文件中增加更新后的本地元數(shù)據(jù)塊、元數(shù)據(jù)索引塊以及文件頁(yè)腳。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述更新本地元數(shù)據(jù),包括: 為每個(gè)所述行組對(duì)應(yīng)生成Map任務(wù),通過(guò)所述MAP任務(wù)更新與所述MAP任務(wù)對(duì)應(yīng)的行組的本地元數(shù)據(jù)。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,通過(guò)所述MAP任務(wù)更新與所述MAP任務(wù)對(duì)應(yīng)的行組的本地元數(shù)據(jù),根據(jù)更新后的本地元數(shù)據(jù),在所述多個(gè)行組文件中增加更新后的本地元數(shù)據(jù)塊、元數(shù)據(jù)索引塊以及文件頁(yè)腳,包括: 確定所述待更新的元數(shù)據(jù)所涉及的目標(biāo)數(shù)據(jù)列; 判斷所述目標(biāo)數(shù)據(jù)列中所述待更新的元數(shù)據(jù)是否需要進(jìn)行計(jì)算,如果否,則: 生成新的元數(shù)據(jù)塊,并將其添加到所述行組文件的尾部; 更新元數(shù)據(jù)索引塊,將更新后的元數(shù)據(jù)索引塊添加至所述行組文件的尾部; 更新文件頁(yè)腳中的元數(shù)據(jù)索引塊的文件偏移,根據(jù)所述元數(shù)據(jù)索引塊的文件偏移,重寫(xiě)所述文件頁(yè)腳。
4.根據(jù)權(quán)利要求2所述的方法,其特征在于,通過(guò)所述MAP任務(wù)更新與所述MAP任務(wù)對(duì)應(yīng)的行組的本地元數(shù)據(jù),根據(jù)更新后的本地元數(shù)據(jù),在所述多個(gè)行組文件中增加更新后的本地元數(shù)據(jù)塊、元數(shù)據(jù)索引塊以及文件頁(yè)腳,包括: 確定所述待更新的元數(shù)據(jù)所涉及的目標(biāo)數(shù)據(jù)列; 判斷所述目標(biāo)數(shù)據(jù)列中所述待更新的元數(shù)據(jù)是否需要進(jìn)行計(jì)算,如果是,則: 計(jì)算新的元數(shù)據(jù); 根據(jù)計(jì)算后的元數(shù)據(jù)生成新的元數(shù)據(jù)塊,并將其添加到所述行組文件的尾部; 更新元數(shù)據(jù)索引塊,將更新后的元數(shù)據(jù)索引塊添加至所述行組文件的尾部; 更新文件頁(yè)腳中的元數(shù)據(jù)索引塊的文件偏移,根據(jù)所述元數(shù)據(jù)索引塊的文件偏移,重寫(xiě)所述文件頁(yè)腳。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述計(jì)算新的元數(shù)據(jù),包括: 掃描所述目標(biāo)數(shù)據(jù)列在實(shí)際數(shù)據(jù)塊中對(duì)應(yīng)數(shù)據(jù)塊的所有記錄,并進(jìn)行相應(yīng)的統(tǒng)計(jì)計(jì)笪 ο
6.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述生成并執(zhí)行并發(fā)任務(wù),更新所有所述行組的本地元數(shù)據(jù)之前,包括: 判斷所述待更新的元數(shù)據(jù)位置,如果所述待更新的元數(shù)據(jù)位置為行組文件中的元數(shù)據(jù),則生成新的元數(shù)據(jù)塊,所述新的元數(shù)據(jù)塊包含有相應(yīng)的增加或刪減記錄結(jié)果。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述生成新的元數(shù)據(jù)塊,包括: 當(dāng)刪除的第k列已存在時(shí),則在元數(shù)據(jù)塊k中增加相應(yīng)的刪除記錄,所述刪除記錄包括列名、刪除標(biāo)記; 當(dāng)增加一個(gè)新列時(shí),則為該列生成一個(gè)空的元數(shù)據(jù)塊,并在所述元數(shù)據(jù)塊中插入相應(yīng)的增加記錄,所述增加記錄包括列名、增加標(biāo)記以及可選的默認(rèn)值。
8.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還包括: 如果所述待更新的元數(shù)據(jù)屬于所述數(shù)據(jù)表中的全局文件元數(shù)據(jù),則修改所述全局文件元數(shù)據(jù)對(duì)應(yīng)的文件。
9.一種基于分布式文件系統(tǒng)列式存儲(chǔ)的元數(shù)據(jù)更新裝置,其特征在于,包括獲取單元、第一判斷單元、更新單元、第一處理單元; 所述獲取單元,用于獲取分布式文件系統(tǒng)的數(shù)據(jù)表中待更新的元數(shù)據(jù),將所述數(shù)據(jù)表的數(shù)據(jù)記錄按行分割為多個(gè)行組,將所述數(shù)據(jù)表轉(zhuǎn)換成一個(gè)全局文件元數(shù)據(jù),以及多個(gè)行組文件,其中,所述行組文件包括實(shí)際數(shù)據(jù)塊、數(shù)據(jù)索引塊、本地元數(shù)據(jù)塊、元數(shù)據(jù)索引塊以及文件頁(yè)腳; 所述第一判斷單元,用于判斷所述待更新的元數(shù)據(jù)是否屬于所述全局文件元數(shù)據(jù),如果否,則觸發(fā)所述更新單元; 所述更新單元,用于更新本地元數(shù)據(jù); 所述第一處理單元,用于根據(jù)更新后的本地元數(shù)據(jù),在所述多個(gè)行組文件中增加更新后的本地元數(shù)據(jù)塊、元數(shù)據(jù)索弓I塊以及文件頁(yè)腳。
10.根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述更新單元,包括: Map更新子單元,用于為每個(gè)所述行組對(duì)應(yīng)生成Map任務(wù),通過(guò)所述MAP任務(wù)更新與所述MAP任務(wù)對(duì)應(yīng)的行組的本地元數(shù)據(jù)。
11.根據(jù)權(quán)利要求10所述的裝置,其特征在于,所述Map更新子單元,包括數(shù)據(jù)列確定子模塊、判斷子模塊、元數(shù)據(jù)塊生成子模塊、第一更新子模塊、第二更新子模塊; 所述數(shù)據(jù)列確定子模塊,用于確定所述待更新的元數(shù)據(jù)所涉及的目標(biāo)數(shù)據(jù)列; 所述判斷子模塊,用于判斷所述目標(biāo)數(shù)據(jù)列中所述待更新的元數(shù)據(jù)是否需要進(jìn)行計(jì)算,如果否,則觸發(fā)元數(shù)據(jù)塊生成子模塊; 所述元數(shù)據(jù)塊生成子模塊,用于生成新的元數(shù)據(jù)塊,并將其添加到所述行組文件的尾部; 所述第一更新子模塊,用于更新元數(shù)據(jù)索引塊,將更新后的元數(shù)據(jù)索引塊添加至所述行組文件的尾部; 所述第二更新子模塊,用于更新文件頁(yè)腳中的元數(shù)據(jù)索引塊的文件偏移,根據(jù)所述元數(shù)據(jù)索引塊的文件偏移,重寫(xiě)所述文件頁(yè)腳。
12.根據(jù)權(quán)利要求10所述的裝置,其特征在于,所述Map更新子單元,包括數(shù)據(jù)列確定子模塊、判斷子模塊、計(jì)算子模塊、元數(shù)據(jù)塊生成子模塊、第一更新子模塊、第二更新子模塊; 所述數(shù)據(jù)列確定子模塊,用于確定所述待更新的元數(shù)據(jù)所涉及的目標(biāo)數(shù)據(jù)列; 所述判斷子模塊,用于判斷所述目標(biāo)數(shù)據(jù)列中所述待更新的元數(shù)據(jù)是否需要進(jìn)行計(jì)算,如果是,則觸發(fā)所述計(jì)算子模塊; 所述計(jì)算子模塊,用于計(jì)算新的元數(shù)據(jù); 所述元數(shù)據(jù)塊生成子模塊,用于根據(jù)計(jì)算后的元數(shù)據(jù)生成新的元數(shù)據(jù)塊,并將其添加到所述行組文件的尾部; 所述第一更新子模塊,用于更新元數(shù)據(jù)索引塊,將更新后的元數(shù)據(jù)索引塊添加至所述行組文件的尾部; 所述第二更新子模塊,用于更新文件頁(yè)腳中的元數(shù)據(jù)索引塊的文件偏移,根據(jù)所述元數(shù)據(jù)索引塊的文件偏移,重寫(xiě)所述文件頁(yè)腳。
13.根據(jù)權(quán)利要求12所述的裝置,其特征在于,所述計(jì)算子模塊,包括: 統(tǒng)計(jì)子模塊,用于掃描所述目標(biāo)數(shù)據(jù)列在實(shí)際數(shù)據(jù)塊中對(duì)應(yīng)數(shù)據(jù)塊的所有記錄,并進(jìn)行相應(yīng)的統(tǒng)計(jì)計(jì)算。
14.根據(jù)權(quán)利要求9所述的裝置,其特征在于,還包括: 第二判斷單元,用于判斷所述待更新的元數(shù)據(jù)位置,如果所述待更新的元數(shù)據(jù)位置為行組文件中的元數(shù)據(jù),則生成新的元數(shù)據(jù)塊,所述新的元數(shù)據(jù)塊包含有相應(yīng)的增加或刪減記錄結(jié)果。
15.根據(jù)權(quán)利要求14所述的裝置,其特征在于,所述第二判斷單元,包括: 第一刪除子模塊,用于當(dāng)刪除的第k列已存在時(shí),則在元數(shù)據(jù)塊k中增加相應(yīng)的刪除記錄,所述刪除記錄包括列名、刪除標(biāo)記; 第二刪除子模塊,用于當(dāng)增加一個(gè)新列時(shí),則為該列生成一個(gè)空的元數(shù)據(jù)塊,并在所述元數(shù)據(jù)塊中插入相應(yīng)的增加記錄,所述增加記錄包括列名、增加標(biāo)記以及可選的默認(rèn)值。
16.根據(jù)權(quán)利要求9所述的裝置,其特征在于,還包括第二處理單元; 所述第一判斷單元判斷所述元數(shù)據(jù)是否屬于所述數(shù)據(jù)表中的全局文件元數(shù)據(jù),如果是,則所述第二處理單元待更新的數(shù)據(jù)為全局文件元數(shù)據(jù),修改所述全局文件元數(shù)據(jù)對(duì)應(yīng)的文件。
17.—種主機(jī),其特征在于,包括處理器,通信接口,存儲(chǔ)器和總線(xiàn); 其中處理器、通信接口、存儲(chǔ)器通過(guò)總線(xiàn)完成相互間的通信; 所述通信接口,用于獲取分布式文件系統(tǒng)的數(shù)據(jù)表中待更新的元數(shù)據(jù); 所述處理器,用于執(zhí)行程序; 所述存儲(chǔ)器,用于存放程序; 其中程序用于: 將所述數(shù)據(jù)表的數(shù)據(jù)記錄按行分割為多個(gè)行組,將所述數(shù)據(jù)表轉(zhuǎn)換成一個(gè)全局文件元數(shù)據(jù),以及多個(gè)行組文件,其中,所述行組文件包括實(shí)際數(shù)據(jù)塊、數(shù)據(jù)索引塊、本地元數(shù)據(jù)塊、元數(shù)據(jù)索引塊以及文件頁(yè)腳; 判斷所述待更新的元數(shù)據(jù)是否屬于所述全局文件元數(shù)據(jù),如果否,則: 更新本地元數(shù)據(jù); 根據(jù)更新后的本地元數(shù)據(jù),在所述多個(gè)行組文件中增加更新后的本地元數(shù)據(jù)塊、元數(shù)據(jù)索引塊以及文件頁(yè)腳。
【專(zhuān)利摘要】本發(fā)明公開(kāi)一種基于分布式文件系統(tǒng)列式存儲(chǔ)的元數(shù)據(jù)更新方法、裝置、主機(jī),方法包括:獲取分布式文件系統(tǒng)的數(shù)據(jù)表中待更新的元數(shù)據(jù),將所述數(shù)據(jù)表的數(shù)據(jù)記錄按行分割為多個(gè)行組,將所述數(shù)據(jù)表轉(zhuǎn)換成一個(gè)全局文件元數(shù)據(jù),以及多個(gè)行組文件,其中,所述行組文件包括實(shí)際數(shù)據(jù)塊、數(shù)據(jù)索引塊、本地元數(shù)據(jù)塊、元數(shù)據(jù)索引塊以及文件頁(yè)腳;判斷所述待更新的元數(shù)據(jù)是否屬于所述全局文件元數(shù)據(jù),如果否,則:更新本地元數(shù)據(jù);根據(jù)更新后的本地元數(shù)據(jù),在所述多個(gè)行組文件中增加更新后的本地元數(shù)據(jù)塊、元數(shù)據(jù)索引塊以及文件頁(yè)腳。本發(fā)明的方法實(shí)現(xiàn)了元數(shù)據(jù)的動(dòng)態(tài)更新,大大節(jié)省了該類(lèi)更新操作的執(zhí)行時(shí)間及所需計(jì)算資源。
【IPC分類(lèi)】G06F17-30
【公開(kāi)號(hào)】CN104866497
【申請(qǐng)?zhí)枴緾N201410063272
【發(fā)明人】鄧?yán)? 朱俊華
【申請(qǐng)人】華為技術(shù)有限公司
【公開(kāi)日】2015年8月26日
【申請(qǐng)日】2014年2月24日
【公告號(hào)】WO2015124042A1