一種海量文件的存儲(chǔ)方法和裝置制造方法
【專利摘要】本發(fā)明實(shí)施例提供的一種海量文件的存儲(chǔ)方法和裝置,可以解決在.NET平臺(tái)架構(gòu)下利用HDFS存儲(chǔ)數(shù)據(jù)時(shí)系統(tǒng)運(yùn)行效率低以及部署成本高的問題。具體方案為:在.NET平臺(tái)架構(gòu)下通過IKVM.NET調(diào)用HDFS存儲(chǔ)待存儲(chǔ)文件中的數(shù)據(jù);當(dāng)所述待存儲(chǔ)文件中的數(shù)據(jù)存儲(chǔ)成功后,使用根據(jù)關(guān)系數(shù)據(jù)庫創(chuàng)建的文件索引表存儲(chǔ)所述待存儲(chǔ)文件的索引信息。
【專利說明】 一種海量文件的存儲(chǔ)方法和裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)處理領(lǐng)域,具體涉及一種海量文件的存儲(chǔ)方法和裝置。
【背景技術(shù)】
[0002]隨著信息技術(shù)的高速發(fā)展,據(jù)權(quán)威市場(chǎng)調(diào)查機(jī)構(gòu)互聯(lián)網(wǎng)數(shù)據(jù)中心預(yù)測(cè),未來每隔18個(gè)月,整個(gè)世界的數(shù)據(jù)總量就會(huì)翻倍,到2020年,整個(gè)世界的數(shù)據(jù)總量將會(huì)增長(zhǎng)44倍,達(dá)到35.2ZB(1ZB = 10億TB),隨之而來的是海量信息存儲(chǔ)的需求不斷增加。
[0003]目前大數(shù)據(jù)技術(shù)是通信網(wǎng)絡(luò)行業(yè)的熱門話題,由于數(shù)據(jù)量的爆炸式增長(zhǎng),許多已經(jīng)上線的軟件應(yīng)用都有對(duì)接大數(shù)據(jù)平臺(tái)、或?qū)I(yè)務(wù)遷移到大數(shù)據(jù)平臺(tái)上的迫切需求;目前應(yīng)用較廣的大數(shù)據(jù)平臺(tái)海杜普(英文=Hadoop)是一個(gè)由Apache基金會(huì)所開發(fā)的分布式系統(tǒng)基礎(chǔ)架構(gòu),Hadoop是基于JAVA語言(1995年SUN公司推出的編程語言)實(shí)現(xiàn)的一套大數(shù)據(jù)解決方案。其中,海杜普分布式文件系統(tǒng)(英文:Hadoop Distributed File System,簡(jiǎn)稱HDFS)是適合運(yùn)行在通用硬件上的分布式文件系統(tǒng),它和現(xiàn)有的分布式文件系統(tǒng)有很多共同點(diǎn),但同時(shí),它和其他的分布式文件系統(tǒng)的區(qū)別也是有很明顯的區(qū)別,HDFS是一個(gè)高度容錯(cuò)性的系統(tǒng),適合部署在廉價(jià)的機(jī)器上,HDFS能提供高吞吐量的數(shù)據(jù)訪問,非常適合在大規(guī)模數(shù)據(jù)集上應(yīng)用。
[0004]雖然Hadoop平臺(tái)的某些組件也提供其他語言的接口方式,但大都需要搭建額外的網(wǎng)絡(luò)服務(wù)器(英文:WebService)做中轉(zhuǎn)或者使用thrift方式完成調(diào)用,其中,WebService是一種跨編程語言和跨操作系統(tǒng)平臺(tái)的遠(yuǎn)程調(diào)用技術(shù);thrift是由臉書公司開發(fā)的一個(gè)軟件框架,用來進(jìn)行可擴(kuò)展且跨語言的服務(wù)的開發(fā);尤其對(duì)于HDFS,在.NET平臺(tái)架構(gòu)(.NET是微軟公司開發(fā)的一個(gè)網(wǎng)絡(luò)服務(wù)平臺(tái)架構(gòu))下并沒有官方的應(yīng)用程序編程接口(英文!Applicat1n Programming Interface,簡(jiǎn)稱:API)支持,現(xiàn)有的技術(shù)方案是采用WebService方式和thrift方式調(diào)用HDFS來存儲(chǔ)海量數(shù)據(jù),但是,現(xiàn)有的采用WebService方式和thrift方式的方案存在系統(tǒng)運(yùn)行效率低、部署成本高的問題。
【發(fā)明內(nèi)容】
[0005]本發(fā)明實(shí)施例提供一種海量文件的存儲(chǔ)方法和裝置,可以解決在.NET平臺(tái)架構(gòu)下利用HDFS存儲(chǔ)數(shù)據(jù)時(shí)系統(tǒng)運(yùn)行效率低以及部署成本高的問題。
[0006]為達(dá)到上述目的,本發(fā)明的實(shí)施例采用如下技術(shù)方案:
[0007]第一方面,本發(fā)明實(shí)施例提供一種海量文件的存儲(chǔ)方法,所述方法包括:
[0008]在.NET平臺(tái)架構(gòu)下通過JAVA虛擬機(jī)IKVM.NET調(diào)用海杜普分布式文件系統(tǒng)HDFS存儲(chǔ)待存儲(chǔ)文件中的數(shù)據(jù);
[0009]當(dāng)所述待存儲(chǔ)文件中的數(shù)據(jù)存儲(chǔ)成功后,使用根據(jù)關(guān)系數(shù)據(jù)庫創(chuàng)建的文件索引表存儲(chǔ)所述待存儲(chǔ)文件的索引信息。
[0010]結(jié)合第一方面,在第一種可能的實(shí)現(xiàn)方式中,所述在.NET平臺(tái)架構(gòu)下通過JAVA虛擬機(jī)IKVM.NET調(diào)用海杜普分布式文件系統(tǒng)HDFS存儲(chǔ)待存儲(chǔ)文件中的數(shù)據(jù)包括:
[0011]將使用JAVA語言編寫的用于調(diào)用所述HDFS存儲(chǔ)數(shù)據(jù)的程序通過所述IKVM.NET轉(zhuǎn)換為所述.NET平臺(tái)架構(gòu)下對(duì)應(yīng)的程序,執(zhí)行所述對(duì)應(yīng)的程序以在所述.NET平臺(tái)架構(gòu)下調(diào)用所述HDFS存儲(chǔ)所述待存儲(chǔ)文件中的數(shù)據(jù)。
[0012]結(jié)合第一方面,在第二種可能的實(shí)現(xiàn)方式中,所述待存儲(chǔ)文件的索引信息包括以下中的至少一種:所述待存儲(chǔ)文件的文件名、所述待存儲(chǔ)文件的文件大小、所述待存儲(chǔ)文件的生成時(shí)間。
[0013]結(jié)合第一方面至第一方面的第二種可能的實(shí)現(xiàn)方式中任一可能的實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中,所述方法還包括:
[0014]定時(shí)檢查所述文件索引表中存儲(chǔ)的索引信息與所述HDFS中存儲(chǔ)的數(shù)據(jù)的對(duì)應(yīng)關(guān)系,若檢查到有匹配不上所述HDFS中存儲(chǔ)的數(shù)據(jù)的無效索引信息,則將所述無效索引信息移到預(yù)設(shè)的錯(cuò)誤記錄表中。
[0015]結(jié)合第一方面至第一方面的第二種可能的實(shí)現(xiàn)方式中任一可能的實(shí)現(xiàn)方式,在第四種可能的實(shí)現(xiàn)方式中,所述方法還包括:
[0016]當(dāng)對(duì)所述HDFS中存儲(chǔ)的數(shù)據(jù)進(jìn)行操作時(shí),根據(jù)所述操作的結(jié)果對(duì)所述文件索引表中所述數(shù)據(jù)對(duì)應(yīng)的索引信息進(jìn)行更新。
[0017]第二方面,本發(fā)明實(shí)施例提供一種海量文件的存儲(chǔ)裝置,所述裝置包括:
[0018]第一存儲(chǔ)單元,用于在.NET平臺(tái)架構(gòu)下通過JAVA虛擬機(jī)IKVM.NET調(diào)用海杜普分布式文件系統(tǒng)HDFS存儲(chǔ)待存儲(chǔ)文件中的數(shù)據(jù);
[0019]第二存儲(chǔ)單元,用于當(dāng)所述待存儲(chǔ)文件中的數(shù)據(jù)存儲(chǔ)成功后,使用根據(jù)關(guān)系數(shù)據(jù)庫創(chuàng)建的文件索引表存儲(chǔ)所述待存儲(chǔ)文件的索引信息。
[0020]結(jié)合第二方面,在第一種可能的實(shí)現(xiàn)方式中,所述第一存儲(chǔ)單元具體用于:
[0021]將使用JAVA語言編寫的用于調(diào)用所述HDFS存儲(chǔ)數(shù)據(jù)的程序通過所述IKVM.NET轉(zhuǎn)換為所述.NET平臺(tái)架構(gòu)下對(duì)應(yīng)的程序,執(zhí)行所述對(duì)應(yīng)的程序以在所述.NET平臺(tái)架構(gòu)下調(diào)用所述HDFS存儲(chǔ)所述待存儲(chǔ)文件中的數(shù)據(jù)。
[0022]結(jié)合第二方面,在第二種可能的實(shí)現(xiàn)方式中,所述待存儲(chǔ)文件的索引信息包括以下中的至少一種:所述待存儲(chǔ)文件的文件名、所述待存儲(chǔ)文件的文件大小、所述待存儲(chǔ)文件的生成時(shí)間。
[0023]結(jié)合第二方面至第二方面的第二種可能的實(shí)現(xiàn)方式中任一可能的實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中,所述裝置還包括:
[0024]檢查單元,用于定時(shí)檢查所述文件索引表中存儲(chǔ)的索引信息與所述HDFS中存儲(chǔ)的數(shù)據(jù)的對(duì)應(yīng)關(guān)系,若檢查到有匹配不上所述HDFS中存儲(chǔ)的數(shù)據(jù)的無效索引信息,則將所述無效索引信息移到預(yù)設(shè)的錯(cuò)誤記錄表中。
[0025]結(jié)合第二方面至第二方面的第二種可能的實(shí)現(xiàn)方式中任一可能的實(shí)現(xiàn)方式,在第四種可能的實(shí)現(xiàn)方式中,所述裝置還包括:
[0026]更新單元,用于當(dāng)對(duì)所述HDFS中存儲(chǔ)的數(shù)據(jù)進(jìn)行操作時(shí),根據(jù)所述操作的結(jié)果對(duì)所述文件索引表中所述數(shù)據(jù)對(duì)應(yīng)的索引信息進(jìn)行更新。
[0027]本發(fā)明實(shí)施例提供的海量文件的存儲(chǔ)方法和裝置,在.NET平臺(tái)架構(gòu)下通過JAVA虛擬機(jī)IKVM.NET調(diào)用海杜普分布式文件系統(tǒng)HDFS存儲(chǔ)待存儲(chǔ)文件中的數(shù)據(jù);當(dāng)所述待存儲(chǔ)文件中的數(shù)據(jù)存儲(chǔ)成功后,使用根據(jù)關(guān)系數(shù)據(jù)庫創(chuàng)建的文件索引表存儲(chǔ)所述待存儲(chǔ)文件的索引信息。本發(fā)明可以解決在.NET平臺(tái)架構(gòu)下利用HDFS存儲(chǔ)數(shù)據(jù)時(shí)系統(tǒng)運(yùn)行效率低以及部署成本高的問題。
【專利附圖】
【附圖說明】
[0028]為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0029]圖1為本發(fā)明實(shí)施例提供的本發(fā)明的實(shí)施例的架構(gòu)示意圖;
[0030]圖2為本發(fā)明實(shí)施例提供的一種海量文件的存儲(chǔ)方法的流程示意圖一;
[0031]圖3為本發(fā)明實(shí)施例提供的一種海量文件的存儲(chǔ)方法的流程示意圖二 ;
[0032]圖4為本發(fā)明實(shí)施例提供的一種海量文件的存儲(chǔ)裝置的結(jié)構(gòu)示意圖一;
[0033]圖5為本發(fā)明實(shí)施例提供的一種海量文件的存儲(chǔ)裝置的結(jié)構(gòu)示意圖二 ;
[0034]圖6為基于本發(fā)明實(shí)施例提供的一種海量文件的存儲(chǔ)裝置存儲(chǔ)海量文件的實(shí)施示意圖。
【具體實(shí)施方式】
[0035]下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0036]圖1所示為本發(fā)明的實(shí)施例的架構(gòu)示意圖,本發(fā)明涉及關(guān)系數(shù)據(jù)庫,關(guān)系數(shù)據(jù)庫是建立在關(guān)系數(shù)據(jù)庫模型基礎(chǔ)上的數(shù)據(jù)庫,借助于集合代數(shù)等概念和方法來處理數(shù)據(jù)庫中的數(shù)據(jù)。目前主流的關(guān)系數(shù)據(jù)庫有Oracle (甲骨文公司推出的關(guān)系數(shù)據(jù)庫管理系統(tǒng))、DB2(國(guó)際商業(yè)機(jī)器公司推出的關(guān)系型數(shù)據(jù)庫管理系統(tǒng))、MySQL(甲骨文公司推出的關(guān)系數(shù)據(jù)庫管理系統(tǒng))等。示例性的,圖1中以O(shè)racle系統(tǒng)為例。
[0037]本發(fā)明還涉及IKVM.NET, IKVM.NET是開源的基于.NET平臺(tái)架構(gòu)下公共語言運(yùn)行時(shí)(英文:common language runtime,簡(jiǎn)稱:CLR)的JAVA虛擬機(jī),可以通過IKVM.NET這個(gè)中介讓JAVA程序和.NET平臺(tái)的應(yīng)用程序一起協(xié)同工作。簡(jiǎn)單介紹IKVM.NET的作用原理:IKVM.NET的工具先將class文件(JAVA程序編譯后得到的)、JAR文件(Java歸檔文件)編譯為.NET平臺(tái)的通用中間語言(英文:Common Intermediate Language,簡(jiǎn)稱:CIL)程序集,然后在.NET平臺(tái)上運(yùn)行這些CIL程序集,這樣可以在基于.NET平臺(tái)開發(fā)時(shí)直接使用JAVA 的 API。
[0038]本發(fā)明提供的技術(shù)方案中將關(guān)系型數(shù)據(jù)庫和HDFS的特點(diǎn)進(jìn)行了結(jié)合,采用IKVM.NET做中介,使現(xiàn)有的基于.NET平臺(tái)架構(gòu)下CLR的系統(tǒng)不需要過多改造,即可對(duì)接基于JAVA的Hadoop平臺(tái),并可編寫程序調(diào)用HDFS,實(shí)現(xiàn)文件索引信息和文件的數(shù)據(jù)實(shí)體的分別存儲(chǔ),充分利用關(guān)系型數(shù)據(jù)庫和HDFS的優(yōu)點(diǎn),在.NET平臺(tái)架構(gòu)上實(shí)現(xiàn)海量文件的存儲(chǔ)的同時(shí)降低部署成本,提高系統(tǒng)的運(yùn)行效率。
[0039]本發(fā)明實(shí)施例提供一種海量文件的存儲(chǔ)方法,如圖2所示,該方法包括:
[0040]SlOl、在.NET平臺(tái)架構(gòu)下通過IKVM.NET調(diào)用HDFS存儲(chǔ)待存儲(chǔ)文件中的數(shù)據(jù)。
[0041]S102、當(dāng)待存儲(chǔ)文件中的數(shù)據(jù)存儲(chǔ)成功后,使用根據(jù)關(guān)系數(shù)據(jù)庫創(chuàng)建的文件索引表存儲(chǔ)該待存儲(chǔ)文件的索引信息。
[0042]本發(fā)明實(shí)施例提供的海量文件的存儲(chǔ)方法,在.NET平臺(tái)架構(gòu)下通過JAVA虛擬機(jī)IKVM.NET調(diào)用海杜普分布式文件系統(tǒng)HDFS存儲(chǔ)待存儲(chǔ)文件中的數(shù)據(jù);當(dāng)所述待存儲(chǔ)文件中的數(shù)據(jù)存儲(chǔ)成功后,使用根據(jù)關(guān)系數(shù)據(jù)庫創(chuàng)建的文件索引表存儲(chǔ)所述待存儲(chǔ)文件的索引信息。本發(fā)明可以解決在.NET平臺(tái)架構(gòu)下利用HDFS存儲(chǔ)數(shù)據(jù)時(shí)系統(tǒng)運(yùn)行效率低以及部署成本高的問題。為了使本領(lǐng)域技術(shù)人員能夠更清楚地理解本發(fā)明實(shí)施例提供的技術(shù)方案,下面通過具體的實(shí)施例,對(duì)本發(fā)明的實(shí)施例提供的海量文件的存儲(chǔ)方法進(jìn)行詳細(xì)說明,如圖3所示,該方法包括:
[0043]S201、在.NET平臺(tái)架構(gòu)下通過IKVM.NET調(diào)用HDFS存儲(chǔ)待存儲(chǔ)文件中的數(shù)據(jù)。
[0044]具體的,將使用JAVA語言編寫的用于調(diào)用HDFS存儲(chǔ)數(shù)據(jù)的程序通過IKVM.NET轉(zhuǎn)換為.NET平臺(tái)架構(gòu)下對(duì)應(yīng)的程序,執(zhí)行該對(duì)應(yīng)的程序以在.NET平臺(tái)架構(gòu)下調(diào)用HDFS存儲(chǔ)所述待存儲(chǔ)文件中的數(shù)據(jù)。
[0045]示例性的,使用JAVA語言編寫調(diào)用HDFS的程序;將該程序打包為一個(gè)JAR文件;安裝并配置IKVM.NET ;將該程序的JAR文件和該程序依賴的其他JAR文件復(fù)制到同一文件目錄下;使用IKVM.NET的CMD命令將該程序的JAR包轉(zhuǎn)化為.NET平臺(tái)架構(gòu)上可用的“應(yīng)用程序拓展(英文縮寫:DLL)文件,其中,CMD命令可以使用SharedClassLoader命令以保證該程序依賴的所有JAR文件都可以被添加;最后執(zhí)行OUT命令是生成該程序?qū)?yīng)的DLL文件。
[0046]另外,對(duì)于HDFS存儲(chǔ)待存儲(chǔ)文件中的數(shù)據(jù)的過程,本領(lǐng)域技術(shù)人員可以參照現(xiàn)有的技術(shù)方案中HDFS存儲(chǔ)數(shù)據(jù)的過程,在此不做贅述。
[0047]S202、當(dāng)待存儲(chǔ)文件中的數(shù)據(jù)存儲(chǔ)成功后,使用根據(jù)關(guān)系數(shù)據(jù)庫創(chuàng)建的文件索引表存儲(chǔ)待存儲(chǔ)文件的索引信息。
[0048]其中,待存儲(chǔ)文件的索引信息包括以下中的至少一種:待存儲(chǔ)文件的文件名、待存儲(chǔ)文件的文件大小、待存儲(chǔ)文件的生成時(shí)間。
[0049]具體的,將待存儲(chǔ)的文件中的數(shù)據(jù)向HDFS上傳后,判斷上傳是否成功,當(dāng)判斷上傳HDFS成功則使用根據(jù)關(guān)系數(shù)據(jù)庫創(chuàng)建的文件索引表存儲(chǔ)待存儲(chǔ)文件的索引信息后執(zhí)行S203 ;當(dāng)判斷上傳HDFS失敗,則向系統(tǒng)通知該待存儲(chǔ)文件的數(shù)據(jù)上傳錯(cuò)誤,系統(tǒng)可以通知?jiǎng)h除上傳的不完整的數(shù)據(jù)后重新向HDFS上傳數(shù)據(jù)。
[0050]S203、當(dāng)待存儲(chǔ)文件的索引信息存儲(chǔ)成功后,則確定完成待存儲(chǔ)文件的存儲(chǔ)。
[0051]具體的,將待存儲(chǔ)的文件中的索引信息向關(guān)系數(shù)據(jù)庫上傳后,判斷上傳是否成功,當(dāng)判斷上傳關(guān)系數(shù)據(jù)庫成功則確定待存儲(chǔ)的文件存儲(chǔ)完成;當(dāng)判斷上傳關(guān)系數(shù)據(jù)庫失敗,則向系統(tǒng)通知索引信息上傳錯(cuò)誤,系統(tǒng)可以通知?jiǎng)h除HDFS上已上傳的對(duì)應(yīng)的數(shù)據(jù)再次向HDFS上傳。
[0052]S204、定時(shí)檢查文件索引表中存儲(chǔ)的索引信息與HDFS中存儲(chǔ)的數(shù)據(jù)的對(duì)應(yīng)關(guān)系,若檢查到有匹配不上HDFS中存儲(chǔ)的數(shù)據(jù)的無效索引信息,則將無效索引信息移到預(yù)設(shè)的錯(cuò)誤記錄表中。
[0053]需要說明的是,通過執(zhí)行S204可以有效保證文件的索引信息和數(shù)據(jù)的一致性。
[0054]S205、當(dāng)對(duì)HDFS中存儲(chǔ)的數(shù)據(jù)進(jìn)行操作時(shí),根據(jù)操作的結(jié)果對(duì)文件索引表中數(shù)據(jù)對(duì)應(yīng)的索引信息進(jìn)行更新。
[0055]示例性的,當(dāng)對(duì)HDFS中存儲(chǔ)的數(shù)據(jù)移動(dòng)或刪除時(shí),相應(yīng)的,對(duì)關(guān)系數(shù)據(jù)庫中被移動(dòng)或被刪除的數(shù)據(jù)對(duì)應(yīng)的索引信息進(jìn)行更新。
[0056]本發(fā)明實(shí)施例提供的海量文件的存儲(chǔ)方法,在.NET平臺(tái)架構(gòu)下通過JAVA虛擬機(jī)IKVM.NET調(diào)用海杜普分布式文件系統(tǒng)HDFS存儲(chǔ)待存儲(chǔ)文件中的數(shù)據(jù);當(dāng)所述待存儲(chǔ)文件中的數(shù)據(jù)存儲(chǔ)成功后,使用根據(jù)關(guān)系數(shù)據(jù)庫創(chuàng)建的文件索引表存儲(chǔ)所述待存儲(chǔ)文件的索引信息。本發(fā)明可以解決在.NET平臺(tái)架構(gòu)下利用HDFS存儲(chǔ)數(shù)據(jù)時(shí)系統(tǒng)運(yùn)行效率低以及部署成本高的問題。
[0057]本發(fā)明實(shí)施例提供一種海量文件的存儲(chǔ)裝置10,如圖4所示,該裝置10包括:
[0058]第一存儲(chǔ)單元11,用于在.NET平臺(tái)架構(gòu)下通過IKVM.NET調(diào)用HDFS存儲(chǔ)待存儲(chǔ)文件中的數(shù)據(jù);
[0059]第二存儲(chǔ)單元12,用于當(dāng)待存儲(chǔ)文件中的數(shù)據(jù)存儲(chǔ)成功后,使用根據(jù)關(guān)系數(shù)據(jù)庫創(chuàng)建的文件索引表存儲(chǔ)該待存儲(chǔ)文件的索引信息。
[0060]可選的,第一存儲(chǔ)單元11具體用于:
[0061]將使用JAVA語言編寫的用于調(diào)用HDFS存儲(chǔ)數(shù)據(jù)的程序通過IKVM.NET轉(zhuǎn)換為.NET平臺(tái)架構(gòu)下對(duì)應(yīng)的程序,執(zhí)行該對(duì)應(yīng)的程序以在.NET平臺(tái)架構(gòu)下調(diào)用HDFS存儲(chǔ)該待存儲(chǔ)文件中的數(shù)據(jù)。
[0062]可選的,待存儲(chǔ)文件的索引信息包括以下中的至少一種:待存儲(chǔ)文件的文件名、待存儲(chǔ)文件的文件大小、待存儲(chǔ)文件的生成時(shí)間。
[0063]可選的,如圖5所示,該裝置10還包括:
[0064]檢查單元13,用于定時(shí)檢查文件索引表中存儲(chǔ)的索引信息與HDFS中存儲(chǔ)的數(shù)據(jù)的對(duì)應(yīng)關(guān)系,若檢查到有匹配不上HDFS中存儲(chǔ)的數(shù)據(jù)的無效索引信息,則將無效索引信息移到預(yù)設(shè)的錯(cuò)誤記錄表中。
[0065]更新單元14,用于當(dāng)對(duì)HDFS中存儲(chǔ)的數(shù)據(jù)進(jìn)行操作時(shí),根據(jù)操作的結(jié)果對(duì)文件索引表中數(shù)據(jù)對(duì)應(yīng)的索引信息進(jìn)行更新。
[0066]圖6為基于本實(shí)施例提供的裝置在存儲(chǔ)海量文件時(shí)的實(shí)施示意圖。
[0067]本實(shí)施例用于實(shí)現(xiàn)上述各方法實(shí)施例,本實(shí)施例中各個(gè)單元的工作流程和工作原理參見上述各方法實(shí)施例中的描述,在此不再贅述。
[0068]本發(fā)明實(shí)施例提供的海量文件的存儲(chǔ)裝置,在.NET平臺(tái)架構(gòu)下通過JAVA虛擬機(jī)IKVM.NET調(diào)用海杜普分布式文件系統(tǒng)HDFS存儲(chǔ)待存儲(chǔ)文件中的數(shù)據(jù);當(dāng)所述待存儲(chǔ)文件中的數(shù)據(jù)存儲(chǔ)成功后,使用根據(jù)關(guān)系數(shù)據(jù)庫創(chuàng)建的文件索引表存儲(chǔ)所述待存儲(chǔ)文件的索引信息。本發(fā)明可以解決在.NET平臺(tái)架構(gòu)下利用HDFS存儲(chǔ)數(shù)據(jù)時(shí)系統(tǒng)運(yùn)行效率低以及部署成本高的問題。以上所描述的裝置實(shí)施例僅僅是示意性的,例如,模塊的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式。另一點(diǎn),所顯示或討論的模塊相互之間的連接可以是通過一些接口,可以是電性,機(jī)械或其它的形式。所述各個(gè)模塊可以是或者也可以不是物理上分開的,可以是或者也可以不是物理單元??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部模塊來實(shí)現(xiàn)本實(shí)施例方案的目的。
[0069]另外,在本發(fā)明各個(gè)實(shí)施例中的各功能模塊可以集成在一個(gè)處理模塊中,也可以是各個(gè)模塊單獨(dú)物理包括,也可以兩個(gè)或兩個(gè)以上模塊集成在一個(gè)模塊中。上述集成的模塊既可以采用硬件的形式實(shí)現(xiàn),也可以采用硬件加軟件功能模塊的形式實(shí)現(xiàn)。
[0070]上述以軟件功能單元的形式實(shí)現(xiàn)的集成的模塊,可以存儲(chǔ)在一個(gè)計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中。上述軟件功能模塊存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述方法的部分步驟。而前述的存儲(chǔ)介質(zhì)包括:U盤、移動(dòng)硬盤、只讀存儲(chǔ)器(英文:Read-0nly Memory,簡(jiǎn)稱ROM)、隨機(jī)存取存儲(chǔ)器(英文:Random Access Memory,簡(jiǎn)稱RAM)、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。
[0071]以上所述,僅為本發(fā)明的【具體實(shí)施方式】,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本【技術(shù)領(lǐng)域】的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)以所述權(quán)利要求的保護(hù)范圍為準(zhǔn)。
【權(quán)利要求】
1.一種海量文件的存儲(chǔ)方法,其特征在于,包括: 在.NET平臺(tái)架構(gòu)下通過JAVA虛擬機(jī)IKVM.NET調(diào)用海杜普分布式文件系統(tǒng)HDFS存儲(chǔ)待存儲(chǔ)文件中的數(shù)據(jù); 當(dāng)所述待存儲(chǔ)文件中的數(shù)據(jù)存儲(chǔ)成功后,使用根據(jù)關(guān)系數(shù)據(jù)庫創(chuàng)建的文件索引表存儲(chǔ)所述待存儲(chǔ)文件的索引信息。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述在.NET平臺(tái)架構(gòu)下通過JAVA虛擬機(jī)IKVM.NET調(diào)用海杜普分布式文件系統(tǒng)HDFS存儲(chǔ)待存儲(chǔ)文件中的數(shù)據(jù)包括: 將使用JAVA語言編寫的用于調(diào)用所述HDFS存儲(chǔ)數(shù)據(jù)的程序通過所述IKVM.NET轉(zhuǎn)換為所述.NET平臺(tái)架構(gòu)下對(duì)應(yīng)的程序,執(zhí)行所述對(duì)應(yīng)的程序以在所述.NET平臺(tái)架構(gòu)下調(diào)用所述HDFS存儲(chǔ)所述待存儲(chǔ)文件中的數(shù)據(jù)。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述待存儲(chǔ)文件的索引信息包括以下中的至少一種:所述待存儲(chǔ)文件的文件名、所述待存儲(chǔ)文件的文件大小、所述待存儲(chǔ)文件的生成時(shí)間。
4.根據(jù)權(quán)利要求1至3任一項(xiàng)所述的方法,其特征在于,所述方法還包括: 定時(shí)檢查所述文件索引表中存儲(chǔ)的索引信息與所述HDFS中存儲(chǔ)的數(shù)據(jù)的對(duì)應(yīng)關(guān)系,若檢查到有匹配不上所述HDFS中存儲(chǔ)的數(shù)據(jù)的無效索引信息,則將所述無效索引信息移到預(yù)設(shè)的錯(cuò)誤記錄表中。
5.根據(jù)權(quán)利要求1至3任一項(xiàng)所述的方法,其特征在于,所述方法還包括: 當(dāng)對(duì)所述HDFS中存儲(chǔ)的數(shù)據(jù)進(jìn)行操作時(shí),根據(jù)所述操作的結(jié)果對(duì)所述文件索引表中所述數(shù)據(jù)對(duì)應(yīng)的索引信息進(jìn)行更新。
6.一種海量文件的存儲(chǔ)裝置,其特征在于,包括: 第一存儲(chǔ)單元,用于在.NET平臺(tái)架構(gòu)下通過JAVA虛擬機(jī)IKVM.NET調(diào)用海杜普分布式文件系統(tǒng)HDFS存儲(chǔ)待存儲(chǔ)文件中的數(shù)據(jù); 第二存儲(chǔ)單元,用于當(dāng)所述待存儲(chǔ)文件中的數(shù)據(jù)存儲(chǔ)成功后,使用根據(jù)關(guān)系數(shù)據(jù)庫創(chuàng)建的文件索引表存儲(chǔ)所述待存儲(chǔ)文件的索引信息。
7.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述第一存儲(chǔ)單元具體用于: 將使用JAVA語言編寫的用于調(diào)用所述HDFS存儲(chǔ)數(shù)據(jù)的程序通過所述IKVM.NET轉(zhuǎn)換為所述.NET平臺(tái)架構(gòu)下對(duì)應(yīng)的程序,執(zhí)行所述對(duì)應(yīng)的程序以在所述.NET平臺(tái)架構(gòu)下調(diào)用所述HDFS存儲(chǔ)所述待存儲(chǔ)文件中的數(shù)據(jù)。
8.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述待存儲(chǔ)文件的索引信息包括以下中的至少一種:所述待存儲(chǔ)文件的文件名、所述待存儲(chǔ)文件的文件大小、所述待存儲(chǔ)文件的生成時(shí)間。
9.根據(jù)權(quán)利要求6至8任一項(xiàng)所述的裝置,其特征在于,所述裝置還包括: 檢查單元,用于定時(shí)檢查所述文件索引表中存儲(chǔ)的索引信息與所述HDFS中存儲(chǔ)的數(shù)據(jù)的對(duì)應(yīng)關(guān)系,若檢查到有匹配不上所述HDFS中存儲(chǔ)的數(shù)據(jù)的無效索引信息,則將所述無效索引信息移到預(yù)設(shè)的錯(cuò)誤記錄表中。
10.根據(jù)權(quán)利要求6至8任一項(xiàng)所述的裝置,其特征在于,所述裝置還包括: 更新單元,用于當(dāng)對(duì)所述HDFS中存儲(chǔ)的數(shù)據(jù)進(jìn)行操作時(shí),根據(jù)所述操作的結(jié)果對(duì)所述文件索引表中所述數(shù)據(jù)對(duì)應(yīng)的索引信息進(jìn)行更新。
【文檔編號(hào)】G06F17/30GK104331518SQ201410709125
【公開日】2015年2月4日 申請(qǐng)日期:2014年11月27日 優(yōu)先權(quán)日:2014年11月27日
【發(fā)明者】楊勇, 辛國(guó)茂, 趙仁明, 亓開元 申請(qǐng)人:浪潮(北京)電子信息產(chǎn)業(yè)有限公司