趙珊
摘要:伴隨著云計算、物聯(lián)網(wǎng)等新興技術(shù)的不斷發(fā)展,數(shù)據(jù)量呈現(xiàn)幾何式的增長,海量龐大的數(shù)據(jù)出現(xiàn)標(biāo)志著大數(shù)據(jù)時代的來臨。從海量的數(shù)據(jù)資源中提取有價值的信息并反饋給用戶是數(shù)據(jù)處理面臨的主要研究方向。本文主要探討Java這門經(jīng)典的編程語言在當(dāng)前的數(shù)據(jù)環(huán)境下,如何實現(xiàn)對大數(shù)據(jù)的加工及優(yōu)化處理,來實現(xiàn)數(shù)字資產(chǎn)的保值增值。
關(guān)鍵詞:Java 大數(shù)據(jù) 處理技術(shù)
中圖分類號:TP315.1 文獻標(biāo)識碼:A 文章編號:1007-9416(2016)09-0239-01
1 Java處理數(shù)據(jù)時的交互方式
大數(shù)據(jù)本身就是傳統(tǒng)意義上的數(shù)據(jù)的幾何級表現(xiàn)形式。大數(shù)據(jù)技術(shù)意義在于對這些有價值的數(shù)據(jù)進行專業(yè)化處理,通過“加工”實現(xiàn)數(shù)據(jù)的“增值”。大數(shù)據(jù)處理的一個關(guān)鍵環(huán)節(jié)就是數(shù)據(jù)處理引擎如何與大數(shù)據(jù)有一個良好的連接通道。目前比較主流的數(shù)據(jù)處理引擎開發(fā)語言有Java,C#,C++等。
Java作為主流開發(fā)語言的連接數(shù)據(jù)庫方式采用JDBC,通過建立一個數(shù)據(jù)庫連接池以及一套連接使用、分配、管理策略,連接可以得到高效、安全的復(fù)用,避免了數(shù)據(jù)庫連接頻繁建立、關(guān)閉的開銷。另外,由于對JDBC中的原始連接進行了封裝,隔離了應(yīng)用本身的處理邏輯和具體數(shù)據(jù)庫訪問邏輯,使應(yīng)用本身的復(fù)用成為可能,提高了開發(fā)效率。
從傳統(tǒng)技術(shù)發(fā)展來看,一般新技術(shù)通常不會跨越太大。特別是軟件開發(fā)技術(shù),為了不過度超前采用一種妥協(xié)的技術(shù)發(fā)展方式向下兼容。新技術(shù)大多是從傳統(tǒng)方式拓展延伸過來,而不是跨越式的從新研發(fā)一套全新的技術(shù),大數(shù)據(jù)處理也遵循著這樣的一個原則。
2 大數(shù)據(jù)量下的內(nèi)存管理
JVM(Java Virtual Machine,Java虛擬機)是Java的核心和基礎(chǔ),在Java編譯器和OS平臺之間的虛擬處理器。它是一種基于操作系統(tǒng)和硬件平臺并利用軟件方法來實現(xiàn)的抽象的計算機,主要功能是管理分配內(nèi)存和執(zhí)行垃圾回收。JVM內(nèi)存結(jié)構(gòu)由堆、棧、本地方法棧、方法區(qū)等部分組成。
當(dāng)Java一次性從數(shù)據(jù)庫加載過多的數(shù)據(jù)時,由于查詢結(jié)果的記錄首先要讀入JVM內(nèi)存,大量的數(shù)據(jù)占用了內(nèi)存空間,此時再為實例化對象申請空間時,便出現(xiàn)內(nèi)存溢出的問題,即使調(diào)整內(nèi)存大小,啟動程序的時候加上-Xmx1024m,將JVM可以使用調(diào)至1G內(nèi)存,很多時候也不能滿足調(diào)用數(shù)據(jù)量的要求。
3 大數(shù)據(jù)量處理時的優(yōu)化方案
通過對JVM使用內(nèi)存的分析,結(jié)合數(shù)據(jù)調(diào)用處理的研究與實踐,得出的解決方案如下:
(1)客戶端讀取數(shù)據(jù)時,不再一次性讀入JVM內(nèi)存中,采用分批查出所有數(shù)據(jù),每次查詢得到的部分記錄使用恒定內(nèi)存讀入的方法,避免內(nèi)存溢出問題。
(2)將查詢出的數(shù)據(jù)在JVM內(nèi)存中經(jīng)過簡單加工寫入查詢結(jié)果文件,對生成的記過文件進行壓縮,目的是減小文件大小,節(jié)省帶寬,加快文件傳輸速度,然后按一定規(guī)則存入本地硬盤。
(3)獲取數(shù)據(jù)時,通過批次讀取將壓縮文件直接發(fā)給客戶端,在客戶端解開壓縮文件獲得查詢結(jié)果。
4 結(jié)語
本文通過Java語言數(shù)據(jù)處理時的原理分析,提出了大數(shù)據(jù)量數(shù)據(jù)加載的解決方案,實現(xiàn)了在不增加硬件開銷的前提下,由于數(shù)據(jù)量大導(dǎo)致的內(nèi)存溢出問題,保證了數(shù)據(jù)查詢時系統(tǒng)的高效與穩(wěn)定性。
參考文獻
[1]宋東海,賁可榮,張志祥,等.一種基于類的JAVA多線程程序數(shù)據(jù)競爭靜態(tài)檢測算法[J].《計算機工程與科學(xué)》,2014.02.