內(nèi)存數(shù)據(jù)庫(kù)系統(tǒng),NVDIMM和數(shù)據(jù)持久性
隨著從通信設(shè)備到航空裝備和工業(yè)控制器等技術(shù)中對(duì)數(shù)據(jù)管理需求的不斷增長(zhǎng),以及受到這些設(shè)備中不斷增加的板載CPU、RAM和存儲(chǔ)資源的推動(dòng),數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)軟件在電子設(shè)備中越來(lái)越普及。設(shè)備上的數(shù)據(jù)庫(kù)規(guī)模大小不一,從幾個(gè)GB的數(shù)據(jù)到支持電信計(jì)費(fèi)/信用系統(tǒng)的等級(jí)評(píng)定和余額管理應(yīng)用,再到10GB以上的IP路由器的控制層數(shù)據(jù)庫(kù)以及100GB以上的電信呼叫路由數(shù)據(jù)庫(kù)。
本文引用地址:http://www.ex-cimer.com/article/201609/303648.htm數(shù)據(jù)庫(kù)管理系統(tǒng)--曾經(jīng)與商業(yè)應(yīng)用、臺(tái)式機(jī)和web應(yīng)用幾乎完全關(guān)聯(lián)在一起--為了滿足當(dāng)今電子設(shè)備的需求而經(jīng)過(guò)了長(zhǎng)足的發(fā)展。設(shè)計(jì)師經(jīng)常采用的內(nèi)存數(shù)據(jù)庫(kù)系統(tǒng)(IMDS)是在主存中存儲(chǔ)記錄,因此可以消除許多延時(shí)源,比如通過(guò)硬連線接進(jìn)數(shù)據(jù)庫(kù)管理系統(tǒng)的緩存和文件管理,這些源將數(shù)據(jù)永久存儲(chǔ)在硬盤(pán)或閃存中(下圖1顯示了這些延時(shí)源)。因此與傳統(tǒng)“硬盤(pán)上的”數(shù)據(jù)庫(kù)管理系統(tǒng)相比,內(nèi)存數(shù)據(jù)庫(kù)系統(tǒng)的執(zhí)行速度可以快好幾個(gè)數(shù)量級(jí)。它們的設(shè)計(jì)也更簡(jiǎn)單,可以最大限度地減少對(duì)CPU周期的需求,進(jìn)而允許使用更小功耗和更低成本的處理器。
圖1:傳統(tǒng)(磁盤(pán)上)數(shù)據(jù)庫(kù)系統(tǒng)中的延時(shí)源。
然而,易失性有時(shí)是一個(gè)使人擔(dān)心的因素。當(dāng)發(fā)生斷電或系統(tǒng)故障時(shí),主存中的內(nèi)容將消失。一些應(yīng)用可以容忍這種風(fēng)險(xiǎn)。例如,存儲(chǔ)在機(jī)頂盒中的基于RAM的電子節(jié)目指南在發(fā)生電源故障時(shí)會(huì)丟失,但利用有線電視頭端或衛(wèi)星接收機(jī)中的信息可以很快重建。然而,其它許多電子設(shè)備要求更高等級(jí)的數(shù)據(jù)庫(kù)持久性和可恢復(fù)性。舉例來(lái)說(shuō),一些醫(yī)療設(shè)備要求記錄隨時(shí)間變化的癥狀以支持臨床決策--這些數(shù)據(jù)在發(fā)生電源故障時(shí)不能突然消失。網(wǎng)絡(luò)路由器和交換機(jī)通常將配置數(shù)據(jù)永久地存儲(chǔ)在閃存中。將這種配置數(shù)據(jù)保存在內(nèi)存中也是有意義的,可以實(shí)現(xiàn)更快的重啟--但數(shù)據(jù)需要是可恢復(fù)的。面臨DRAM易失性挑戰(zhàn)的還有“讀取”指紋或臉部的掃描儀。為了允許或拒絕訪問(wèn)安全設(shè)施,掃描儀需要將這些數(shù)據(jù)與存儲(chǔ)在設(shè)備上的內(nèi)存數(shù)據(jù)庫(kù)系統(tǒng)中的生物特征數(shù)據(jù)進(jìn)行匹配。如果訪問(wèn)控制系統(tǒng)發(fā)生了故障,系統(tǒng)必須能夠很快恢復(fù)。
應(yīng)用例子:內(nèi)存數(shù)據(jù)庫(kù)系統(tǒng)和工業(yè)控制器
在工業(yè)控制系統(tǒng)中,在控制器中集成內(nèi)存數(shù)據(jù)庫(kù)系統(tǒng)可以支持‘扁平的’控制系統(tǒng)架構(gòu)。數(shù)據(jù)在這種架構(gòu)中存儲(chǔ)和處理,一些控制決策在獨(dú)立控制器層產(chǎn)生;而在相反(和傳統(tǒng))的層次化系統(tǒng)架構(gòu)中,存儲(chǔ)在控制器層的數(shù)據(jù)通常被限制用于控制變量。
內(nèi)存數(shù)據(jù)庫(kù)系統(tǒng)易失性解決方案
解決這種易失性問(wèn)題已有相應(yīng)的解決方案。以電池供電RAM形式出現(xiàn)的非易失性內(nèi)存可以在系統(tǒng)斷電時(shí)在DRAM芯片上保持?jǐn)?shù)據(jù)不變,不過(guò)這種方法沒(méi)有得到廣泛普及,因?yàn)榇嬖趪?yán)格的溫度要求、漏電流風(fēng)險(xiǎn)、有限的電池使用壽命和其它缺點(diǎn)。
內(nèi)存數(shù)據(jù)庫(kù)系統(tǒng)軟件本身可以提供數(shù)據(jù)持久性機(jī)制。舉例來(lái)說(shuō),借助事務(wù)日志功能,這種數(shù)據(jù)庫(kù)系統(tǒng)可以在日志文件中創(chuàng)建一條條事務(wù)記錄(對(duì)數(shù)據(jù)庫(kù)進(jìn)行的一組修改必須作為一個(gè)整體完成或失敗),在發(fā)生故障后這些記錄可以用來(lái)恢復(fù)數(shù)據(jù)庫(kù)。但記錄本身要求寫(xiě)入永久存儲(chǔ)器,因此性能上會(huì)有些下降。
減輕易失性問(wèn)題的另外一種內(nèi)存數(shù)據(jù)庫(kù)系統(tǒng)功能是數(shù)據(jù)庫(kù)復(fù)制,即獨(dú)立節(jié)點(diǎn)中的一個(gè)或多個(gè)備用內(nèi)存數(shù)據(jù)庫(kù)與主數(shù)據(jù)庫(kù)保持同步。如果主節(jié)點(diǎn)失效,這些數(shù)據(jù)庫(kù)的復(fù)制品之一將接替主節(jié)點(diǎn)的角色。雖然管理同步(和有可能發(fā)生的故障轉(zhuǎn)移)的過(guò)程和節(jié)點(diǎn)之間的通信會(huì)引起一些延時(shí),但同步可以很快發(fā)生。當(dāng)復(fù)制品數(shù)量增加或節(jié)點(diǎn)間的物理距離增加時(shí),性能成本也會(huì)增加。可以用不同的復(fù)制策略來(lái)管理延時(shí)。同步或“2-safe”復(fù)制方法要求數(shù)據(jù)庫(kù)事務(wù)在復(fù)制節(jié)點(diǎn)和主節(jié)點(diǎn)上同時(shí)完成,而異步或“1-safe”復(fù)制方法允許事務(wù)在復(fù)制節(jié)點(diǎn)上完成之前提交給主數(shù)據(jù)庫(kù)。異步方法提供更短的源保持時(shí)間,因此速度更快,但一致性和持久性差一些。
NVDIMMS:非易性RAM,無(wú)需電池
非易失性雙列直插式內(nèi)存模塊或NVDIMM的出現(xiàn)增加了針對(duì)內(nèi)存數(shù)據(jù)庫(kù)持久性的一種新工具。NVDIMM采用標(biāo)準(zhǔn)記憶棒的形式,可插入現(xiàn)有的DIMM插座,因此簡(jiǎn)化了到現(xiàn)成平臺(tái)的集成。通常它們包含標(biāo)準(zhǔn)DRAM、NAND閃存和超級(jí)電容電源。在正常工作時(shí),這種技術(shù)提供了高速DRAM的性能。當(dāng)發(fā)生斷電事件時(shí),超級(jí)電容提供的瞬時(shí)電能可用來(lái)將主存內(nèi)容寫(xiě)入NAND閃存芯片,實(shí)現(xiàn)永久保存。當(dāng)電源恢復(fù)時(shí),NVDIMM將NAND閃存中的數(shù)據(jù)恢復(fù)到DRAM中。
對(duì)于內(nèi)存數(shù)據(jù)庫(kù)來(lái)說(shuō),NVDIMM的作用與電池供電型RAM是類(lèi)似的,但沒(méi)有后者所需的電池及其缺點(diǎn)。McObject公司以前就做過(guò)這方面的努力,其eXtremeDB內(nèi)存數(shù)據(jù)庫(kù)系統(tǒng)可以與電池供電型RAM一起工作。公司很想將使用NVDIMM的內(nèi)存數(shù)據(jù)庫(kù)系統(tǒng)作為主要存儲(chǔ)器。目前有多家供應(yīng)商可以提供NVDIMM。我們使用AgigA Tech公司的產(chǎn)品對(duì)eXtremeDB進(jìn)行了測(cè)試,因?yàn)槲覀兎浅J煜gigA公司的母公司--賽普拉斯半導(dǎo)體。同時(shí)我們把測(cè)試僅限于AgigA的NVDIMM(比如沒(méi)有測(cè)試來(lái)自VikingTechnology和Smart Modular Technologies公司的NVDIMM),這主要是因?yàn)槲覀兊臅r(shí)間和資源非常有限。因此本文中提到的測(cè)試只是從概念上證明,內(nèi)存數(shù)據(jù)庫(kù)系統(tǒng)可以與NVDIMM一起作為存儲(chǔ)器,達(dá)到與使用傳統(tǒng)DRAM相當(dāng)?shù)男阅?,并且能夠利用NVDIMM的恢復(fù)功能恢復(fù)由于系統(tǒng)故障“丟失的”內(nèi)存數(shù)據(jù)庫(kù)。
測(cè)試還解決了在同時(shí)要求低延時(shí)和數(shù)據(jù)可恢復(fù)性的應(yīng)用中使用內(nèi)存數(shù)據(jù)庫(kù)系統(tǒng)時(shí)經(jīng)常出現(xiàn)的另外一個(gè)問(wèn)題,即采用事務(wù)日志記錄的內(nèi)存數(shù)據(jù)庫(kù)系統(tǒng)在多大程度上能保持其性能優(yōu)于基于磁盤(pán)的數(shù)據(jù)庫(kù)管理系統(tǒng)?對(duì)于后面這些涉及永久存儲(chǔ)器 (內(nèi)存數(shù)據(jù)庫(kù)系統(tǒng)的事務(wù)日志存儲(chǔ),以及在采用磁盤(pán)上的數(shù)據(jù)庫(kù)管理系統(tǒng)情況下的整個(gè)數(shù)據(jù)庫(kù))的測(cè)試,存儲(chǔ)“設(shè)備”包含了用AGIGARAM NVDIMM配置的RAM盤(pán)。下面給出了使用RAM盤(pán)而不是傳統(tǒng)硬盤(pán)或固態(tài)硬盤(pán)的理由。
測(cè)試中使用的AgigA Tech公司NVDIMM是設(shè)計(jì)用于Intel的Romley和Grantley平臺(tái)(采用Sandy Brdige、Ivy Bridge、Haswell和Broadwell處理器架構(gòu))的。McObject在Intel Oak Creek Canyon參考主板中使用了4GB AGIGARAM DDR3-1600 NVDIMM,以及Intel奔騰雙核CPU 1407 @ 2.8 GHz處理器和8GB的金士頓普通DDR3-1333 DRAM,運(yùn)行的是Debian Linux 2.6.32.5操作系統(tǒng)。
評(píng)論