本發(fā)明涉及數(shù)據(jù)管理技術(shù)領(lǐng)域,具體地,涉及基于非易失性內(nèi)存與java虛擬機的新型數(shù)據(jù)管理方法。
背景技術(shù):
隨著信息時代的到來,人類的生活與數(shù)據(jù)變得密不可分,如何對海量的數(shù)據(jù)進行有效的管理成為了當(dāng)今的技術(shù)熱點。良好的數(shù)據(jù)管理技術(shù)應(yīng)該包含兩個特點:(1)數(shù)據(jù)的持久化管理,即數(shù)據(jù)能夠存儲在具有持久化能力的設(shè)備中,在系統(tǒng)斷電時不會丟失;(2)數(shù)據(jù)的高效處理,即能夠快速回應(yīng)應(yīng)用的數(shù)據(jù)操作請求。由于傳統(tǒng)計算機體系結(jié)構(gòu)中的內(nèi)存不具有持久化能力,而具備持久化性質(zhì)的硬盤則存在響應(yīng)速度慢、訪問粒度粗等諸多不足之處,因此傳統(tǒng)的數(shù)據(jù)管理技術(shù)分別使用硬盤和內(nèi)存進行數(shù)據(jù)存儲和數(shù)據(jù)處理。然而,由于硬盤和內(nèi)存在存儲格式、訪問方法等方面存在巨大差異,傳統(tǒng)的數(shù)據(jù)管理技術(shù)需要對硬盤和內(nèi)存中的數(shù)據(jù)分別進行管理,給用戶帶來了沉重的管理負(fù)擔(dān)。
java是一門面向?qū)ο?object-oriented)的高級程序語言,它提出的java虛擬機(javavirtualmachine,jvm)這一抽象可以幫助java應(yīng)用進行內(nèi)存管理、性能調(diào)優(yōu)、類型檢查等一系列復(fù)雜而瑣碎的工作,使得用戶能夠?qū)W⒂诔绦蜻壿嫳旧恚瑴p輕了用戶的負(fù)擔(dān)。針對傳統(tǒng)數(shù)據(jù)管理技術(shù)中管理負(fù)擔(dān)過重的問題,java語言也提出了java持久化接口jpa(javapersistenceapi)將內(nèi)存與硬盤的數(shù)據(jù)管理進行了解耦。jpa一方面將持久化數(shù)據(jù)轉(zhuǎn)化為java對象格式放入內(nèi)存中,使用戶能夠使用熟悉的面向?qū)ο蟮姆绞竭M行數(shù)據(jù)處理;另一方面則提供了從java對象到sql語句的轉(zhuǎn)化,并使用sql語句操作和管理持久化的數(shù)據(jù)。jpa的提出消除了用戶管理持久化數(shù)據(jù)的負(fù)擔(dān),但內(nèi)存與硬盤之間數(shù)據(jù)格式轉(zhuǎn)化的開銷卻造成了數(shù)據(jù)處理的性能損失。
非易失性內(nèi)存這一新型硬件的出現(xiàn),使得內(nèi)存在保留原有的高速訪問、細粒度讀寫特點的基礎(chǔ)上,增加了持久化數(shù)據(jù)的能力,為數(shù)據(jù)管理技術(shù)的發(fā)展帶來了全新的機遇,基于非易失性內(nèi)存的技術(shù)方興未艾。相比基于c/c++語言的數(shù)據(jù)管理技術(shù),基于java虛擬機的數(shù)據(jù)管理技術(shù)可以直接利用java虛擬機成熟的內(nèi)存管理功能以及java持久化接口來降低數(shù)據(jù)管理的開銷。然而,目前的java虛擬機缺乏對易失性內(nèi)存的支持,其持久化接口jpa也不能很好地利用非易失性內(nèi)存的持久化特性。因此,如何針對java虛擬機以及非易失性內(nèi)存的特點,開發(fā)全新的數(shù)據(jù)管理技術(shù),從而充分發(fā)揮兩者的優(yōu)勢,同時達成數(shù)據(jù)的持久化管理和高效處理兩個目標(biāo),已成為亟待解決的技術(shù)難題。
技術(shù)實現(xiàn)要素:
針對現(xiàn)有技術(shù)中的缺陷,本發(fā)明的目的是提供一種基于非易失性內(nèi)存與java虛擬機的新型數(shù)據(jù)管理方法。
根據(jù)本發(fā)明提供的基于非易失性內(nèi)存與java虛擬機的新型數(shù)據(jù)管理方法,包括如下步驟:
數(shù)據(jù)訪問步驟:通過java應(yīng)用以java對象格式直接訪問和處理數(shù)據(jù)庫中的數(shù)據(jù),消除了數(shù)據(jù)格式轉(zhuǎn)化的過程;
載入數(shù)據(jù)庫步驟:將數(shù)據(jù)庫在java虛擬機運行的任意時刻作為java堆的一部分載入并使用;
數(shù)據(jù)管理步驟:通過java虛擬機對數(shù)據(jù)庫進行直接的內(nèi)存管理。
優(yōu)選地,所述數(shù)據(jù)訪問步驟中使用輕量級的java持久化接口直接訪問和處理數(shù)據(jù)。
優(yōu)選地,所述載入數(shù)據(jù)庫步驟中的數(shù)據(jù)庫具有java虛擬機兼容性,即所述數(shù)據(jù)庫的格式能夠被java虛擬機載入后解析使用。
優(yōu)選地,通過所述java虛擬機能夠?qū)?shù)據(jù)庫進行內(nèi)存使用監(jiān)控、垃圾收集以及碎片整理。
優(yōu)選地,通過所述java虛擬機能夠通過操作系統(tǒng)提供的接口獲取非易失性內(nèi)存資源,并進行操作和管理。
根據(jù)本發(fā)明提供的基于非易失性內(nèi)存與java虛擬機的新型數(shù)據(jù)管理方法,包括如下步驟:
步驟1:運行java應(yīng)用,并啟動java虛擬機進行初始化;
步驟2:通過輕量級java持久化接口在java應(yīng)用運行的任意時刻請求載入或新建數(shù)據(jù)庫實例,java虛擬機獲取數(shù)據(jù)庫實例,或者通過操作系統(tǒng)接口向內(nèi)存管理模塊請求分配更多的非易失性內(nèi)存;
步驟3:通過java虛擬機對數(shù)據(jù)庫的內(nèi)存使用進行資源監(jiān)控、垃圾回收、碎片整理管理;
步驟4:退出java虛擬機。
與現(xiàn)有技術(shù)相比,本發(fā)明具有如下的有益效果:
1、本發(fā)明充分利用了非易失性內(nèi)存訪問速度快,粒度細,以及持久化的特點,使數(shù)據(jù)管理的整體性能得到提升;
2、本發(fā)明充分利用了java虛擬機成熟的內(nèi)存管理功能和持久化接口,進一步降低了數(shù)據(jù)持久化管理的開銷;
3、本發(fā)明在保持原有語義的情況下,提供了更加輕量級的java持久化接口實現(xiàn),消除了復(fù)雜的數(shù)據(jù)格式轉(zhuǎn)化過程,進一步提升數(shù)據(jù)處理的性能。
附圖說明
通過閱讀參照以下附圖對非限制性實施例所作的詳細描述,本發(fā)明的其它特征、目的和優(yōu)點將會變得更明顯:
圖1為本發(fā)明提供的方法的原理框圖。
具體實施方式
下面結(jié)合具體實施例對本發(fā)明進行詳細說明。以下實施例將有助于本領(lǐng)域的技術(shù)人員進一步理解本發(fā)明,但不以任何形式限制本發(fā)明。應(yīng)當(dāng)指出的是,對本領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干變化和改進。這些都屬于本發(fā)明的保護范圍。
根據(jù)本發(fā)明提供的基于非易失性內(nèi)存與java虛擬機的新型數(shù)據(jù)管理方法,包括如下步驟:
數(shù)據(jù)訪問步驟:通過java應(yīng)用以java對象格式直接訪問和處理數(shù)據(jù)庫中的數(shù)據(jù),消除了數(shù)據(jù)格式轉(zhuǎn)化的過程;
載入數(shù)據(jù)庫步驟:將數(shù)據(jù)庫在java虛擬機運行的任意時刻作為java堆的一部分載入并使用;
數(shù)據(jù)管理步驟:通過java虛擬機對數(shù)據(jù)庫進行直接的內(nèi)存管理。
所述數(shù)據(jù)訪問步驟中使用輕量級的java持久化接口直接訪問和處理數(shù)據(jù)。
所述載入數(shù)據(jù)庫步驟中的數(shù)據(jù)庫具有java虛擬機兼容性,即所述數(shù)據(jù)庫的格式能夠被java虛擬機載入后解析使用。
所述java虛擬機能夠?qū)?shù)據(jù)庫進行內(nèi)存使用監(jiān)控、垃圾收集以及碎片整理。
所述java虛擬機能夠通過操作系統(tǒng)提供的接口獲取非易失性內(nèi)存資源,并進行操作和管理。
下面結(jié)合具體實施例對本發(fā)明的技術(shù)方案做更加詳細的說明。
基于非易失性內(nèi)存與java虛擬機的新型數(shù)據(jù)管理技術(shù)的具體運行流程包括:java虛擬機啟動、載入或新建數(shù)據(jù)庫實例、數(shù)據(jù)庫操作、java虛擬機退出四個階段。以下將通過具體實施示例來詳細描述本發(fā)明。
本發(fā)明的示例具體步驟如下:
步驟s1:用戶運行java應(yīng)用,java虛擬機啟動,進行初始化。
步驟s2:java應(yīng)用可在運行的任意時刻通過修改過的輕量級java持久化接口(圖中的jpa’)請求載入或新建數(shù)據(jù)庫實例,java虛擬機根據(jù)請求獲取之前已經(jīng)持久化的數(shù)據(jù)庫實例,也可以通過操作系統(tǒng)接口向內(nèi)存管理模塊請求分配更多的非易失性內(nèi)存。
步驟s3:用戶可通過jpa’進行增刪改查等數(shù)據(jù)庫操作。由于目前的數(shù)據(jù)以java對象格式存儲在java虛擬機之中,省去了之前的數(shù)據(jù)轉(zhuǎn)化開銷,從而提升了數(shù)據(jù)處理的性能。同時,java虛擬機也會對數(shù)據(jù)庫的內(nèi)存使用進行資源監(jiān)控、垃圾回收、碎片整理等管理。
步驟s4:當(dāng)java程序退出時,java虛擬機也隨之退出,但數(shù)據(jù)庫實例由于存儲在非易失性內(nèi)存之中,數(shù)據(jù)并不會因此丟失。當(dāng)新的java虛擬機啟動時,可以再次向操作系統(tǒng)請求載入該數(shù)據(jù)庫實例并進行數(shù)據(jù)庫操作。
以上對本發(fā)明的具體實施例進行了描述。需要理解的是,本發(fā)明并不局限于上述特定實施方式,本領(lǐng)域技術(shù)人員可以在權(quán)利要求的范圍內(nèi)做出各種變化或修改,這并不影響本發(fā)明的實質(zhì)內(nèi)容。在不沖突的情況下,本申請的實施例和實施例中的特征可以任意相互組合。