許春聰,劉 釗,文海雄,黃忠主,鄭 強(qiáng)
(解放軍75837部隊(duì),廣東 廣州 510630)
基于內(nèi)存的數(shù)據(jù)存儲技術(shù)研究*
許春聰,劉 釗,文海雄,黃忠主,鄭 強(qiáng)
(解放軍75837部隊(duì),廣東 廣州 510630)
基于內(nèi)存的數(shù)據(jù)存儲已經(jīng)成為緩解磁盤I/O性能瓶頸的重要方式之一。簡要介紹了緩解系統(tǒng)I/O性能瓶頸的4種方式,闡述了分布式內(nèi)存文件系統(tǒng)的優(yōu)勢,并提出了未來的研究重點(diǎn)。
內(nèi)存;數(shù)據(jù)存儲;緩存;文件系統(tǒng)
鑒于機(jī)械運(yùn)動特性,磁盤性能的提高在很大程度上受到磁盤I/O性能的限制。雖然磁盤的容量逐年增大,但訪問延遲和帶寬的性能改善卻收效甚微。隨著多核處理器技術(shù)和新型網(wǎng)絡(luò)的迅猛發(fā)展,磁盤I/O與處理器和網(wǎng)絡(luò)的性能差距越來越大。為了彌補(bǔ)磁盤I/O性能的不足,大多數(shù)的數(shù)據(jù)中心采用RAID、并行文件系統(tǒng)和I/O庫等技術(shù)來提高系統(tǒng)的數(shù)據(jù)吞吐量。對于大塊數(shù)據(jù)的連續(xù)訪問,這一方法能夠提供較高的訪問帶寬。但是,對于隨機(jī)I/O的訪問,由于磁盤的尋道時(shí)間、準(zhǔn)備時(shí)間相對比較長,系統(tǒng)的訪問延遲和數(shù)據(jù)吞吐量的性能卻改善很小。
從計(jì)算機(jī)技術(shù)發(fā)展的現(xiàn)狀和趨勢看,使用DRAM構(gòu)建大規(guī)模存儲系統(tǒng)的條件已經(jīng)成熟。一方面,高密度的內(nèi)存封裝技術(shù)使單片DRAM的容量快速增加,使用DRAM已經(jīng)可以構(gòu)建數(shù)十太字節(jié)的海量數(shù)據(jù)存儲;另一方面,DRAM的價(jià)格快速下降,構(gòu)建大規(guī)模內(nèi)存存儲系統(tǒng)的成本可以被接受。
以內(nèi)存為數(shù)據(jù)的基本存儲介質(zhì)是提高系統(tǒng)性能的有效方法之一。當(dāng)前,以內(nèi)存方式來緩解系統(tǒng)I/O性能瓶頸的主要有主存數(shù)據(jù)庫、基于內(nèi)存的key-value數(shù)據(jù)存儲、磁盤緩存和內(nèi)存文件系統(tǒng)4種方式。
主存數(shù)據(jù)庫將整個(gè)關(guān)系型數(shù)據(jù)庫永久地放進(jìn)內(nèi)存中,重新設(shè)計(jì)查詢處理、并發(fā)控制與恢復(fù)的算法和數(shù)據(jù)結(jié)構(gòu),以更有效地使用CPU周期和內(nèi)存,其數(shù)據(jù)訪問結(jié)構(gòu)、操作算法和恢復(fù)機(jī)制等均有一些根本性的變化,性能有較大的改善。DeWitt D J于1984年第一次提出了主存數(shù)據(jù)庫的概念,指出了平衡二叉樹訪問方法、Hash操作算法更適用于主存數(shù)據(jù)庫,并提出了主存數(shù)據(jù)庫的恢復(fù)機(jī)制[1]。之后研究者們又陸續(xù)提出了使用檢查點(diǎn)技術(shù)實(shí)現(xiàn)主存數(shù)據(jù)庫的恢復(fù)機(jī)制[2],按區(qū)雙向鎖定模式解決主存數(shù)據(jù)庫中的并發(fā)控制問題[3],以堆文件作為主存數(shù)據(jù)庫的數(shù)據(jù)存儲結(jié)構(gòu)等技術(shù)[4],使主存數(shù)據(jù)庫的理論和技術(shù)更加完善。目前,常用的主存數(shù)據(jù)庫有eXtremeDB、Oracle TimesTen、SolidDB和Altibase等。相對于I/O庫技術(shù),主存數(shù)據(jù)庫基于內(nèi)存進(jìn)行體系結(jié)構(gòu)設(shè)計(jì),從根本上拋棄了磁盤數(shù)據(jù)管理的傳統(tǒng)方式,并且在數(shù)據(jù)緩存、快速算法、并行操作方面也進(jìn)行了相應(yīng)的改進(jìn),以提高數(shù)據(jù)處理速度。但它有3個(gè)重要的不足:①不適用于非結(jié)構(gòu)化數(shù)據(jù)的存儲;②當(dāng)數(shù)據(jù)庫的記錄數(shù)超過一定數(shù)量時(shí),性能會急劇下降;③動態(tài)擴(kuò)展性不足。
基于內(nèi)存的key-value的數(shù)據(jù)存儲結(jié)構(gòu)簡單,并具有高可擴(kuò)展性和高效率訪問的特性。基于內(nèi)存的key-value的數(shù)據(jù)存儲主要應(yīng)用于對事務(wù)一致性、寫實(shí)時(shí)性、讀實(shí)時(shí)性要求不高,并且不會執(zhí)行多表關(guān)聯(lián)查詢的場合。它一般用來作為大型網(wǎng)站動態(tài)數(shù)據(jù)的緩存,以提升高并發(fā)訪問的性能。典型的基于內(nèi)存key-value的數(shù)據(jù)存儲系統(tǒng)有Memcached[5]和Redis。分布式的內(nèi)存對象緩存系統(tǒng)Memcached是在內(nèi)存里維護(hù)一張巨大的key-value數(shù)據(jù)表,用來存儲經(jīng)常被訪問的數(shù)組和文件,它主要支持?jǐn)?shù)據(jù)庫記錄,單個(gè)value不能超過1 MB。它一般用于減少數(shù)據(jù)庫負(fù)載,加速動態(tài)Web應(yīng)用,提升訪問速度。Redis將整個(gè)數(shù)據(jù)庫加載在內(nèi)存中進(jìn)行操作,定期將數(shù)據(jù)備份到硬盤上。它支持List鏈表和Set集合的數(shù)據(jù)結(jié)構(gòu),單個(gè)value不能超過1 GB。
但是,key-value的數(shù)據(jù)存儲不能直接支持傳統(tǒng)應(yīng)用的計(jì)算和數(shù)據(jù)存儲,這主要體現(xiàn)在以下3個(gè)方面:①傳統(tǒng)應(yīng)用基于POSIX語義的數(shù)據(jù)訪問接口,key-value數(shù)據(jù)存儲系統(tǒng)一般采用put和get這2種典型的接口,在接口語義和接口實(shí)現(xiàn)上都不能與傳統(tǒng)應(yīng)用相兼容;②key-value的數(shù)據(jù)存儲系統(tǒng)沒有充分考慮到數(shù)據(jù)一致性對傳統(tǒng)應(yīng)用數(shù)據(jù)訪問性能的影響;③key-value存儲結(jié)構(gòu)不支持存儲對象的區(qū)間查詢,這限制了數(shù)據(jù)對象的操作。
磁盤緩存是解決系統(tǒng)磁盤I/O瓶頸的傳統(tǒng)方法,其基本思想是充分利用局部性原理,將最頻繁訪問的文件數(shù)據(jù)存儲在內(nèi)存中,盡量減少文件系統(tǒng)訪問磁盤的次數(shù)。采用緩存機(jī)制的目的是提高系統(tǒng)訪問內(nèi)存數(shù)據(jù)的命中率,它一般輔以替換算法[6]和I/O聚合[7]2項(xiàng)技術(shù)。采用高效的替換算法,系統(tǒng)可以保證緩存空間中存儲的都是最頻繁或最近被訪問的文件數(shù)據(jù);采用I/O聚合技術(shù),系統(tǒng)可以盡量減少讀寫磁盤的次數(shù)。然而,磁盤緩存具有以下幾方面的不足:①需要頻繁地在內(nèi)存與磁盤間移動數(shù)據(jù),操作復(fù)雜。這是因?yàn)榇疟P才是文件的最終存儲介質(zhì),將磁盤文件數(shù)據(jù)讀入內(nèi)存,需要訪問元數(shù)據(jù)和數(shù)據(jù),其管理的開銷比較大。②需要維護(hù)內(nèi)存與磁盤間的數(shù)據(jù)一致性。采用緩存機(jī)制使得內(nèi)存中的數(shù)據(jù)僅是一個(gè)備份,所以,必須采用可靠的機(jī)制保證內(nèi)存與磁盤間的數(shù)據(jù)一致性。考慮性能和機(jī)器故障2個(gè)因素,數(shù)據(jù)一致性的維護(hù)就比較復(fù)雜。③無法解決網(wǎng)絡(luò)傳輸速度慢的問題。在傳統(tǒng)的基于磁盤的存儲系統(tǒng)中,磁盤I/O是整個(gè)系統(tǒng)的性能瓶頸。假設(shè)緩存容量增大至磁盤的容量,訪問操作的命中率可達(dá)100%.由于網(wǎng)絡(luò)傳輸延遲比DRAM的訪問延遲大得多,網(wǎng)絡(luò)數(shù)據(jù)傳輸將成為制約系統(tǒng)性能的重要因素。因此,不能簡單地采用增大內(nèi)存的方法來解決磁盤I/O性能瓶頸。④無法高效地利用大量可用內(nèi)存。當(dāng)磁盤文件緩存的容量增大到一定程度后,由緩存增加所帶來的邊際效益將會減少[8]。當(dāng)內(nèi)存容量達(dá)到一定容量后,增大內(nèi)存容量不僅無法明顯提高系統(tǒng)的性能,反而會使系統(tǒng)的能耗和一致性維護(hù)的開銷明顯增大。
內(nèi)存文件系統(tǒng),是指直接在內(nèi)存中建立文件系統(tǒng),將內(nèi)存作為元數(shù)據(jù)和數(shù)據(jù)存儲的基本介質(zhì)。內(nèi)存文件系統(tǒng)與磁盤緩存的最大區(qū)別是,內(nèi)存是基本的存儲介質(zhì)。內(nèi)存的帶寬大,訪問延遲小,使用內(nèi)存來替代磁盤能夠更加高效地緩解磁盤I/O瓶頸。
內(nèi)存文件系統(tǒng)主要有以下2個(gè)優(yōu)勢:①內(nèi)存文件系統(tǒng)的文件組織方式可以采用更加緊湊、更加高效的數(shù)據(jù)組織結(jié)構(gòu)。鑒于DRAM在隨機(jī)訪問方面的優(yōu)勢,內(nèi)存中的數(shù)據(jù)存儲完全不需要采用固定數(shù)據(jù)塊大小的組織方式。更加緊湊的組織方式能夠更加高效地利用內(nèi)存的空間。②與主存數(shù)據(jù)庫和key-value數(shù)據(jù)存儲相比,內(nèi)存文件系統(tǒng)的內(nèi)存存儲空間具有文件語義,系統(tǒng)可以使用文件訪問接口管理內(nèi)存存儲空間。這一特性使內(nèi)存文件系統(tǒng)能夠滿足傳統(tǒng)應(yīng)用的需求。
分布式內(nèi)存文件系統(tǒng)將內(nèi)存作為基本的存儲介質(zhì),以磁盤作為數(shù)據(jù)備份設(shè)備,其邏輯視圖如圖1所示。
與傳統(tǒng)分布式文件系統(tǒng)相同,分布式內(nèi)存文件系統(tǒng)具有高可擴(kuò)展性、高容錯(cuò)性、高可用性等特點(diǎn)。此外,分布式內(nèi)存文件系統(tǒng)能夠充分發(fā)揮DRAM的性能優(yōu)勢,具有高數(shù)據(jù)吞吐量和低訪問延遲的優(yōu)勢。相對于主存數(shù)據(jù)庫和基于內(nèi)存的key-value數(shù)據(jù)存儲,分布式內(nèi)存文件系統(tǒng)具有兼容傳統(tǒng)應(yīng)用的特性。
圖1 分布式內(nèi)存文件系統(tǒng)的邏輯視圖
基于內(nèi)存存儲數(shù)據(jù)是緩解磁盤I/O性能瓶頸的可行方式之一,由于非易失性內(nèi)存的特性,基于內(nèi)存構(gòu)建數(shù)據(jù)存儲系統(tǒng)還需要深入研究系統(tǒng)的可靠性技術(shù)。要想增強(qiá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].計(jì)算機(jī)科學(xué),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
本文受軍隊(duì)某重大科研項(xiàng)目支持
許春聰(1980—),男,主要從事云計(jì)算、分布式文件系統(tǒng)方面的研究。劉釗(1983—),男,主要從事分布式系統(tǒng)、網(wǎng)絡(luò)安全方面的研究。文海雄(1976—),男,主要從事數(shù)據(jù)管理、信息服務(wù)方面的研究。黃忠主(1987—),男,主要從事數(shù)據(jù)挖掘、自動化系統(tǒng)方面的研究。鄭強(qiáng)(1986—),男,主要從事并行分布式處理、模式識別方面的研究。
白潔〕