周鵬程
(湖南工業職業技術學院信息工程學院 湖南省長沙市 410000)
隨著現代社會經濟與科學技術水平的不斷發展,物聯網、云計算、AI 等新技術在許多行業領域中發揮了重大的作用,然而這些新技術的實現都是建立在大數據基礎上的,由此可見大數據技術是各種新技術賴以生存的前提。大數據技術在現代社會發展中具有重要的地位,本身具有數據信息量龐大、數據種類形式不一、高價值信息占比少、數據增長快速與高時效性等特點,根據大數據本身的特征,需要建立大數據處理系統,涵蓋數據收集、數據分析與提取、數據存儲、數據整合以及數據顯現等各個環節,要求處理后的大數據具有良好的拓展性、可靠性、適用性以及實用性。大數據是基于數據的密集型技術,傳統計算機體系中主要以計算為中心,已經無法達到大數據的使用標準。隨著現代科學技術的創新與進步,新型非易失性存儲設備獲得了較快的發展,生產成本也越來越低,為大數據發展提供了新的途徑。內存技術也就是在這種背景下產生的,具有非常高的信息處理效率以及很好的時效性。本文重點闡述了內存技術的含義與特征,指出了內存技術的應用現狀,提出了內存技術面臨的困境與挑戰,為內存計算技術的進一步發展提供支持。
內存計算和傳統計算方式具有較大區別,突出表現在讀取數據方式上的差別,傳統計算中CPU 是從硬盤上讀取數據,而內存計算中CPU 是直接從內存上完成數據讀取,并對數據進行計算以及整合,能夠顯著提升數據處理速度[1]。內存計算以大數據技術為載體,基于計算機內存元件的創新與進步,通過現代先進的軟件系統結構,在內存中實現數據的存儲與分析,最大程度防止開展I/O 操作的全新的以數據為主導的并行計算體系。內存計算通常應用在數據龐大且復雜的計算環境中,特別是計算量非常巨大同時要同步進行分析的計算場合。
內存計算技術通常是基于計算機軟件與硬件融合的背景下,通過計算機內存完成原本屬于數據庫的計算工作。將數據計算轉移到計算機內存中,能夠很好的避免I/O 架構對其的限制,同時還可以融合并行處理技術,顯著改善數據處理計算的速度[2]。
內存計算技術在提高數據處理速度上發揮了重要的作用,從現階段內存計算技術的應用現狀來看,主要表現出了如下特征:
(1)在計算機內存上可以完成全部操作。依托于內存的快速數據讀取以及計算機硬件擁有非常龐大的內存量,將等待處理的數據統一儲存到內存中,內存不僅能夠實現單向內存,同時能夠視為分布式內存;將重要數據信息存儲在內存上,既可以顯著提升數據處理的速度,也有利于開展更加高效的數據處理途徑。
(2)行存儲與列存儲交叉應用。因為將數據庫存放在計算機內存中,原本對列存儲與行存儲的限制就不復存在,在這種情況下就可以實現行存儲與列存儲的交叉應用。
(3)快速并行處理體系。可以兼容不同類型的服務器以及處理器,在處理較為復雜與繁瑣的數據模型時,能夠將其拆分為若干個部分進行逐個處理,也能夠將各個小部分劃分到多個服務器中,然后再開始數據處理工作[3]。
(4)數據高效壓縮。數據庫包含了各式各樣的龐大的數據信息,必須要將這些數據進行整合與壓縮,進一步完善內存構造,這樣才能夠顯著提升內存運行速度,從而在有限的時間內完成更多數據信息的處理。
(5)服務于數據密集型應用。內存計算技術要處理的數據類型通常是信息量龐大且復雜、時效性非常高的先進大數據應用。
(6)擁有優異的編程模型以及端口。內存計算技術的實現要建立在計算機軟件與硬件良好配合的基礎上,所以,編程的難度與復雜程度較高[4]。
伴隨著現代科學技術水平的不斷發展,計算機硬件技術獲得了較大的突破與進步,內存容量逐步增大,制造成本越來越低,并且對數據庫實時響應速度需要的標準更高,加強內存技術在數據庫中的應用,以此來提高數據庫系統的運行效率成為了現代計算機領域研究的重點。
實際上內存技術不能夠算真正意義上的新型技術,在上世紀60年代就已經被發現,并且在社會經濟水平不斷增長的背景下,在90年代時期得到了大范圍的應用。內存計算技術不需要將數據存儲到硬盤中,在內存中就可以實現數據性信息的操作。和傳統的磁盤等存儲方式相比較,采取內存存儲方式能夠獲得更快的數據處理速度,同時系統從內存上讀取數據信息也能夠明顯的改善系統應用效果。此外,采用內存計算技術構建的數據庫系統除了在數據處理速度上得到明顯提升外,同時還彌補了傳統磁盤管理中存在的諸多問題,以內存為數據存儲的載體構建新型的系統架構,同時對數據緩存、高效算法以及并行運算等部分開展優化工作,進而在數據處理速度上要明顯優于常規數據庫效率,通常情況下都可以實現10 倍的增長,在理論狀況下則能夠達到上千倍增長[5]。
內存數據庫還有一個非常關鍵的特征是能夠實現對存儲在內存中的數據開展全事務處理工作,和以往通過數組的模式將數據存儲到內存中具有天壤之別。內存數據庫和應用之間沒有直接的聯系,從內存數據庫的本質來看,是將數據存儲到內存中并進行管理,并不單單是定義為緩存數據。一些數據庫僅僅是將系統中的緩存數據放置到內存中,但是內存數據庫中的內存引擎能夠實現任意數據訪問,因此和一般的內存數據庫具有不同的數據架構以及算法,通過這種方法能夠有效的防范由于反復行使排序命令降低緩存數據庫性能的現象。利用內存數據庫,可以最大可能的降低I/O 磁盤處理,而傳統數據庫主要以磁盤I/O 處理為主,因此可以獲得比傳統數據庫更高的數據處理效率。
圖計算分析本質上是I/O 聚集性計算,絕大多數的應用計算都要通過多次迭代來實現,同時計算過程中狀態信息也要在相鄰計算節點之間進行信息傳遞以及不斷更新,特別是面對體積龐大的圖數據,信息的傳遞更需要在不同計算節點之間往復進行,并對階段結果進行存入[6]。假如能夠將所有的數據信息都移植到內存中開展計算活動,必然能夠顯著提升數據處理速度。
常規的獨立工作的圖數據計算法庫,比如說LEDA,延伸性較差,同時不能夠很好的滿足龐大圖數據信息的處理要求;Map Reduce 具有良好的兼容性以及延伸性,然而在進行數據處理工作時無法獲得較高的效率;當下已有的圖并行工作系統,面臨著兼容性較差的困境。
將數據資源存儲到內存中再進行計算工作,可以極大的提升數據處理的速度,圖的內存計算系統主要涵蓋了以下幾個方面:首先是以內存分布模式為載體的集群系統,比較常見的有Trinity 系統;其次是依托于共享內存的分布式系統;最后是基于多核單機的非單一線程的共享內存體系,常見的有GRACE。
內存計算技術是結合計算儲存的系統架構,在計算機內存中構建專用數據庫。每隔一段時間就將存在時間較長的數據文件共享到磁盤中;在進行數據計算與處理過程中,全面的工作流程都依托于計算機內存,文件讀寫工作也只需要和內存交互系統建立聯系,不再進行磁盤讀寫操作,很好的彌補了傳統數據處理中互聯網信息傳輸速度慢、內部存儲與外部存儲兼容性差、I/O 配合不佳等弊端。
以內存數據庫為載體,布置各種類型的內存接口與存儲端口,從而實現內存數據庫的數據存儲與傳輸工作,同時還可以利用資源管理模塊對內存數據庫中的數據資源實施分配與管理。依托于內存計算技術構建的內存數據庫可以通過內存接口模塊實現虛擬內存管理系統以及數據庫資源關聯到一起,也可以通過數據存儲接口模式來完成分布式數據管理系統和硬盤內存之間的聯系,以此為基礎完成對內存數據庫各個節點數據的訪問。
當下內存計算技術主要是基于列存儲途徑對數據信息進行壓縮處理,之后在采取多核處理,一方面能夠更好的發揮出內存使用性能,另一方面也能夠顯著提升應用程序的執行效率。
(1)以列存儲模式完成對數據庫數據的存儲工作,能夠降低數據壓縮難度,極大的減小數據庫服務器和終端設備之間的數據輸送大小。
(2)以數據庫內存為載體實現數據存儲,能夠在云端完成對相關數據的分析與查詢,而不再需要將數據庫中的數據資源下載下來,縮減了信息分析與查詢流程,提升了數據查詢的效率。
隨著內存計算技術的不斷發展,面臨的困境和挑戰也越來越突出,重點表現在異構協同、能耗管理以及高效并行[7]。其中,異構協同主要表示為體系架構以及操作系統分別屬于不同的類型,怎樣將兩者進行相互結合構建數據庫內存的協同管控、公開透明的工作環境;能耗管理主要表示為怎樣將內存計算技術很好融入到系統架構以及編程模型中,實現大數據處理過程中的能耗可控,從而盡可能的降低數據處理與分析的能耗量;高效并行表示為依托于編程模型以及并行處理兩部分,怎樣將內存計算技術應用到其中,確保大數據可以高效率并行工作。
對上述問題進行深入研究,可以得出導致出現這三個問題的根本原因是由于以下四個方面引起的:系統架構以及軟件、編程模型與并行處理[8]。為了促進基于大數據的內存計算技術進一步發展,必須要對這四個難題進行處理。首先,在系統架構環節中,必須要規劃專用的CPU 信息輸送線路,從而能夠滿足異構混合層次內存的應用需求。其次,在系統軟件環節中,一方面要重新規劃異構層次內存系統的相同性數據形式,另一方面也要構建高效、透明以及穩定的新型內存數據查詢與管理模式。再次,在編程模型環節中,必須要基于新型內存的層次性特點來開發融合數據和計算的編程模型,與此同時還需要建立各種粒度劃分方法。最后,在并行處理環節,該環節要解決的問題重點體現在三個方面,分別是如何在并行環節中完成各個節點之間的互聯工作、如何科學合理的開展任務調度工作、如何解決分布式場所下的一致性問題。
內存數據庫是以內存為載體構建數據庫,有效防止了常規數據庫I/O 操作產生的開銷。在這種背景下內存數據庫的發展困境也就從I/O 操作問題轉變為怎樣縮減計算時間與降低訪問與存放時間,一般采取構建檢索目錄、采取并發控制方法等,進而最大程度的提高內存數據庫的處理速度,科學管理數據內存以及緩存,確保內存數據庫能夠獲得更高的應用性能。與此同時,硬件設施的創新與進步逐步優化了商用處理器的使用方式,常見的有SIMD 指令、RDMA 網絡等,可以基于較低的生產成本獲得較高的性能。由此可以看出,內存數據庫要想取得進一步發展,受到了來自系統軟件以及硬件兩方面的壓力與挑戰。
綜上所述,將數據庫信息放置到內存中,能夠很好的避免傳統I/O 操作帶來的弊端與限制,有助于提升數據庫的運算效率,改善數據庫的運行性能。在大數據背景下,數據種類多樣、體積龐大,必須要加強內存計算技術的發展,為大數據進一步發展提供支持。