葉均隆 葉均明
摘要:為了減少電池企業(yè)信息化建設(shè)的成本和對商用數(shù)據(jù)庫的依賴,設(shè)計(jì)出兩種有效的TXT文檔結(jié)構(gòu)儲存電池檢測數(shù)據(jù)。由于電池檢測數(shù)據(jù)量大,為了提高數(shù)據(jù)讀取速度,這兩種儲存都是采用約定文件大小和分類保存的方式進(jìn)行。由于直接保存采集進(jìn)來的檢測數(shù)據(jù),會出現(xiàn)大量的數(shù)據(jù)冗余,因此第二種則在第一種儲存方法中進(jìn)一步優(yōu)化。通過類似數(shù)據(jù)庫的主外鍵關(guān)聯(lián)的方式進(jìn)行儲存,有效減少數(shù)據(jù)冗余。
關(guān)鍵詞:數(shù)據(jù)儲存;文本數(shù)據(jù)保存;文本數(shù)據(jù)關(guān)聯(lián);大量數(shù)據(jù)儲存
1 ?引言
現(xiàn)在企業(yè)生產(chǎn)中一般使用主流的數(shù)據(jù)庫軟件進(jìn)行各種數(shù)據(jù)保存和處理,如:sql server、mysql、Oracle等的使用。由于一次電池的檢測數(shù)據(jù),它們的數(shù)據(jù)量大,各類數(shù)據(jù)之間的關(guān)系不算復(fù)雜,使用這些主流的數(shù)據(jù)庫進(jìn)行存取,成本較高及容易受到技術(shù)制約。如果使用TXT文本保存數(shù)據(jù),所有的技術(shù)人員都能對它進(jìn)行處理和利用,而且不需要額外的費(fèi)用。使用TXT文本保存一次電池的質(zhì)量檢測數(shù)據(jù)主要解決以下三個問題:
(1)電池的檢測數(shù)據(jù)、電池檢測標(biāo)準(zhǔn)、生產(chǎn)線號、日期、電池型號、觸頭位置號等信息的保存。
(2)電池生產(chǎn)速度快,生成的數(shù)據(jù)量大,數(shù)據(jù)儲存要考慮管理方便和讀取速度。
(3)對數(shù)據(jù)查詢時,電池的檢測數(shù)據(jù)、電池檢測標(biāo)準(zhǔn)、生產(chǎn)線號等的關(guān)聯(lián)關(guān)系的處理。
2存儲結(jié)構(gòu)設(shè)計(jì)
2.1 數(shù)據(jù)沒有精簡的存儲設(shè)計(jì)
例如數(shù)據(jù)在D:\DataTra\2021\A55A\0321.txt文件保存,每年生產(chǎn)的電池數(shù)據(jù)放在一個按年份命名的文件夾里。一般電池廠都會擁有多條生產(chǎn)線,那么在年份文件夾下接著建立以生產(chǎn)線號命名的文件夾?!?321.txt”代表3月21日的檢測數(shù)據(jù)。因?yàn)闅v史記錄翻查的幾率偏小,所以年份文件夾下建立各生產(chǎn)線號的文件夾更有利于系統(tǒng)的查詢的效率。在生產(chǎn)線號命名的文件夾下,每天會創(chuàng)建一個電池檢測數(shù)據(jù)TXT文檔,文檔使用當(dāng)前電池檢測數(shù)據(jù)的生產(chǎn)時間并去掉年份命名,這樣在文件進(jìn)行查找時不需再次進(jìn)行年份比較。在電池工廠里一年一般上班的天數(shù)不會超過270天。那么每年生成的文件最多為:270×生產(chǎn)線總數(shù),擁有6條生產(chǎn)線的廠家約為1620個文件。計(jì)算機(jī)的硬盤使用時間越長,對硬盤里的文件進(jìn)行編輯或刪除次數(shù)多了,都會造成文件碎片增加,這樣會嚴(yán)重影響以后的讀寫速度。根據(jù)近年來一次電池生產(chǎn)線的生產(chǎn)的特點(diǎn),較好的生產(chǎn)設(shè)備一般能達(dá)到600只/min,理論上一天最多能生產(chǎn)864000只電池[1]。每行保存一條記錄,即是一只電池的數(shù)據(jù),例如:“2021-03-22,21:23:12.448,0022,A55A,R03C,1.685,1.675,1.440,3.600,0025,0050,1.682,P,1.466,P,03.66,P,0205400006”。它們分別是日期、時間、觸頭的位置號、生產(chǎn)線號、電池型號、開路電壓上限、開路電壓下限、負(fù)荷電壓下限、短路電流下限、負(fù)荷電阻放電時間、短路放電時間、開路電壓實(shí)測值、負(fù)荷電壓實(shí)測值、短路電流實(shí)測值、流水號,另外此記錄中的“P”是符合檢驗(yàn)水平代表合格,如果是顯著性差異的水平則此位置用F表示。一條記錄有107個字符,換行符號占2個字符(windows操作系統(tǒng)每行結(jié)尾是“\r \n”),則每天生成的TXT文檔空間最大為( 107 +2) ×Rmax /( 1 024×1 024) ≈89. 8 Mb[2]。在當(dāng)天開始生產(chǎn)時,即有電池檢測數(shù)據(jù),就開始生成約為89.8 Mb大小的文件,文件里面的信息為空。通常在工廠的一天不會滿負(fù)荷運(yùn)轉(zhuǎn)的,機(jī)器一般是8~12小時的運(yùn)行,那么大部分的txt文檔實(shí)際使用的磁盤空間為29.9 Mb ~44.9 Mb。那么需要第二天打開電池檢測數(shù)據(jù)程序時,對上一次生產(chǎn)過程中生成的TXT文檔進(jìn)行空閑容量的檢測與釋放。文檔按時間的順序排序,使用折半查找算法則有非常高的運(yùn)行效率。
2.2 數(shù)據(jù)精簡的存儲設(shè)計(jì)
如果想減少對磁盤空間的浪費(fèi),檢測數(shù)據(jù)中的日期和生產(chǎn)線號可在文件夾和文件名字那里體現(xiàn)出,可刪除它們。驗(yàn)電機(jī)械采用多觸頭隨行的結(jié)構(gòu)方式,通常有30或32個觸頭[2],所以位置號使用兩位數(shù)表達(dá)即可。電池型號一般有21種,這里也可以用兩位數(shù)字字符表達(dá)即可。檢測標(biāo)準(zhǔn)因?yàn)橐话愫荛L時間才更改一次,所以檢測數(shù)據(jù)文檔的檢測標(biāo)準(zhǔn)數(shù)據(jù)重復(fù)出現(xiàn)的概率很高,為了減少冗余數(shù)據(jù),可建立的30MB的檢測標(biāo)準(zhǔn)TXT文檔(st.txt)進(jìn)行記錄,根據(jù)生產(chǎn)特點(diǎn),文檔記錄的流水號使用6位字符表達(dá),足夠保證一年內(nèi)不會重復(fù)。檢測標(biāo)準(zhǔn)文檔也是放在同一年份及同一生產(chǎn)線下,同一生產(chǎn)線一年只建立一個。然后檢測標(biāo)準(zhǔn)文檔的流水號賦給電池檢測數(shù)據(jù)TXT文檔即可。代號P或F可以根據(jù)檢測標(biāo)準(zhǔn)可以得到,這項(xiàng)也可以刪除。一天最多864000只電池,那么使用6位流水號即可足夠表達(dá),經(jīng)過這樣分析,例如:“0322.txt”文檔保存3月22日的一只電池的檢測數(shù)據(jù)為:“21:23:11.936,21,03,000001,1.676,1.448,03.74,000001”。而st.txt保存它對應(yīng)的檢測標(biāo)準(zhǔn)為:“2021-03-22,21:23:11.936,1.685,1.675,1.440,3.600,0025,0050,000001”。雖然這樣精簡設(shè)計(jì)可減少到原來一半的磁盤空間,但在設(shè)計(jì)查詢算法設(shè)計(jì)時需要關(guān)聯(lián)st.txt文檔才能獲得檢測標(biāo)準(zhǔn)。按上文給的檢測數(shù)據(jù)例子,文本中的“03”旁的“000001”與st.txt文本中的一條檢測標(biāo)準(zhǔn)的“000001”關(guān)聯(lián)上。
3 結(jié)束語
通過本文2.1所述的儲存結(jié)構(gòu),在數(shù)據(jù)寫入和查找時較為簡單,但通過本文2.2所述的方式,開發(fā)難度逐步增加。使用TXT文檔保存數(shù)據(jù)雖然有效減少信息化建設(shè)的成本,但同時增加數(shù)據(jù)寫入和查找時軟件開發(fā)的難度。因此在借鑒文章的方法時可能根據(jù)不同的需求是否采用TXT文本儲存數(shù)據(jù)。
參考文獻(xiàn):
[1]李勝,楊林.堿性鋅錳電池生產(chǎn)設(shè)備的進(jìn)展和發(fā)展方向[J].電池,2015,45(04):225-227.
[2]葉均隆,葉錦雄,謝壁龍.電池高速測量數(shù)據(jù)的實(shí)時采集與保存[J].電池,2020,50(05):480-482.
基金項(xiàng)目:2020年度江門市基礎(chǔ)與理論科學(xué)研究類科技計(jì)劃項(xiàng)目(2020JC03050)
作者簡介:葉均隆(1983-),男,廣東人,廣東南方職業(yè)學(xué)院信息學(xué)院講師,碩士,研究方向:計(jì)算機(jī)應(yīng)用、智能控制及算法等;
葉均明(1980-),男,廣東省江門市人,江門市中心醫(yī)院網(wǎng)絡(luò)中心工程師,本科,主要研究方向網(wǎng)絡(luò)工程、醫(yī)院信息化。