• 
    

    
    

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

      一種大容量數(shù)據(jù)文件抽取算法的優(yōu)化研究

      2019-04-10 06:09:00張志強(qiáng)王偉鈞
      關(guān)鍵詞:條數(shù)數(shù)據(jù)文件大容量

      張志強(qiáng),王偉鈞,施 達(dá)

      (1.成都大學(xué) 信息科學(xué)與工程學(xué)院, 四川 成都 610106;2.成都大學(xué) 模式識(shí)別與智能信息處理四川省高校重點(diǎn)實(shí)驗(yàn)室, 四川 成都 610106)

      0 引 言

      目前,很多企業(yè)生產(chǎn)經(jīng)營(yíng)過程產(chǎn)生的數(shù)據(jù)大都以文件形式保存在磁盤中,例如,金融企業(yè)及證券企業(yè)每日的金融數(shù)據(jù)、證券交易數(shù)據(jù)及股票交易數(shù)據(jù)等都會(huì)存儲(chǔ)在數(shù)據(jù)文件中.有時(shí),大容量數(shù)據(jù)會(huì)存儲(chǔ)在單個(gè)數(shù)據(jù)文件中,從而產(chǎn)生很多大容量數(shù)據(jù)文件,且以xlsx數(shù)據(jù)格式為主[1-2].從這些大容量xlsx數(shù)據(jù)文件中抽取數(shù)據(jù)以構(gòu)建數(shù)據(jù)倉(cāng)庫(kù)是企業(yè)數(shù)據(jù)挖掘的重要過程[3].雖然一些學(xué)者對(duì)相關(guān)問題的數(shù)據(jù)抽取技術(shù)進(jìn)行了研究,并提出了不同的解決方案[4-7],但針對(duì)大容量xlsx數(shù)據(jù)文件的抽取算法研究相對(duì)較少.對(duì)此,本研究通過對(duì)常規(guī)數(shù)據(jù)抽取算法的策略進(jìn)行優(yōu)化,提出并設(shè)計(jì)了一種優(yōu)化的大容量數(shù)據(jù)文件抽取算法.測(cè)試結(jié)果表明,該算法具有數(shù)據(jù)容量自適應(yīng)抽取、數(shù)據(jù)快速寫入數(shù)據(jù)庫(kù)等特點(diǎn),從而極大提高了大容量數(shù)據(jù)文件抽取的效率.

      1 算法的優(yōu)化設(shè)計(jì)

      本研究的思路是:針對(duì)大容量數(shù)據(jù)文件的抽取,數(shù)據(jù)抽取算法應(yīng)該具備數(shù)據(jù)容量自適應(yīng)處理、自動(dòng)抽取和數(shù)據(jù)快速寫入數(shù)據(jù)庫(kù)的特點(diǎn),這樣才使得大容量數(shù)據(jù)文件的數(shù)據(jù)抽取效率能夠真正被提高.

      1.1 數(shù)據(jù)容量自適應(yīng)處理

      當(dāng)對(duì)xlsx數(shù)據(jù)文件進(jìn)行數(shù)據(jù)抽取時(shí),常規(guī)算法一般采用Apache的簡(jiǎn)潔版模糊實(shí)現(xiàn)(Poor obfuscation implementation,POI)組件的用戶模式進(jìn)行xlsx數(shù)據(jù)文件的抽取操作.由于該模式將xlsx數(shù)據(jù)文件中的所有記錄數(shù)據(jù)以二維數(shù)據(jù)表形式一次性全部讀入內(nèi)存后再進(jìn)行處理,當(dāng)數(shù)據(jù)記錄條數(shù)|records|>10 000時(shí),會(huì)出現(xiàn)內(nèi)存溢出的錯(cuò)誤.對(duì)于很多大容量數(shù)據(jù)文件,其數(shù)據(jù)記錄條數(shù)超過3萬(wàn)條(|records|>30 000),常規(guī)策略顯然無法抽取這些大容量數(shù)據(jù).為此,本研究對(duì)常規(guī)策略進(jìn)行優(yōu)化處理,使得算法具有數(shù)據(jù)容量自適應(yīng)處理的能力.

      當(dāng)xlsx數(shù)據(jù)文件的記錄條數(shù)未超過內(nèi)存溢出的閾值時(shí),算法采用常規(guī)POI組件的用戶模式進(jìn)行數(shù)據(jù)抽取操作.對(duì)于大容量數(shù)據(jù)文件的抽取操作,算法采用POI的XML簡(jiǎn)單應(yīng)用程序接口(Simple API for XML,SAX)模式進(jìn)行處理:首先,將xlsx數(shù)據(jù)格式轉(zhuǎn)換為逗號(hào)分隔值文件格式(Comma-separated values,CSV)數(shù)據(jù)格式;然后,用SAX模式解析數(shù)據(jù),這種方式的最大特點(diǎn)是不需要將文件中所有記錄數(shù)據(jù)以二維數(shù)據(jù)表形式一次性讀入內(nèi)存,而是以設(shè)定的記錄數(shù)據(jù)為單位抽取數(shù)據(jù)到內(nèi)存,從而避免了內(nèi)存溢出錯(cuò)誤.由于SAX模式中需要確定xlsx數(shù)據(jù)文件記錄列數(shù),本算法采用自動(dòng)確定的策略,其主要體現(xiàn)為:對(duì)大容量數(shù)據(jù)文件,首先利用SAX模式讀取第1行記錄數(shù)據(jù),計(jì)算記錄列數(shù),然后再將列數(shù)值作為參數(shù),利用SAX模式從第2行記錄數(shù)據(jù)開始依次抽取數(shù)據(jù).該策略使得算法具有大容量xlsx數(shù)據(jù)文件自適應(yīng)性處理的特性.數(shù)據(jù)容量自適應(yīng)處理流程如圖1所示.

      圖1 數(shù)據(jù)容量自適應(yīng)處理流程

      1.2 數(shù)據(jù)寫入的優(yōu)化設(shè)計(jì)

      數(shù)據(jù)寫入的常規(guī)策略是從數(shù)據(jù)文件中每抽取1行記錄數(shù)據(jù)后,并以該行記錄數(shù)據(jù)為單位寫入數(shù)據(jù)庫(kù).當(dāng)抽取大容量數(shù)據(jù)文件時(shí),由于抽取的記錄數(shù)據(jù)量非常龐大,如果仍然采用常規(guī)的數(shù)據(jù)寫入策略,其數(shù)據(jù)寫入的速度較慢,那么數(shù)據(jù)處理的總體效率非常低.為了提高數(shù)據(jù)寫入數(shù)據(jù)庫(kù)的速度,本研究對(duì)數(shù)據(jù)寫入的常規(guī)策略進(jìn)行了優(yōu)化設(shè)計(jì),提出了一種數(shù)據(jù)寫入優(yōu)化策略.

      在該優(yōu)化策略中,提高數(shù)據(jù)寫入數(shù)據(jù)庫(kù)速度的關(guān)鍵部分是將xlsx數(shù)據(jù)文件中抽取的數(shù)據(jù)以數(shù)據(jù)塊為單位寫入數(shù)據(jù)庫(kù),每次將1個(gè)數(shù)據(jù)塊一次性寫入數(shù)據(jù)庫(kù),極大地提高了數(shù)據(jù)寫入數(shù)據(jù)庫(kù)的速度,從而解決了記錄數(shù)據(jù)寫入的低效率問題.數(shù)據(jù)寫入優(yōu)化策略的處理流程如圖2所示.

      在數(shù)據(jù)寫入優(yōu)化策略中,算法首先將xlsx數(shù)據(jù)文件中抽取的記錄數(shù)據(jù)存儲(chǔ)到內(nèi)存表中,將內(nèi)存表以k條記錄數(shù)據(jù)為單位劃分?jǐn)?shù)據(jù)塊,每次根據(jù)數(shù)據(jù)塊號(hào)i獲取數(shù)據(jù)塊,然后以數(shù)據(jù)塊為單位一次性寫入數(shù)據(jù)庫(kù).其中,數(shù)據(jù)塊datablock、分塊數(shù)datablocks、內(nèi)存表中記錄數(shù)據(jù)的條數(shù)recordsizes之間的關(guān)系如式1所示.

      圖2數(shù)據(jù)寫入優(yōu)化策略的處理流程

      (1)

      當(dāng)內(nèi)存表中記錄數(shù)據(jù)的條數(shù)recordsizes

      對(duì)內(nèi)存表的記錄數(shù)據(jù)進(jìn)行分塊讀取時(shí),數(shù)據(jù)讀取位置按照分塊進(jìn)行變化,如式2所示,

      (2)

      式中,offseti為第i個(gè)數(shù)據(jù)塊在內(nèi)存表中的數(shù)據(jù)讀取位置.

      1.3 算法實(shí)現(xiàn)

      大容量數(shù)據(jù)文件抽取算法的代碼結(jié)構(gòu)如下:

      Algorithm1 Large-Data-Capacity-extraction(log-datafilename)

      //log-datafilename:日志文件,記錄數(shù)據(jù)文件的地址信息

      begin

      1:從log-datafilename獲取數(shù)據(jù)文件datafilename的地址信息;

      2:try{;

      3:以POI的用戶模式抽取數(shù)據(jù)文件datafilename的記錄數(shù)據(jù)到內(nèi)存表;

      4:catch(內(nèi)存溢出異常){;

      5:以POI的SAX模式抽取數(shù)據(jù)文件datafilename的記錄數(shù)據(jù)到內(nèi)存表;

      6:};

      7:清洗datafilename地址信息中的特殊字符;

      8:以datafilename地址信息為名稱在數(shù)據(jù)庫(kù)中構(gòu)建數(shù)據(jù)表datafilename;

      9:以k為單位對(duì)內(nèi)存表劃分?jǐn)?shù)據(jù)塊;

      10:i←1;

      11:while i≤分塊數(shù)do;

      12:計(jì)算第i個(gè)數(shù)據(jù)塊在內(nèi)存表中的數(shù)據(jù)讀取位置;

      13:讀出第i個(gè)數(shù)據(jù)塊;

      14:第i個(gè)數(shù)據(jù)塊一次性寫入數(shù)據(jù)表datafilename;

      15:i←i+1;

      16:end while;

      17:釋放資源;

      end

      2 算法測(cè)試實(shí)驗(yàn)

      在測(cè)試中,Algorithm1算法采用Java、Apache的POI框架及JDBC接口編程實(shí)現(xiàn);測(cè)試環(huán)境為:操作系統(tǒng)為Windows 7,CPU為Intel core i5,內(nèi)存為12 GiB,數(shù)據(jù)庫(kù)系統(tǒng)采用SQL Server 2008 R2,數(shù)據(jù)庫(kù)服務(wù)器為localhost.本研究在實(shí)驗(yàn)中測(cè)試了算法的功能實(shí)現(xiàn),并測(cè)試了數(shù)據(jù)的寫入速度.

      2.1 實(shí)驗(yàn)分析

      實(shí)驗(yàn)中,存儲(chǔ)xlsx數(shù)據(jù)文件的地址信息日志文件如圖3所示.“行情數(shù)據(jù)1.xlsx"的數(shù)據(jù)記錄條數(shù)為10 000條,每條記錄34列;“行情數(shù)據(jù)2.xlsx"的數(shù)據(jù)記錄條數(shù)為45 000條,每條記錄34列.通過Algorithm1算法的抽取操作,其數(shù)據(jù)分別存儲(chǔ)在數(shù)據(jù)庫(kù)的“dbo.c-6-行情數(shù)據(jù)1-xlsx"數(shù)據(jù)表和“c-6-行情數(shù)據(jù)2-xlsx"數(shù)據(jù)表,如圖4和圖5所示.

      圖3日志文件內(nèi)容

      圖4數(shù)據(jù)庫(kù)的存儲(chǔ)形式

      圖5數(shù)據(jù)表的存儲(chǔ)形式

      從圖3~圖5可知,Algorithm1算法能夠自適應(yīng)數(shù)據(jù)文件的數(shù)據(jù)量并實(shí)現(xiàn)了自動(dòng)抽取操作.

      2.2 數(shù)據(jù)分塊寫入測(cè)試

      為了驗(yàn)證Algorithm1算法的數(shù)據(jù)寫入優(yōu)化的效率,本研究對(duì)算法的數(shù)據(jù)寫入操作進(jìn)行了測(cè)試.首先進(jìn)行數(shù)據(jù)塊的分塊大小設(shè)置的測(cè)試實(shí)驗(yàn),測(cè)試的xlsx數(shù)據(jù)文件的記錄數(shù)據(jù)條數(shù)為10 000行,每個(gè)數(shù)據(jù)塊設(shè)置后測(cè)試10次,測(cè)試結(jié)果如表1所示.

      表1 數(shù)據(jù)塊的分塊設(shè)置測(cè)試結(jié)果

      在表1中,Rows of record(datablock)為數(shù)據(jù)塊的記錄數(shù)據(jù)條數(shù)(數(shù)據(jù)塊的大小),Cols of record為數(shù)據(jù)塊的記錄列數(shù),Best time為數(shù)據(jù)寫入的最小時(shí)間(以s為單位),Worst time為數(shù)據(jù)寫入的最差時(shí)間(以s為單位),Average time為數(shù)據(jù)寫入的平均時(shí)間(以s為單位).

      從表1可知,當(dāng)數(shù)據(jù)塊大小設(shè)置為400時(shí),數(shù)據(jù)寫入的速度相對(duì)最快.

      另外,本研究將常規(guī)的數(shù)據(jù)寫入策略和優(yōu)化的數(shù)據(jù)寫入策略所消耗的時(shí)間進(jìn)行了對(duì)比測(cè)試實(shí)驗(yàn).數(shù)據(jù)塊大小設(shè)置為400,每個(gè)數(shù)據(jù)文件測(cè)試10次,實(shí)驗(yàn)結(jié)果如表2所示.

      表2 數(shù)據(jù)寫入策略的對(duì)比測(cè)試結(jié)果

      在表2中,Rows of record為數(shù)據(jù)文件的記錄數(shù)據(jù)總條數(shù),Cols of record為數(shù)據(jù)文件的記錄列數(shù),Data writing time of conventional algorithm為常規(guī)策略的平均數(shù)據(jù)寫入時(shí)間(以s為單位),Data writing time of optimization algorithm為優(yōu)化策略的平均數(shù)據(jù)分塊寫入時(shí)間(以s為單位).

      數(shù)據(jù)寫入時(shí)間的曲線變化圖如圖6所示.

      圖6數(shù)據(jù)寫入策略消耗時(shí)間的曲線變化圖

      從圖6可知,數(shù)據(jù)寫入優(yōu)化策略所消耗的時(shí)間均低于1 min.從表2可知,數(shù)據(jù)寫入優(yōu)化策略所消耗的時(shí)間均明顯小于數(shù)據(jù)寫入常規(guī)策略所消耗的時(shí)間,數(shù)據(jù)寫入速度平均提高了187倍.

      3 結(jié) 論

      為了解決大容量數(shù)據(jù)文件常規(guī)抽取策略的局限性問題,本研究對(duì)常規(guī)策略進(jìn)行了優(yōu)化,提出了一種優(yōu)化的大容量數(shù)據(jù)文件抽取算法.為了驗(yàn)證算法的優(yōu)化效果,本研究進(jìn)行了自適應(yīng)數(shù)據(jù)量的數(shù)據(jù)抽取實(shí)驗(yàn)和數(shù)據(jù)寫入速度對(duì)比實(shí)驗(yàn).實(shí)驗(yàn)結(jié)果表明,算法既能夠?qū)崿F(xiàn)不同數(shù)據(jù)容量的文件抽取,又能以遠(yuǎn)遠(yuǎn)高于常規(guī)寫入速度的方式完成數(shù)據(jù)快速寫入數(shù)據(jù)庫(kù)的操作,從而驗(yàn)證了算法優(yōu)化的有效性.

      猜你喜歡
      條數(shù)數(shù)據(jù)文件大容量
      12-20升大容量PET瓶裝式吹瓶機(jī)
      數(shù)據(jù)文件恢復(fù)專題問答
      數(shù)據(jù)文件安全管控技術(shù)的研究與實(shí)現(xiàn)
      巧算金魚條數(shù)
      SQL數(shù)據(jù)文件恢復(fù)工具
      人民網(wǎng)、新華網(wǎng)、中國(guó)非公企業(yè)黨建網(wǎng)兩新黨建報(bào)道條數(shù)排行
      能變出雨衣的18升大容量背包
      對(duì)多邊形對(duì)角線條數(shù)的探究
      每只小貓給了貓媽媽幾條魚
      基于大容量指紋識(shí)別的實(shí)時(shí)身份認(rèn)證系統(tǒng)
      淮北市| 德庆县| 保康县| 鹤岗市| 长葛市| 青海省| 驻马店市| 新丰县| 科技| 时尚| 长葛市| 千阳县| 清丰县| 阜平县| 衡东县| 顺平县| 饶平县| 阜康市| 杂多县| 兴隆县| 尉氏县| 玉田县| 曲周县| 塔河县| 岳池县| 玉溪市| 和静县| 全州县| 云和县| 万全县| 兴化市| 富阳市| 葫芦岛市| 册亨县| 渝中区| 鄂伦春自治旗| 永城市| 穆棱市| 三穗县| 惠东县| 正镶白旗|