許春聰,劉 釗,文海雄,黃忠主,鄭 強
(解放軍75837部隊,廣東 廣州 510630)
基于內存的數(shù)據(jù)存儲技術研究*
許春聰,劉 釗,文海雄,黃忠主,鄭 強
(解放軍75837部隊,廣東 廣州 510630)
基于內存的數(shù)據(jù)存儲已經成為緩解磁盤I/O性能瓶頸的重要方式之一。簡要介紹了緩解系統(tǒng)I/O性能瓶頸的4種方式,闡述了分布式內存文件系統(tǒng)的優(yōu)勢,并提出了未來的研究重點。
內存;數(shù)據(jù)存儲;緩存;文件系統(tǒng)
鑒于機械運動特性,磁盤性能的提高在很大程度上受到磁盤I/O性能的限制。雖然磁盤的容量逐年增大,但訪問延遲和帶寬的性能改善卻收效甚微。隨著多核處理器技術和新型網(wǎng)絡的迅猛發(fā)展,磁盤I/O與處理器和網(wǎng)絡的性能差距越來越大。為了彌補磁盤I/O性能的不足,大多數(shù)的數(shù)據(jù)中心采用RAID、并行文件系統(tǒng)和I/O庫等技術來提高系統(tǒng)的數(shù)據(jù)吞吐量。對于大塊數(shù)據(jù)的連續(xù)訪問,這一方法能夠提供較高的訪問帶寬。但是,對于隨機I/O的訪問,由于磁盤的尋道時間、準備時間相對比較長,系統(tǒng)的訪問延遲和數(shù)據(jù)吞吐量的性能卻改善很小。
從計算機技術發(fā)展的現(xiàn)狀和趨勢看,使用DRAM構建大規(guī)模存儲系統(tǒng)的條件已經成熟。一方面,高密度的內存封裝技術使單片DRAM的容量快速增加,使用DRAM已經可以構建數(shù)十太字節(jié)的海量數(shù)據(jù)存儲;另一方面,DRAM的價格快速下降,構建大規(guī)模內存存儲系統(tǒng)的成本可以被接受。
以內存為數(shù)據(jù)的基本存儲介質是提高系統(tǒng)性能的有效方法之一。當前,以內存方式來緩解系統(tǒng)I/O性能瓶頸的主要有主存數(shù)據(jù)庫、基于內存的key-value數(shù)據(jù)存儲、磁盤緩存和內存文件系統(tǒng)4種方式。
主存數(shù)據(jù)庫將整個關系型數(shù)據(jù)庫永久地放進內存中,重新設計查詢處理、并發(fā)控制與恢復的算法和數(shù)據(jù)結構,以更有效地使用CPU周期和內存,其數(shù)據(jù)訪問結構、操作算法和恢復機制等均有一些根本性的變化,性能有較大的改善。DeWitt D J于1984年第一次提出了主存數(shù)據(jù)庫的概念,指出了平衡二叉樹訪問方法、Hash操作算法更適用于主存數(shù)據(jù)庫,并提出了主存數(shù)據(jù)庫的恢復機制[1]。之后研究者們又陸續(xù)提出了使用檢查點技術實現(xiàn)主存數(shù)據(jù)庫的恢復機制[2],按區(qū)雙向鎖定模式解決主存數(shù)據(jù)庫中的并發(fā)控制問題[3],以堆文件作為主存數(shù)據(jù)庫的數(shù)據(jù)存儲結構等技術[4],使主存數(shù)據(jù)庫的理論和技術更加完善。目前,常用的主存數(shù)據(jù)庫有eXtremeDB、Oracle TimesTen、SolidDB和Altibase等。相對于I/O庫技術,主存數(shù)據(jù)庫基于內存進行體系結構設計,從根本上拋棄了磁盤數(shù)據(jù)管理的傳統(tǒng)方式,并且在數(shù)據(jù)緩存、快速算法、并行操作方面也進行了相應的改進,以提高數(shù)據(jù)處理速度。但它有3個重要的不足:①不適用于非結構化數(shù)據(jù)的存儲;②當數(shù)據(jù)庫的記錄數(shù)超過一定數(shù)量時,性能會急劇下降;③動態(tài)擴展性不足。
基于內存的key-value的數(shù)據(jù)存儲結構簡單,并具有高可擴展性和高效率訪問的特性?;趦却娴膋ey-value的數(shù)據(jù)存儲主要應用于對事務一致性、寫實時性、讀實時性要求不高,并且不會執(zhí)行多表關聯(lián)查詢的場合。它一般用來作為大型網(wǎng)站動態(tài)數(shù)據(jù)的緩存,以提升高并發(fā)訪問的性能。典型的基于內存key-value的數(shù)據(jù)存儲系統(tǒng)有Memcached[5]和Redis。分布式的內存對象緩存系統(tǒng)Memcached是在內存里維護一張巨大的key-value數(shù)據(jù)表,用來存儲經常被訪問的數(shù)組和文件,它主要支持數(shù)據(jù)庫記錄,單個value不能超過1 MB。它一般用于減少數(shù)據(jù)庫負載,加速動態(tài)Web應用,提升訪問速度。Redis將整個數(shù)據(jù)庫加載在內存中進行操作,定期將數(shù)據(jù)備份到硬盤上。它支持List鏈表和Set集合的數(shù)據(jù)結構,單個value不能超過1 GB。
但是,key-value的數(shù)據(jù)存儲不能直接支持傳統(tǒng)應用的計算和數(shù)據(jù)存儲,這主要體現(xiàn)在以下3個方面:①傳統(tǒng)應用基于POSIX語義的數(shù)據(jù)訪問接口,key-value數(shù)據(jù)存儲系統(tǒng)一般采用put和get這2種典型的接口,在接口語義和接口實現(xiàn)上都不能與傳統(tǒng)應用相兼容;②key-value的數(shù)據(jù)存儲系統(tǒng)沒有充分考慮到數(shù)據(jù)一致性對傳統(tǒng)應用數(shù)據(jù)訪問性能的影響;③key-value存儲結構不支持存儲對象的區(qū)間查詢,這限制了數(shù)據(jù)對象的操作。
磁盤緩存是解決系統(tǒng)磁盤I/O瓶頸的傳統(tǒng)方法,其基本思想是充分利用局部性原理,將最頻繁訪問的文件數(shù)據(jù)存儲在內存中,盡量減少文件系統(tǒng)訪問磁盤的次數(shù)。采用緩存機制的目的是提高系統(tǒng)訪問內存數(shù)據(jù)的命中率,它一般輔以替換算法[6]和I/O聚合[7]2項技術。采用高效的替換算法,系統(tǒng)可以保證緩存空間中存儲的都是最頻繁或最近被訪問的文件數(shù)據(jù);采用I/O聚合技術,系統(tǒng)可以盡量減少讀寫磁盤的次數(shù)。然而,磁盤緩存具有以下幾方面的不足:①需要頻繁地在內存與磁盤間移動數(shù)據(jù),操作復雜。這是因為磁盤才是文件的最終存儲介質,將磁盤文件數(shù)據(jù)讀入內存,需要訪問元數(shù)據(jù)和數(shù)據(jù),其管理的開銷比較大。②需要維護內存與磁盤間的數(shù)據(jù)一致性。采用緩存機制使得內存中的數(shù)據(jù)僅是一個備份,所以,必須采用可靠的機制保證內存與磁盤間的數(shù)據(jù)一致性??紤]性能和機器故障2個因素,數(shù)據(jù)一致性的維護就比較復雜。③無法解決網(wǎng)絡傳輸速度慢的問題。在傳統(tǒng)的基于磁盤的存儲系統(tǒng)中,磁盤I/O是整個系統(tǒng)的性能瓶頸。假設緩存容量增大至磁盤的容量,訪問操作的命中率可達100%.由于網(wǎng)絡傳輸延遲比DRAM的訪問延遲大得多,網(wǎng)絡數(shù)據(jù)傳輸將成為制約系統(tǒng)性能的重要因素。因此,不能簡單地采用增大內存的方法來解決磁盤I/O性能瓶頸。④無法高效地利用大量可用內存。當磁盤文件緩存的容量增大到一定程度后,由緩存增加所帶來的邊際效益將會減少[8]。當內存容量達到一定容量后,增大內存容量不僅無法明顯提高系統(tǒng)的性能,反而會使系統(tǒng)的能耗和一致性維護的開銷明顯增大。
內存文件系統(tǒng),是指直接在內存中建立文件系統(tǒng),將內存作為元數(shù)據(jù)和數(shù)據(jù)存儲的基本介質。內存文件系統(tǒng)與磁盤緩存的最大區(qū)別是,內存是基本的存儲介質。內存的帶寬大,訪問延遲小,使用內存來替代磁盤能夠更加高效地緩解磁盤I/O瓶頸。
內存文件系統(tǒng)主要有以下2個優(yōu)勢:①內存文件系統(tǒng)的文件組織方式可以采用更加緊湊、更加高效的數(shù)據(jù)組織結構。鑒于DRAM在隨機訪問方面的優(yōu)勢,內存中的數(shù)據(jù)存儲完全不需要采用固定數(shù)據(jù)塊大小的組織方式。更加緊湊的組織方式能夠更加高效地利用內存的空間。②與主存數(shù)據(jù)庫和key-value數(shù)據(jù)存儲相比,內存文件系統(tǒng)的內存存儲空間具有文件語義,系統(tǒng)可以使用文件訪問接口管理內存存儲空間。這一特性使內存文件系統(tǒng)能夠滿足傳統(tǒng)應用的需求。
分布式內存文件系統(tǒng)將內存作為基本的存儲介質,以磁盤作為數(shù)據(jù)備份設備,其邏輯視圖如圖1所示。
與傳統(tǒng)分布式文件系統(tǒng)相同,分布式內存文件系統(tǒng)具有高可擴展性、高容錯性、高可用性等特點。此外,分布式內存文件系統(tǒng)能夠充分發(fā)揮DRAM的性能優(yōu)勢,具有高數(shù)據(jù)吞吐量和低訪問延遲的優(yōu)勢。相對于主存數(shù)據(jù)庫和基于內存的key-value數(shù)據(jù)存儲,分布式內存文件系統(tǒng)具有兼容傳統(tǒng)應用的特性。
圖1 分布式內存文件系統(tǒng)的邏輯視圖
基于內存存儲數(shù)據(jù)是緩解磁盤I/O性能瓶頸的可行方式之一,由于非易失性內存的特性,基于內存構建數(shù)據(jù)存儲系統(tǒng)還需要深入研究系統(tǒng)的可靠性技術。要想增強系統(tǒng)的可靠性,可以從供電系統(tǒng)、備份策略、數(shù)據(jù)冗余等方面入手研究,以確保系統(tǒng)不掉電、數(shù)據(jù)不丟失。
[1]DeWitt D J,Katz R H,Olken F,et al.Implementation Techniques for Main Memory Database Systems[C]//Proceedings of the ACM SIGMOD international conference on Management of Data.Boston:ACM,1984:1-8.
[2]HagmannRB.A crashrecoveryschemefora memory-resident database system[J].IEEE Trans.Comput.,1986,35(9):839-843.
[3]Lehman T J,Carey M J.Concurrency Control in Memory-Resident Database Systems[R].University of Wisconsin-Madison Computer Sciences Department Technical Report,1987.
[4]Gray J,Putzolu F.The 5 minute rule for trading memory for disc accesses and the 10 byte rule for trading memory for CPU time[J].Acm Sigmod Record,1987,16(3):395-398.
[5]Masahiro Nagano.Memcached全面剖析[M].&charlee,譯.[出版地不詳]:[出版社不詳],2008.
[6]黃敏,蔡志剛.緩存替換算法研究綜述[J].計算機科學,2010,33(12):191-193.
[7]Dongarra J,Kennedy K,White A,et al.Sourcebook of Parallel Computing[M].San Francisco:Morgan Kaufmann,2005.
[8]Roselli D,Lorch J R,Anderson T E.A Comparison of File System Workloads[C]//Proceedings of 2000 USENIX Annual Technical Conference.Monterey,San Diego,California,USA,2000:18-23.
TP301
A
10.15913/j.cnki.kjycx.2018.02.019
2095-6835(2018)02-0019-03
本文受軍隊某重大科研項目支持
許春聰(1980—),男,主要從事云計算、分布式文件系統(tǒng)方面的研究。劉釗(1983—),男,主要從事分布式系統(tǒng)、網(wǎng)絡安全方面的研究。文海雄(1976—),男,主要從事數(shù)據(jù)管理、信息服務方面的研究。黃忠主(1987—),男,主要從事數(shù)據(jù)挖掘、自動化系統(tǒng)方面的研究。鄭強(1986—),男,主要從事并行分布式處理、模式識別方面的研究。
白潔〕