• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      數(shù)據(jù)庫中小文件的實(shí)時(shí)存儲(chǔ)與優(yōu)化

      2015-08-28 01:40:40楊東芳
      河南科技 2015年3期
      關(guān)鍵詞:海量數(shù)據(jù)庫優(yōu)化

      張 璐 楊東芳

      (1.駐馬店職業(yè)技術(shù)學(xué)院信息工程系,河南 駐馬店463000;2.黃河交通學(xué)院機(jī)電工程學(xué)院,河南 焦作454950)

      隨著計(jì)算機(jī)科學(xué)技術(shù)的飛速發(fā)展,信息逐漸被數(shù)據(jù)化,海量小文件的存儲(chǔ)給系統(tǒng)帶來巨大的壓力。首先文件系統(tǒng)在存儲(chǔ)小文件時(shí)需要反復(fù)請(qǐng)求存儲(chǔ)的地址,分配存儲(chǔ)空間,海量的小文件一起存儲(chǔ)就會(huì)占用服務(wù)器的內(nèi)存從而超出計(jì)算機(jī)硬件的極限;其次,海量小文件的存儲(chǔ)使檢索效率降低?,F(xiàn)有的存儲(chǔ)系統(tǒng)由于內(nèi)存的現(xiàn)狀,當(dāng)存放文件積累到一定數(shù)量,就沒法做到有效管理,從而導(dǎo)致檢索效率降低,甚至導(dǎo)致系統(tǒng)崩潰。因此,解決小文件訪問性能瓶頸的問題越來越迫切。

      1 現(xiàn)有的小文件處理方法

      1.1 結(jié)構(gòu)化存儲(chǔ)

      結(jié)構(gòu)化存儲(chǔ)是在數(shù)據(jù)庫中將小文件整合成一個(gè)大文件一次性寫入,將小文件的內(nèi)容作為二進(jìn)制字符串的大字段存入數(shù)據(jù)庫中,由于每個(gè)字段都是固定的,而小文件則是在一定范圍內(nèi)變化的,為了保證數(shù)據(jù)不因字段長度不夠而丟失,故在設(shè)計(jì)數(shù)據(jù)庫時(shí)會(huì)將字段設(shè)計(jì)得相對(duì)比較大,這樣就使小文件內(nèi)容的存儲(chǔ)占據(jù)了大量的空白數(shù)據(jù),造成磁盤資源的浪費(fèi),也會(huì)使數(shù)據(jù)庫在進(jìn)行I/O操作時(shí)操作時(shí)間變長[1]。

      1.2 歸檔文件

      歸檔文件是將文件合并后放入文件存檔設(shè)備,在文件系統(tǒng)上創(chuàng)建一個(gè)文件系統(tǒng)進(jìn)行工作,雖然采用創(chuàng)建歸檔文件來處理小文件能夠降低內(nèi)存的使用效率,但創(chuàng)建歸檔文件的同時(shí)會(huì)創(chuàng)建一個(gè)副本,需要同樣大小的磁盤空間,而且一旦創(chuàng)建后,歸檔文件就不能再改變,所以要增加或刪除文件時(shí)必須重新創(chuàng)建文件。

      1.3 文件優(yōu)化器技術(shù)

      在分布式文件系統(tǒng)上設(shè)計(jì)一個(gè)小文件優(yōu)化器,將小文件在優(yōu)化器中進(jìn)行合并,并且建立索引,這樣所有操作都在優(yōu)化器中完成,而大文件直接存儲(chǔ)在文件系統(tǒng),雖然避免了海量小文件存儲(chǔ)的麻煩,但如果小文件索引多到無法估計(jì),就對(duì)優(yōu)化器磁盤的容量提出挑戰(zhàn)。

      1.4 構(gòu)建結(jié)構(gòu)體

      構(gòu)建結(jié)構(gòu)體是將相同擴(kuò)展名的小文件進(jìn)行合并,元數(shù)據(jù)存儲(chǔ)于結(jié)構(gòu)體的成員中,通過建立結(jié)構(gòu)體中各文件間的存儲(chǔ)索引[2]。訪問時(shí)只需讀取要查找文件的擴(kuò)展名,然后訪問名稱節(jié)點(diǎn),名稱節(jié)點(diǎn)根據(jù)該擴(kuò)展名返回一個(gè)索引塊列表;最后用戶根據(jù)這個(gè)塊列表訪問相應(yīng)的數(shù)據(jù)結(jié)構(gòu)體,在數(shù)據(jù)結(jié)構(gòu)體中根據(jù)元數(shù)據(jù)進(jìn)行截取,查找到原先的小文件進(jìn)行截取并返回。雖然將多個(gè)小文件合并成一個(gè)大文件的方案能使原先小文件占用的名稱節(jié)點(diǎn)服務(wù)器的內(nèi)存成倍數(shù)地降低,但是由于結(jié)構(gòu)體在定義時(shí)已經(jīng)設(shè)定了成員的大小,所以對(duì)于同類型但大小不一的小文件,傳統(tǒng)的合并方法會(huì)浪費(fèi)大量的存儲(chǔ)空間。

      2 基于數(shù)據(jù)庫處理小文件的方案

      在歸檔文件方法和文件優(yōu)化器處理思想的基礎(chǔ)上進(jìn)行改進(jìn),能夠使文件優(yōu)化器的功能由傳統(tǒng)的結(jié)構(gòu)化數(shù)據(jù)庫來實(shí)現(xiàn)。數(shù)據(jù)庫能存儲(chǔ)海量塊小的元數(shù)據(jù),能快速建立索引,檢索速度比較快;而分布式文件系統(tǒng)可以多個(gè)存儲(chǔ)磁頭并行讀寫,文件的存儲(chǔ)和讀取帶寬較大,能夠突破數(shù)據(jù)庫存取的I/O瓶頸問題。文件系統(tǒng)與數(shù)據(jù)庫系統(tǒng)各盡其能,彌補(bǔ)了對(duì)方的不足[3-4]。由于實(shí)時(shí)存儲(chǔ)系統(tǒng)在這一時(shí)刻和下一時(shí)刻傳入的文件類型可能不同,不屬于同一個(gè)業(yè)務(wù),可以根據(jù)他們不同的訪問字段來對(duì)部分常用字段建立非聚集索引,在不過分影響插入效率的前提下提高用戶查找文件的速度。

      2.1 文件的合并機(jī)制

      在合并文件時(shí)需要?jiǎng)?chuàng)建文件頭,記錄大文件中包含的小文件個(gè)數(shù)以及每個(gè)小文件的大小,并且與小文件放置在同一塊大緩存內(nèi),在數(shù)據(jù)庫中記錄文件的元數(shù)據(jù)信息及相應(yīng)的大文件和在大文件中的具體位置,與構(gòu)建結(jié)構(gòu)體進(jìn)行文件合并的方法相比,創(chuàng)建文件頭的合并機(jī)制更適合于文件大小有變動(dòng)的海量小文件的合并,在進(jìn)行文件讀取時(shí)通過查詢數(shù)據(jù)庫來獲取文件的邏輯地址并且對(duì)文件進(jìn)行訪問。

      2.2 優(yōu)化思想

      首先,創(chuàng)建一個(gè)PingFile的類,其中包括:Name:大文件的文件名稱;size[count]:用于記錄每個(gè)小文件的大小;*addr[count]:用于記錄每個(gè)小文件的內(nèi)存地址;timecount:用于記錄當(dāng)前PingFile存在的時(shí)間;current:用于記錄當(dāng)前狀態(tài)傳入的參數(shù),要求存入PingFile的相對(duì)位置。count表示大文件中小文件數(shù)量的上限,timelimit表示等待時(shí)間的上限,當(dāng)?shù)却龝r(shí)間或數(shù)量達(dá)到上限時(shí),開啟線程將PingFile中小文件的緩存按照表1的結(jié)構(gòu)形式合并為一個(gè)大緩存并存入到文件系統(tǒng)中,提交本次數(shù)據(jù)庫的事務(wù),完成一次小文件的合并及其元數(shù)據(jù)的入庫。程序接收到傳入的小文件,根據(jù)傳入的相關(guān)參數(shù)將文件塊存入大的緩存區(qū)內(nèi),并將小文件在大文件中的相對(duì)位置和大文件的命名作為元數(shù)據(jù),放在數(shù)據(jù)庫事務(wù)中,以便保持?jǐn)?shù)據(jù)庫和文件系統(tǒng)的一致性,然后繼續(xù)等待下一文件的傳入。當(dāng)緩存區(qū)的文件達(dá)到合成條件時(shí),將緩存塊生成數(shù)據(jù)文件存放在文件系統(tǒng)中,數(shù)據(jù)庫再次提交事務(wù)(見表1)。

      表1 大文件緩存結(jié)構(gòu)

      2.3 文件的讀取過程

      在讀取文件時(shí),首先根據(jù)查找信息在數(shù)據(jù)庫中查找相應(yīng)的數(shù)據(jù)條目,如果找不到就直接返回,如果找到就遍歷所有的結(jié)果集,找到大文件的地址以及小文件在大文件中的相對(duì)位置,然后對(duì)大文件進(jìn)行解析,根據(jù)小文件的存儲(chǔ)位置在緩存中取出小文件并返回給用戶,完成文件的讀取操作。

      表2 合并文件個(gè)數(shù)與合并、讀取時(shí)間關(guān)系表

      圖1 合并文件個(gè)數(shù)與合并、讀取時(shí)間關(guān)系圖

      3 實(shí)驗(yàn)測試及結(jié)果

      使用本地文件系統(tǒng)將300個(gè)不同的圖形文件(32KB至512KB不等)進(jìn)行合并,之后對(duì)其進(jìn)行逐一讀取,最后得到的圖形文件與原文件完全相同,其可行性得到了驗(yàn)證。表2為512KB大小不同數(shù)目的小文件合并讀取的時(shí)間對(duì)比(時(shí)間為十次測試的平均值,每次讀取的是第30個(gè)小文件)。從圖1可以看出,合并與讀取所用時(shí)間基本和合并個(gè)數(shù)呈線性關(guān)系。

      4 結(jié)論

      針對(duì)文件系統(tǒng)實(shí)時(shí)存儲(chǔ)海量小文件不方便,提出了基于數(shù)據(jù)庫的小文件合并方法,即對(duì)大量小文件的數(shù)據(jù)進(jìn)行批量處理,在保證存取前后系統(tǒng)的穩(wěn)定性和文件正確性的前提下,大幅度提高了文件系統(tǒng)對(duì)小文件存儲(chǔ)效率。通過文件系統(tǒng)與數(shù)據(jù)庫的結(jié)合,解決了文件系統(tǒng)的檢索瓶頸和數(shù)據(jù)庫I/O瓶頸問題,減少了存儲(chǔ)時(shí)間。但是需要指出的是,由于進(jìn)行了文件合并,如果要對(duì)單個(gè)小文件進(jìn)行修改操作,則需要對(duì)大文件中的片段進(jìn)行解析、擴(kuò)展或者縮減,會(huì)造成單個(gè)小文件更新操作的不方便。所以,該方法適用于量多塊小、時(shí)間分布均勻且更新頻度較小的數(shù)據(jù)倉庫類的工作業(yè)務(wù)流程。

      [1]江柳.HDFS下小文件存儲(chǔ)優(yōu)化相關(guān)技術(shù)研究[D],北京郵電大學(xué),2010.

      [2]http://hadoop.apache.org/mapreduce/docs/r0.21.0/hadoopp_archives.html.

      [3]劉小俊,徐正全,潘少明.一種結(jié)合RDBMS和Hadoop的海量小文件存儲(chǔ)方法[J].武漢大學(xué)學(xué)報(bào),2013(1):27-31.

      [4]泰冬雪.基于Hadoop的海量小文件處理方法的研究[D].遼寧大學(xué),2011.

      猜你喜歡
      海量數(shù)據(jù)庫優(yōu)化
      一種傅里葉域海量數(shù)據(jù)高速譜聚類方法
      超限高層建筑結(jié)構(gòu)設(shè)計(jì)與優(yōu)化思考
      民用建筑防煙排煙設(shè)計(jì)優(yōu)化探討
      關(guān)于優(yōu)化消防安全告知承諾的一些思考
      一道優(yōu)化題的幾何解法
      海量快遞垃圾正在“圍城”——“綠色快遞”勢在必行
      數(shù)據(jù)庫
      一個(gè)圖形所蘊(yùn)含的“海量”巧題
      數(shù)據(jù)庫
      數(shù)據(jù)庫
      韶关市| 淮安市| 梧州市| 内乡县| 嘉义市| 清苑县| 汝州市| 宁河县| 衡阳县| 闸北区| 正镶白旗| 宜黄县| 措勤县| 高要市| 肇庆市| 临朐县| 扎囊县| 永胜县| 班玛县| 襄城县| 临清市| 土默特右旗| 福清市| 五常市| 会同县| 抚顺县| 明水县| 阿瓦提县| 隆昌县| 淅川县| 囊谦县| 辽源市| 黄梅县| 台山市| 阜平县| 武宁县| 莱芜市| 万载县| 邵武市| 建宁县| 德州市|