两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

一種海量數(shù)據(jù)的處理方法及處理裝置的制作方法

文檔序號(hào):6484304閱讀:222來(lái)源:國(guó)知局
專利名稱:一種海量數(shù)據(jù)的處理方法及處理裝置的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及數(shù)據(jù)處理領(lǐng)域,特別是涉及一種海量數(shù)據(jù)的處理方法及處理裝置。
背景技術(shù)
在數(shù)據(jù)處理行業(yè),需要處理的數(shù)據(jù)越來(lái)越多,數(shù)據(jù)文件越來(lái)越大。目前,
針對(duì)海量數(shù)據(jù)的存取問(wèn)題, 一般歸結(jié)為以下2種方法
1) 將海量數(shù)據(jù)納入數(shù)據(jù)庫(kù)進(jìn)行管理;
2) 將數(shù)據(jù)對(duì)象建立序列化存入普通的文件。
在實(shí)現(xiàn)本發(fā)明的過(guò)程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)中至少存在如下問(wèn)題 方法1)是現(xiàn)在比較流行的海量數(shù)據(jù)管理方式,雖然數(shù)據(jù)庫(kù)管理大文件海
量數(shù)據(jù)有一定的優(yōu)勢(shì),但由于該方法采用的是數(shù)據(jù)庫(kù)來(lái)進(jìn)行數(shù)據(jù)管理,對(duì)于海
量數(shù)據(jù)來(lái)說(shuō),最大瓶頸是效率問(wèn)題,對(duì)于效率要求比較高的系統(tǒng)來(lái)說(shuō),數(shù)據(jù)庫(kù)
無(wú)法滿足高效的需求;
而方法2)只能解決小數(shù)據(jù)量的問(wèn)題,無(wú)法滿足海量數(shù)據(jù)的存儲(chǔ)需求。 所以,對(duì)大數(shù)據(jù)量文件的快速存取訪問(wèn),越來(lái)越成為行業(yè)的技術(shù)瓶頸,而
傳統(tǒng)的通過(guò)I/O方式讀寫(xiě)文件很難滿足海量數(shù)據(jù)大文件的要求。

發(fā)明內(nèi)容
為了解決上述問(wèn)題,本發(fā)明的目的是提供一種海量數(shù)據(jù)的處理方法及處理 裝置,以提高對(duì)海量數(shù)據(jù)的存取效率。
為了實(shí)現(xiàn)上述目的,本發(fā)明提供了一種海量數(shù)據(jù)的處理方法,其中,包括 設(shè)置一數(shù)據(jù)文件及索引文件,所述數(shù)據(jù)文件用于存儲(chǔ)數(shù)據(jù)對(duì)象,所述數(shù)據(jù) 文件包括至少一個(gè)文件數(shù)據(jù)塊,所述數(shù)據(jù)文件中、每個(gè)文件數(shù)據(jù)塊的長(zhǎng)度相等; 所述索引文件與所述數(shù)據(jù)文件相對(duì)應(yīng),所述索引文件包括所述數(shù)據(jù)文件中存儲(chǔ)的每個(gè)數(shù)據(jù)對(duì)象在所述數(shù)據(jù)文件中的地址偏移;
在將數(shù)據(jù)對(duì)象存入所述數(shù)據(jù)文件時(shí),判斷所述數(shù)據(jù)文件中、游標(biāo)當(dāng)前指向 的文件數(shù)據(jù)塊的剩余空間是否足夠存儲(chǔ)待存儲(chǔ)的數(shù)據(jù)對(duì)象;如是,則將所述待 存儲(chǔ)的數(shù)據(jù)對(duì)象存入所述剩余空間,并在所述索引文件中記錄所述新存入數(shù)據(jù) 對(duì)象的地址偏移;否則,在所述待存儲(chǔ)的數(shù)據(jù)對(duì)象將所述剩余空間填滿后,所 述數(shù)據(jù)文件向系統(tǒng)申請(qǐng)一塊或多塊新文件數(shù)據(jù)塊,并將所述待存儲(chǔ)數(shù)據(jù)對(duì)象中 還未存入的剩余數(shù)據(jù)存入到所述新文件數(shù)據(jù)塊中,并在所述索引文件中記錄所 述新存入數(shù)據(jù)對(duì)象的地址偏移;
通過(guò)將所述游標(biāo)指向欲讀取的數(shù)據(jù)對(duì)象的地址偏移來(lái)讀取所述數(shù)據(jù)文件 中存儲(chǔ)的數(shù)據(jù)對(duì)象。
優(yōu)選地,所述的處理方法,其中,所述數(shù)據(jù)文件中的文件數(shù)據(jù)塊的長(zhǎng)度為 系統(tǒng)設(shè)定的最小分配粒度的整數(shù)倍。
優(yōu)選地,所述的處理方法,其中,所述數(shù)據(jù)對(duì)象為二進(jìn)制對(duì)象,或者數(shù) 據(jù)流。
優(yōu)選地,所述的處理方法,其中,所述存儲(chǔ)在所述文件數(shù)據(jù)塊中的數(shù)據(jù)對(duì) 象包括數(shù)據(jù)狀態(tài)、數(shù)據(jù)長(zhǎng)度及數(shù)據(jù)內(nèi)容;所述數(shù)據(jù)狀態(tài)包括插入狀態(tài)和移 除狀態(tài)。
優(yōu)選地,所述的處理方法,其中,所述方法還包括刪除所述數(shù)據(jù)文件中的 數(shù)據(jù)對(duì)象的步驟,具體為
根據(jù)輸入的、欲刪除數(shù)據(jù)對(duì)象的索引號(hào),從所述索引文件中獲得所述欲刪 除數(shù)據(jù)對(duì)象的地址偏移,并將所述欲刪除數(shù)據(jù)對(duì)象的數(shù)據(jù)狀態(tài)設(shè)置為移除狀 態(tài)。
優(yōu)選地,所述的處理方法,其中,還包括遍歷讀取所述數(shù)據(jù)文件中數(shù)據(jù) 對(duì)象的步驟,具體為
步驟a,將所述數(shù)據(jù)文件的游標(biāo)置為數(shù)據(jù)文件頭;
步驟b,將所述游標(biāo)移動(dòng)至下一個(gè)數(shù)據(jù)對(duì)象的地址偏移,并獲取游標(biāo)當(dāng)前 指向的數(shù)據(jù)對(duì)象的數(shù)據(jù)內(nèi)容、數(shù)據(jù)長(zhǎng)度及數(shù)據(jù)狀態(tài);
步驟c,判斷是否已讀取完所有的數(shù)據(jù)對(duì)象;如是,則結(jié)束;否則,轉(zhuǎn)入 步驟b。優(yōu)選地,所述的處理方法,其中,還包括隨機(jī)讀取所述數(shù)據(jù)文件中數(shù)據(jù) 對(duì)象的步驟,具體為
根據(jù)輸入的、欲隨機(jī)讀取的數(shù)據(jù)對(duì)象的索引號(hào),從所述索引文件中獲取所 述欲隨機(jī)讀取的數(shù)據(jù)對(duì)象在所述數(shù)據(jù)文件中的地址偏移;
將所述數(shù)據(jù)文件的游標(biāo)指向所述獲取的地址偏移,并讀取該地址偏移對(duì)應(yīng) 的數(shù)據(jù)對(duì)象的數(shù)據(jù)內(nèi)容、數(shù)據(jù)長(zhǎng)度及數(shù)據(jù)狀態(tài)。
另一方面,提供了一種海量數(shù)據(jù)的處理裝置,其中,包括
文件設(shè)置模塊,用于設(shè)置一數(shù)據(jù)文件及索引文件,所述數(shù)據(jù)文件用于存儲(chǔ) 數(shù)據(jù)對(duì)象,所述數(shù)據(jù)文件包括至少一個(gè)文件數(shù)據(jù)塊,所述數(shù)據(jù)文件中、每個(gè)文 件數(shù)據(jù)塊的長(zhǎng)度相等;所述索引文件與所述數(shù)據(jù)文件相對(duì)應(yīng),所述索引文件包 括所述數(shù)據(jù)文件中存儲(chǔ)的每個(gè)數(shù)據(jù)對(duì)象在所述數(shù)據(jù)文件中的地址偏移;
存儲(chǔ)模塊,用于在將數(shù)據(jù)對(duì)象存入所述文件設(shè)置模塊設(shè)置的所述數(shù)據(jù)文件 時(shí),判斷所述數(shù)據(jù)文件中、游標(biāo)當(dāng)前指向的文件數(shù)據(jù)塊的剩余空間是否足夠存 儲(chǔ)待存儲(chǔ)的數(shù)據(jù)對(duì)象,并在所述索引文件中記錄所述新存入數(shù)據(jù)對(duì)象的地址偏 移;如是,則將所述待存儲(chǔ)的數(shù)據(jù)對(duì)象存入所述剩余空間;否則,在所述待存 儲(chǔ)的數(shù)據(jù)對(duì)象將所述剩余空間填滿后,所述數(shù)據(jù)文件向系統(tǒng)申請(qǐng)一塊或多塊新 文件數(shù)據(jù)塊,并將所述待存儲(chǔ)數(shù)據(jù)對(duì)象中還未存入的剩余數(shù)據(jù)存入到所述新文 件數(shù)據(jù)塊中,并在所述索引文件中記錄所述新存入數(shù)據(jù)對(duì)象的地址偏移;
讀取模塊,用于通過(guò)將所述游標(biāo)指向欲讀取的數(shù)據(jù)對(duì)象的地址偏移來(lái)讀取 所述數(shù)據(jù)文件中存儲(chǔ)的數(shù)據(jù)對(duì)象。
優(yōu)選地,所述的處理裝置,其中,所述數(shù)據(jù)文件中的文件數(shù)據(jù)塊的長(zhǎng)度為 系統(tǒng)設(shè)定的最'J 、分配粒度的整數(shù)倍。
優(yōu)選地,所述的處理裝置,其中,所述存儲(chǔ)在所述文件數(shù)據(jù)塊中的數(shù)據(jù)對(duì) 象包括數(shù)據(jù)狀態(tài)、數(shù)據(jù)長(zhǎng)度及數(shù)據(jù)內(nèi)容;所述數(shù)據(jù)狀態(tài)包括插入狀態(tài)和移 除狀態(tài)。
上述技術(shù)方案中的至少一個(gè)技術(shù)方案具有如下有益效果 通過(guò)設(shè)置數(shù)據(jù)文件和索引文件、在索引文件中存儲(chǔ)數(shù)據(jù)文件中各數(shù)據(jù)對(duì)象 對(duì)應(yīng)的地址偏移、及由數(shù)據(jù)文件申請(qǐng)文件數(shù)據(jù)塊,可實(shí)現(xiàn)文件映射內(nèi)存的存取 方式,從而可通過(guò)指針訪問(wèn)磁盤(pán)文件,在進(jìn)程地址空間中將i茲盤(pán)的文件部分或者全部映射到特定地址范圍,然后通過(guò)指針就可以訪問(wèn)內(nèi)存映射文件的內(nèi)容,
從而不必對(duì)文件執(zhí)行i/o操作,這樣對(duì)大數(shù)據(jù)量來(lái)說(shuō),存取效率極高。且由于
數(shù)據(jù)文件中的文件數(shù)據(jù)塊都是等長(zhǎng)的,從而系統(tǒng)每次分配相同長(zhǎng)度的文件數(shù)據(jù) 塊。這樣在數(shù)據(jù)文件映射到內(nèi)存時(shí),每次文件映射,都只映射了一塊固定長(zhǎng)度 的文件塊,從而不必記載每一次需要映射的文件長(zhǎng)度,統(tǒng)一了規(guī)則,節(jié)約了大 量的內(nèi)存,也提高了效率。


圖1為本發(fā)明一實(shí)施例的海量數(shù)據(jù)的處理方法的流程示意圖2為本發(fā)明一實(shí)施例中,數(shù)據(jù)文件和索引文件具體文件結(jié)構(gòu)的一個(gè)例
子;
圖3為本發(fā)明一實(shí)施例中,插入操作的流程示意圖4為本發(fā)明一實(shí)施例中,遍歷讀取操作的流程示意圖5為本發(fā)明一實(shí)施例中,遍歷讀取操作的一種具體實(shí)現(xiàn)邏輯的流程示意
圖6為本發(fā)明實(shí)施例的海量數(shù)據(jù)的處理裝置的結(jié)構(gòu)示意圖。
具體實(shí)施例方式
為使本發(fā)明要解決的技術(shù)問(wèn)題、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附 圖及具體實(shí)施例進(jìn)行詳細(xì)描述。
圖1為本發(fā)明實(shí)施例中海量數(shù)據(jù)處理方法的流程示意圖。如圖1,本發(fā)明 一實(shí)施例的海量凝:據(jù)處理方法包括
步驟IOI,設(shè)置一數(shù)據(jù)文件及索引文件,該數(shù)據(jù)文件用于存儲(chǔ)數(shù)據(jù)對(duì)象, 所述數(shù)據(jù)文件包括至少一個(gè)文件數(shù)據(jù)塊,所述數(shù)據(jù)文件中、每個(gè)文件數(shù)據(jù)塊的 長(zhǎng)度相等;所述索引文件與所述數(shù)據(jù)文件相對(duì)應(yīng),所述索引文件包括所述數(shù)據(jù) 文件中存儲(chǔ)的每個(gè)數(shù)據(jù)對(duì)象在所述數(shù)據(jù)文件中的地址偏移;
步驟102,在將數(shù)據(jù)對(duì)象存入所述數(shù)據(jù)文件時(shí),判斷所述數(shù)據(jù)文件中、游 標(biāo)當(dāng)前指向的文件數(shù)據(jù)塊的剩余空間是否足夠存儲(chǔ)待存儲(chǔ)的數(shù)據(jù)對(duì)象;如是, 則執(zhí)行步驟103;否則,執(zhí)行步驟104;步驟103,將所述待存儲(chǔ)的數(shù)據(jù)對(duì)象存入所述剩余空間,并在所述索引文 件中記錄所述新存入數(shù)據(jù)對(duì)象的地址偏移,結(jié)束流程;
步驟104,在所述待存儲(chǔ)的數(shù)據(jù)對(duì)象將所述剩余空間填滿后,所述數(shù)據(jù)文 件向系統(tǒng)申請(qǐng)一塊或多塊新文件數(shù)據(jù)塊,并將所述待存儲(chǔ)數(shù)據(jù)對(duì)象中還未存入 的剩余數(shù)據(jù)存入到所述新文件數(shù)據(jù)塊中,并在所述索引文件中記錄所述新存入 數(shù)據(jù)對(duì)象的地址偏移;
步驟105,通過(guò)將所述游標(biāo)指向欲讀取的數(shù)據(jù)對(duì)象的地址偏移來(lái)讀取所述 數(shù)據(jù)文件中存儲(chǔ)的數(shù)據(jù)對(duì)象。
本發(fā)明的實(shí)施例中,數(shù)據(jù)對(duì)象為任意二進(jìn)制對(duì)象,或者數(shù)據(jù)流。
本發(fā)明實(shí)施例中,通過(guò)設(shè)置數(shù)據(jù)文件和索引文件、在索引文件中記錄數(shù)據(jù) 文件中各數(shù)據(jù)對(duì)象的地址偏移、及由數(shù)據(jù)文件申請(qǐng)文件數(shù)據(jù)塊,可實(shí)現(xiàn)文件映 射內(nèi)存的存取方式,該存儲(chǔ)方式提供了一種獨(dú)特的內(nèi)存管理特征,它能夠通過(guò) 指針訪問(wèn)磁盤(pán)文件,就像是訪問(wèn)動(dòng)態(tài)內(nèi)存一樣。在進(jìn)程地址空間中將磁盤(pán)的文 件部分或者全部映射到特定地址范圍,然后通過(guò)指針就可以訪問(wèn)內(nèi)存映射文件 的內(nèi)容,從而不必對(duì)文件執(zhí)行i/o操作,這樣對(duì)大數(shù)據(jù)量來(lái)說(shuō),存取效率極高。 且由于數(shù)據(jù)文件中的文件數(shù)據(jù)塊都是等長(zhǎng)的,從而系統(tǒng)每次分配相同長(zhǎng)度的文 件數(shù)據(jù)塊。這樣在數(shù)據(jù)文件映射到內(nèi)存時(shí),每次文件映射,都只映射了一塊固 定長(zhǎng)度的文件塊,從而不必記載每一次需要映射的文件長(zhǎng)度,統(tǒng)一了規(guī)則,節(jié) 約了大量的內(nèi)存,也提高了效率。
下面通過(guò)一個(gè)具體例子對(duì)本發(fā)明進(jìn)行說(shuō)明。
在該例中,通過(guò)設(shè)置數(shù)據(jù)文件和索引文件來(lái)實(shí)現(xiàn)數(shù)據(jù)如海量數(shù)據(jù)的存取。 其中,數(shù)據(jù)文件的物理方式表現(xiàn)為一組定長(zhǎng)的文件數(shù)據(jù)塊(Block),每個(gè)文件 數(shù)據(jù)塊的長(zhǎng)度相等,且為系統(tǒng)設(shè)定的最小分配粒度的整數(shù)倍。該例中,利用定 長(zhǎng)的文件數(shù)據(jù)塊來(lái)存儲(chǔ)變長(zhǎng)的數(shù)據(jù)對(duì)象。示例性地,如Windows系統(tǒng)中,系 統(tǒng)設(shè)定的最小分配粒度是64k,則數(shù)據(jù)文件中每個(gè)文件數(shù)據(jù)塊的長(zhǎng)度為64k的 整數(shù)倍。數(shù)據(jù)文件的邏輯方式表現(xiàn)為一系列的變長(zhǎng)數(shù)據(jù)對(duì)象。每個(gè)數(shù)據(jù)對(duì)象以 預(yù)定的方式存儲(chǔ)在文件數(shù)據(jù)塊中。索引文件與數(shù)據(jù)文件相對(duì)應(yīng),用于記錄每個(gè) 數(shù)據(jù)對(duì)象在數(shù)據(jù)文件中的地址偏移(Offset)。示例性地,該地址偏移為數(shù)據(jù)對(duì) 象的起始位置距離文件頭的距離。示例性地,通過(guò)數(shù)據(jù)對(duì)象的索引號(hào)從該索引文件中獲得對(duì)應(yīng)Blob的地址偏移。示例性地,該索引號(hào)可對(duì)應(yīng)于Blob在數(shù)據(jù) 文件中的序號(hào)。
本發(fā)明的實(shí)施例中,數(shù)據(jù)文件的文件數(shù)據(jù)塊的長(zhǎng)度為系統(tǒng)設(shè)定的最小分配 粒度的整數(shù)倍,從而每次需要分配系統(tǒng)設(shè)定的最小粒度整數(shù)倍的文件塊長(zhǎng)度, 對(duì)于采用基于頁(yè)(Page-based)的虛擬內(nèi)存系統(tǒng),虛擬內(nèi)存管理采用頁(yè)的方式 進(jìn)行數(shù)據(jù)傳輸,統(tǒng)一以相同的方式執(zhí)行存盤(pán)讀寫(xiě)操作,減少了讀寫(xiě)次數(shù),極大 地提高讀寫(xiě)能力。。
圖2示出了本發(fā)明的實(shí)施例中,數(shù)據(jù)文件和索引文件具體文件結(jié)構(gòu)的一個(gè) 例子。在該例中,數(shù)據(jù)對(duì)象為二進(jìn)制大數(shù)據(jù)對(duì)象(Blob)。每個(gè)Blob包括數(shù) 據(jù)狀態(tài)、數(shù)據(jù)長(zhǎng)度和數(shù)據(jù)內(nèi)容。數(shù)據(jù)狀態(tài)包括插入狀態(tài)和移除狀態(tài);所述插 入狀態(tài),用于標(biāo)識(shí)所述數(shù)據(jù)狀態(tài)為存入的有效數(shù)據(jù);所述移除狀態(tài),用于標(biāo)識(shí) 所述數(shù)據(jù)狀態(tài)為已刪除的無(wú)效數(shù)據(jù)。物理上,數(shù)據(jù)文件中已刪除的數(shù)據(jù)對(duì)象仍 然存在,但在讀取數(shù)據(jù)時(shí),當(dāng)讀取的數(shù)據(jù)對(duì)象的數(shù)據(jù)狀態(tài)為移除時(shí),可判斷出 該數(shù)據(jù)為已刪除的數(shù)據(jù)。如圖2,示例性但不作為限制地,在數(shù)據(jù)文件中,每 個(gè)Blob的記錄方式可以為 一個(gè)字節(jié)即1Byte的^:據(jù)狀態(tài)+ 4Byte的lt據(jù)長(zhǎng)度 + 118丫16的數(shù)據(jù)內(nèi)容,n為自然數(shù)。其中,數(shù)據(jù)狀態(tài)包括插入狀態(tài)和移除狀 態(tài),用于標(biāo)示該數(shù)據(jù)對(duì)象是插入的數(shù)據(jù)對(duì)象還是已經(jīng)刪除的數(shù)據(jù)對(duì)象。該例的 索引文件中,每4個(gè)字節(jié)記錄一個(gè)地址偏移,不同數(shù)據(jù)對(duì)象的地址偏移按照數(shù) 據(jù)對(duì)象在數(shù)據(jù)文件中的順序依次排列。當(dāng)然,上述用于記錄數(shù)據(jù)狀態(tài)、數(shù)據(jù)長(zhǎng) 度和地址偏移的字節(jié)數(shù)不限于上述提到的,所用的字節(jié)數(shù)可以更多也可以更少。
本發(fā)明的實(shí)施例中,通過(guò)對(duì)上述數(shù)據(jù)文件和/或索引文件進(jìn)行操作可實(shí)現(xiàn) 對(duì)海量數(shù)據(jù)的存儲(chǔ)、刪除和讀取。下面對(duì)上述幾個(gè)文件操作分別進(jìn)行說(shuō)明
插入操作將欲存儲(chǔ)的數(shù)據(jù)對(duì)象如Blob插入數(shù)據(jù)文件。圖3示出了本發(fā) 明實(shí)施例的插入操作的流程示意圖。如圖3,該插入操作包括
步驟301,在輸入欲插入的Blob的長(zhǎng)度以及Blob的數(shù)據(jù)內(nèi)容后,判斷數(shù) 據(jù)文件中游標(biāo)當(dāng)前指向的Block的剩余空間是否足夠存儲(chǔ)插入的Blob;如是, 則執(zhí)行步驟302;否則,執(zhí)行步驟303;
步驟302,將該Blob直接存入該剩余空間,并將該Blob的狀態(tài)置為插入狀態(tài),然后在索引文件中記錄該Blob的地址偏移;
步驟303,首先用該Blob將上述剩余空間填滿,然后,數(shù)據(jù)文件向系統(tǒng) 申請(qǐng)一塊或多塊新的Block,繼續(xù)將未填入的Blob的剩余內(nèi)容填充到上述新申 請(qǐng)的Block中,然后將該Blob的狀態(tài)置為插入狀態(tài),并在填充動(dòng)作完成后, 在索引文件中記錄該Blob的地址偏移。
刪除操作刪除數(shù)據(jù)文件中的一個(gè)變長(zhǎng)數(shù)據(jù)對(duì)象。具體包括輸入欲刪除 Blob的索引號(hào);根據(jù)該索引號(hào),從索引文件中獲得該變長(zhǎng)數(shù)據(jù)在數(shù)據(jù)文件中 的地址偏移,并將該Blob的狀態(tài)置為移除狀態(tài)。
在本發(fā)明的實(shí)施例中,數(shù)據(jù)對(duì)象寫(xiě)入數(shù)據(jù)文件后,刪除數(shù)據(jù)對(duì)象時(shí),物理 上并不將該刪除的數(shù)據(jù)對(duì)象移除,而只是將該刪除的數(shù)據(jù)對(duì)象的狀態(tài)設(shè)置為移 除狀態(tài)。這樣能提高海量數(shù)據(jù)的存取效率。
遍歷獲取操作依次遍歷數(shù)據(jù)文件中存儲(chǔ)的所有變長(zhǎng)數(shù)據(jù)對(duì)象。圖4示出 了本發(fā)明實(shí)施例的遍歷讀取操作的流程示意圖。如圖4,該操作包括
步驟401,重置文件游標(biāo),將數(shù)據(jù)文件的游標(biāo)設(shè)置為數(shù)據(jù)文件頭;
步驟402,移動(dòng)游標(biāo)至下一個(gè)Blob的地址偏移,然后獲取游標(biāo)當(dāng)前指向 的Blob的數(shù)據(jù)內(nèi)容、數(shù)據(jù)長(zhǎng)度及數(shù)據(jù)狀態(tài);
步驟403,判斷是否已讀取完所有的數(shù)據(jù)對(duì)象;如是,則結(jié)束;否則,轉(zhuǎn) 入執(zhí)行步驟402,繼續(xù)讀耳又尚未讀取的Blob。
示例性地,圖5為遍歷獲取的一個(gè)具體實(shí)現(xiàn)邏輯的流程示意圖。如圖5, 該具體實(shí)現(xiàn)包括
步驟501,重置文件游標(biāo);
步驟502,移動(dòng)游標(biāo)到下一個(gè)地址;
步驟503,判斷該地址是否為文件尾;如是,則結(jié)束讀?。环駝t,執(zhí)行步 驟504;
步驟504,讀取游標(biāo)當(dāng)前指向地址對(duì)應(yīng)的Blob的數(shù)據(jù)狀態(tài)、數(shù)據(jù)長(zhǎng)度及 數(shù)據(jù)內(nèi)容,并在讀取完該Blob的內(nèi)容后,轉(zhuǎn)入執(zhí)行步驟502。
隨機(jī)讀取操作,用于隨機(jī)獲取數(shù)據(jù)文件中指定的數(shù)據(jù)對(duì)象。該操作,具體 包括
根據(jù)輸入的、欲隨機(jī)讀取的數(shù)據(jù)對(duì)象的索引號(hào),從所述索引文件中獲取所述欲隨機(jī)讀取的數(shù)據(jù)對(duì)象在所述數(shù)據(jù)文件中的地址偏移; 將所述^據(jù)文件的游標(biāo)指向所述獲取的地址偏移;
判斷該地址偏移是不是數(shù)據(jù)文件的文件尾;如是,則結(jié)束流程;否則,讀 取該地址偏移對(duì)應(yīng)的數(shù)據(jù)對(duì)象的數(shù)據(jù)內(nèi)容、數(shù)據(jù)長(zhǎng)度及數(shù)據(jù)狀態(tài)。
利用本發(fā)明上述實(shí)施例的文件結(jié)構(gòu)和文件操作,在如下測(cè)試環(huán)境下,存儲(chǔ) 2千萬(wàn)個(gè)對(duì)象數(shù)據(jù),存儲(chǔ)時(shí)間是1281毫秒,全部讀取時(shí)間406毫秒,文件大 小是488320KB。
測(cè)試環(huán)境
Window XP系統(tǒng)
Intel Core2 Duo CPU 2.10HZ
2G內(nèi)存,
Hitachi HTS542516K9A300磁盤(pán)
上述測(cè)試用例僅僅是用來(lái)說(shuō)明利用本發(fā)明實(shí)施例的技術(shù)方案,大大提高了 對(duì)海量數(shù)據(jù)的存取效率,并不用于對(duì)本發(fā)明作出限制。本發(fā)明實(shí)施例的技術(shù)方 案也可應(yīng)用于其它的操作系統(tǒng),和硬件環(huán)境。針對(duì)不同的應(yīng)用環(huán)境,如對(duì)象數(shù) 據(jù),上述存儲(chǔ)時(shí)間、讀取時(shí)間和文件大小均可能有所不同。
本領(lǐng)域普通技術(shù)人員可以理解,實(shí)現(xiàn)上述事實(shí)的方法中的全部或部分步驟 是可以通過(guò)程序來(lái)指令相關(guān)的硬件來(lái)完成,所述的程序可以存儲(chǔ)于一計(jì)算機(jī)所 可讀取的存儲(chǔ)介質(zhì)中,該程序在執(zhí)行時(shí),包括如下步驟
設(shè)置一數(shù)據(jù)文件及索引文件,所述數(shù)據(jù)文件用于存儲(chǔ)數(shù)據(jù)對(duì)象,所述數(shù)據(jù) 文件包括至少一個(gè)文件數(shù)據(jù)塊,所述數(shù)據(jù)文件中、每個(gè)文件數(shù)據(jù)塊的長(zhǎng)度相等; 所述索引文件與所述數(shù)據(jù)文件相對(duì)應(yīng),所述索引文件包括所述數(shù)據(jù)文件中存儲(chǔ) 的每個(gè)數(shù)據(jù)對(duì)象在所述數(shù)據(jù)文件中的地址偏移;
在將數(shù)據(jù)對(duì)象存入所述數(shù)據(jù)文件時(shí),判斷所述數(shù)據(jù)文件中、游標(biāo)當(dāng)前指向 的文件數(shù)據(jù)塊的剩余空間是否足夠存儲(chǔ)待存儲(chǔ)的數(shù)據(jù)對(duì)象;如是,則將所述待 存儲(chǔ)的數(shù)據(jù)對(duì)象存入所述剩余空間,并在所述索引文件中記錄所述新存入數(shù)據(jù) 對(duì)象的地址偏移;否則,在所述待存儲(chǔ)的數(shù)據(jù)對(duì)象將所述剩余空間填滿后,所 述數(shù)據(jù)文件向系統(tǒng)申請(qǐng)一塊或多塊新文件數(shù)據(jù)塊,并將所述待存儲(chǔ)數(shù)據(jù)對(duì)象中 還未存入的剩余數(shù)據(jù)存入到所述新文件數(shù)據(jù)塊中,并在所述索引文件中記錄所述新存入lt據(jù)對(duì)象的地址偏移;
通過(guò)將所述游標(biāo)指向欲讀取的數(shù)據(jù)對(duì)象的地址偏移來(lái)讀取所述數(shù)據(jù)文件 中存儲(chǔ)的數(shù)據(jù)對(duì)象。
所述的存儲(chǔ)介質(zhì),如ROM/RAM、磁盤(pán)、光盤(pán)等。
本發(fā)明還提供了一種海量數(shù)據(jù)的處理裝置。如圖6,本發(fā)明實(shí)施例的數(shù)據(jù) 處理裝置包括文件設(shè)置模塊601,用于設(shè)置一數(shù)據(jù)文件及索引文件,所述數(shù) 據(jù)文件用于存儲(chǔ)數(shù)據(jù)對(duì)象,所述數(shù)據(jù)文件包括至少一個(gè)文件數(shù)據(jù)塊,所述數(shù)據(jù) 文件中、每個(gè)文件數(shù)據(jù)塊的長(zhǎng)度相等;所述索引文件與所述數(shù)據(jù)文件相對(duì)應(yīng),
地址偏移;存儲(chǔ)模塊602,用于在將數(shù)據(jù)對(duì)象存入所述文件設(shè)置模塊設(shè)置的所 述數(shù)據(jù)文件時(shí),判斷所述數(shù)據(jù)文件中、游標(biāo)當(dāng)前指向的文件數(shù)據(jù)塊的剩余空間 是否足夠存儲(chǔ)待存儲(chǔ)的數(shù)據(jù)對(duì)象,并在所述索引文件中記錄所述新存入數(shù)據(jù)對(duì) 象的地址偏移;如是,則將所述待存儲(chǔ)的數(shù)據(jù)對(duì)象存入所述剩余空間;否則, 在所述待存儲(chǔ)的數(shù)據(jù)對(duì)象將所述剩余空間填滿后,所述數(shù)據(jù)文件向系統(tǒng)申請(qǐng)一 塊或多塊新文件數(shù)據(jù)塊,并將所述待存儲(chǔ)數(shù)據(jù)對(duì)象中還未存入的剩余數(shù)據(jù)存入 到所述新文件數(shù)據(jù)塊中,并在所述索引文件中記錄所述新存入數(shù)據(jù)對(duì)象的地址 偏移。讀取模塊603,用于通過(guò)將所述游標(biāo)指向欲讀取的數(shù)據(jù)對(duì)象的地址偏移 來(lái)讀取所述數(shù)據(jù)文件中存儲(chǔ)的數(shù)據(jù)對(duì)象。
本發(fā)明實(shí)施例的數(shù)據(jù)處理裝置中,所述數(shù)據(jù)文件中的文件數(shù)據(jù)塊的長(zhǎng)度 為系統(tǒng)設(shè)定的最小分配粒度的整數(shù)倍。
本發(fā)明實(shí)施例的數(shù)據(jù)處理裝置中,所述存儲(chǔ)在所述文件數(shù)據(jù)塊中的數(shù)據(jù)對(duì) 象包括數(shù)據(jù)狀態(tài)、數(shù)據(jù)長(zhǎng)度及數(shù)據(jù)內(nèi)容;所述數(shù)據(jù)狀態(tài)包括插入狀態(tài)和移 除狀態(tài)。
利用本發(fā)明實(shí)施例的技術(shù)方案,可大大提高對(duì)海量數(shù)據(jù)的存取效率,從而 可針對(duì)海量數(shù)據(jù)建立高速緩存文件、永久存儲(chǔ)文件、和/或針對(duì)數(shù)據(jù)對(duì)象建立 海量序列化文件。且利用本發(fā)明實(shí)施例的技術(shù)方案存儲(chǔ)的數(shù)據(jù),不易被破解。
上所述是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù) 人員來(lái)說(shuō),在不脫離本發(fā)明實(shí)施例所述原理的前提下,還可以作出若干改進(jìn)和 潤(rùn)飾,這些改進(jìn)和潤(rùn)飾也應(yīng)視為本發(fā)明的保護(hù)范圍。
權(quán)利要求
1. 一種海量數(shù)據(jù)的處理方法,其特征在于,包括設(shè)置一數(shù)據(jù)文件及索引文件,所述數(shù)據(jù)文件用于存儲(chǔ)數(shù)據(jù)對(duì)象,所述數(shù)據(jù)文件包括至少一個(gè)文件數(shù)據(jù)塊,所述數(shù)據(jù)文件中、每個(gè)文件數(shù)據(jù)塊的長(zhǎng)度相等;所述索引文件與所述數(shù)據(jù)文件相對(duì)應(yīng),所述索引文件包括所述數(shù)據(jù)文件中存儲(chǔ)的每個(gè)數(shù)據(jù)對(duì)象在所述數(shù)據(jù)文件中的地址偏移;在將數(shù)據(jù)對(duì)象存入所述數(shù)據(jù)文件時(shí),判斷所述數(shù)據(jù)文件中、游標(biāo)當(dāng)前指向的文件數(shù)據(jù)塊的剩余空間是否足夠存儲(chǔ)待存儲(chǔ)的數(shù)據(jù)對(duì)象;如是,則將所述待存儲(chǔ)的數(shù)據(jù)對(duì)象存入所述剩余空間,并在所述索引文件中記錄所述新存入數(shù)據(jù)對(duì)象的地址偏移;否則,在所述待存儲(chǔ)的數(shù)據(jù)對(duì)象將所述剩余空間填滿后,所述數(shù)據(jù)文件向系統(tǒng)申請(qǐng)一塊或多塊新文件數(shù)據(jù)塊,并將所述待存儲(chǔ)數(shù)據(jù)對(duì)象中還未存入的剩余數(shù)據(jù)存入到所述新文件數(shù)據(jù)塊中,并在所述索引文件中記錄所述新存入數(shù)據(jù)對(duì)象的地址偏移;通過(guò)將所述游標(biāo)指向欲讀取的數(shù)據(jù)對(duì)象的地址偏移來(lái)讀取所述數(shù)據(jù)文件中存儲(chǔ)的數(shù)據(jù)對(duì)象。
2. 根據(jù)權(quán)利要求1所述的處理方法,其特征在于,所述數(shù)據(jù)文件中的文 件數(shù)據(jù)塊的長(zhǎng)度為系統(tǒng)設(shè)定的最小分配粒度的整數(shù)倍。
3. 根據(jù)權(quán)利要求1所述的數(shù)據(jù)處理方法,其特征在于,所述數(shù)據(jù)對(duì)象為 二進(jìn)制對(duì)象,或者數(shù)據(jù)流。
4. 根據(jù)權(quán)利要求1所述的處理方法,其特征在于,所述存儲(chǔ)在所述文件 數(shù)據(jù)塊中的數(shù)據(jù)對(duì)象包括數(shù)據(jù)狀態(tài)、數(shù)據(jù)長(zhǎng)度及數(shù)據(jù)內(nèi)容;所述數(shù)據(jù)狀態(tài)包 括插入狀態(tài)和移除狀態(tài)。
5. 根據(jù)權(quán)利要求4所述的處理方法,其特征在于,所述方法還包括刪除 所述數(shù)據(jù)文件中的數(shù)據(jù)對(duì)象的步驟,具體為根據(jù)輸入的、欲刪除數(shù)據(jù)對(duì)象的索引號(hào),從所述索引文件中獲得所述欲刪 除數(shù)據(jù)對(duì)象的地址偏移,并將所述欲刪除數(shù)據(jù)對(duì)象的數(shù)據(jù)狀態(tài)設(shè)置為移除狀 態(tài)。
6. 根據(jù)權(quán)利要求4或5所述的處理方法,其特征在于,還包括遍歷讀取所述數(shù)據(jù)文件中數(shù)據(jù)對(duì)象的步驟,具體為步驟a,將所述數(shù)據(jù)文件的游標(biāo)置為數(shù)據(jù)文件頭;步驟b,將所述游標(biāo)移動(dòng)至下一個(gè)數(shù)據(jù)對(duì)象的地址偏移,并獲取游標(biāo)當(dāng)前 指向的數(shù)據(jù)對(duì)象的數(shù)據(jù)內(nèi)容、數(shù)據(jù)長(zhǎng)度及數(shù)據(jù)狀態(tài);步驟c,判斷是否已讀取完所有的數(shù)據(jù)對(duì)象;如是,則結(jié)束;否則,轉(zhuǎn)入 步驟b。
7. 根據(jù)權(quán)利要求5所述的處理方法,其特征在于,還包括隨機(jī)讀取所 述數(shù)據(jù)文件中數(shù)據(jù)對(duì)象的步驟,具體為根據(jù)輸入的、欲隨機(jī)讀取的數(shù)據(jù)對(duì)象的索引號(hào),從所述索引文件中獲取所 述欲隨機(jī)讀取的數(shù)據(jù)對(duì)象在所述數(shù)據(jù)文件中的地址偏移;將所述數(shù)據(jù)文件的游標(biāo)指向所述獲取的地址偏移,并讀取該地址偏移對(duì)應(yīng) 的數(shù)據(jù)對(duì)象的數(shù)據(jù)內(nèi)容、數(shù)據(jù)長(zhǎng)度及數(shù)據(jù)狀態(tài)。
8. —種海量數(shù)據(jù)的處理裝置,其特征在于,包括文件設(shè)置模塊,用于設(shè)置一數(shù)據(jù)文件及索引文件,所述數(shù)據(jù)文件用于存儲(chǔ) 數(shù)據(jù)對(duì)象,所述數(shù)據(jù)文件包括至少一個(gè)文件數(shù)據(jù)塊,所述數(shù)據(jù)文件中、每個(gè)文 件數(shù)據(jù)塊的長(zhǎng)度相等;所述索引文件與所述數(shù)據(jù)文件相對(duì)應(yīng),所述索引文件包 括所述數(shù)據(jù)文件中存儲(chǔ)的每個(gè)數(shù)據(jù)對(duì)象在所述數(shù)據(jù)文件中的地址偏移;存儲(chǔ)模塊,用于在將數(shù)據(jù)對(duì)象存入所述文件設(shè)置模塊設(shè)置的所述數(shù)據(jù)文件 時(shí),判斷所述數(shù)據(jù)文件中、游標(biāo)當(dāng)前指向的文件數(shù)據(jù)塊的剩余空間是否足夠存 儲(chǔ)待存儲(chǔ)的數(shù)據(jù)對(duì)象,并在所述索引文件中記錄所述新存入數(shù)據(jù)對(duì)象的地址偏 移;如是,則將所述待存儲(chǔ)的數(shù)據(jù)對(duì)象存入所述剩余空間;否則,在所述待存 儲(chǔ)的數(shù)據(jù)對(duì)象將所述剩余空間填滿后,所述數(shù)據(jù)文件向系統(tǒng)申請(qǐng)一塊或多塊新 文件數(shù)據(jù)塊,并將所述待存儲(chǔ)數(shù)據(jù)對(duì)象中還未存入的剩余數(shù)據(jù)存入到所述新文 件數(shù)據(jù)塊中,并在所述索引文件中記錄所述新存入數(shù)據(jù)對(duì)象的地址偏移;讀取模塊,用于通過(guò)將所述游標(biāo)指向欲讀取的數(shù)據(jù)對(duì)象的地址偏移來(lái)讀取 所述數(shù)據(jù)文件中存儲(chǔ)的數(shù)據(jù)對(duì)象。
9. 根據(jù)權(quán)利要求8所述的處理裝置,其特征在于,所述數(shù)據(jù)文件中的文 件數(shù)據(jù)塊的長(zhǎng)度為系統(tǒng)設(shè)定的最小分配粒度的整數(shù)倍。
10. 根據(jù)權(quán)利要求8所述的處理裝置,其特征在于,所述存儲(chǔ)在所述文件數(shù)據(jù)塊中的數(shù)據(jù)對(duì)象包括數(shù)據(jù)狀態(tài)、數(shù)據(jù)長(zhǎng)度及數(shù)據(jù)內(nèi)容;所述數(shù)據(jù)狀態(tài)包 括插入狀態(tài)和移除狀態(tài)。
全文摘要
本發(fā)明提供了一種海量數(shù)據(jù)的處理方法及處理裝置,該方法包括設(shè)置一數(shù)據(jù)文件及索引文件,數(shù)據(jù)文件包括至少一個(gè)文件數(shù)據(jù)塊,每個(gè)文件數(shù)據(jù)塊的長(zhǎng)度相等;索引文件與數(shù)據(jù)文件相對(duì)應(yīng),包括各數(shù)據(jù)對(duì)象在數(shù)據(jù)文件中的地址偏移;在存入數(shù)據(jù)對(duì)象時(shí),如果游標(biāo)當(dāng)前指向的文件數(shù)據(jù)塊的剩余空間不夠存儲(chǔ)待存儲(chǔ)的數(shù)據(jù)對(duì)象,則在待存儲(chǔ)的數(shù)據(jù)對(duì)象將剩余空間填滿后,數(shù)據(jù)文件向系統(tǒng)申請(qǐng)一塊或多塊新文件數(shù)據(jù)塊,并將待存儲(chǔ)數(shù)據(jù)對(duì)象中還未存入的剩余數(shù)據(jù)存入到新文件數(shù)據(jù)塊中,并在索引文件中記錄新存入數(shù)據(jù)對(duì)象的地址偏移;通過(guò)將游標(biāo)指向欲讀取的數(shù)據(jù)對(duì)象的地址偏移來(lái)讀取數(shù)據(jù)文件中存儲(chǔ)的數(shù)據(jù)對(duì)象。利用該技術(shù)方案,提高了對(duì)海量數(shù)據(jù)的存取效率。
文檔編號(hào)G06F17/30GK101533408SQ20091008249
公開(kāi)日2009年9月16日 申請(qǐng)日期2009年4月21日 優(yōu)先權(quán)日2009年4月21日
發(fā)明者劉盛理, 徐晉暉, 石清華 申請(qǐng)人:北京四維圖新科技股份有限公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
泾阳县| 内丘县| 固安县| 常德市| 冷水江市| 土默特左旗| 永康市| 纳雍县| 澳门| 沭阳县| 蓝山县| 祁阳县| 南漳县| 夏津县| 襄汾县| 巴楚县| 安义县| 合川市| 孟连| 云南省| 百色市| 七台河市| 波密县| 晋宁县| 尼勒克县| 衡水市| 清涧县| 常熟市| 崇左市| 丰台区| 永年县| 农安县| 玛纳斯县| 宜宾县| 津南区| 通山县| 潜山县| 塔城市| 蒲城县| 西峡县| 剑阁县|