內(nèi)存處理(In-memory processing)可以提升數(shù)據(jù)挖掘與分析,以及其他動態(tài)數(shù)據(jù)處理性能。盡管如此,在使用內(nèi)存處理技術(shù)時,還需考慮數(shù)據(jù)保護(hù)、成本與性能瓶頸。 當(dāng)需要頂級的數(shù)據(jù)庫性能時,內(nèi)存處理可以提供極低的延遲。但事實上,企業(yè)會考慮使用內(nèi)存數(shù)據(jù)庫的性價比。尚無法確定投資是否能真正產(chǎn)生商業(yè)回報。
即使提升性能的需求合理,能否保障內(nèi)存中重要實時數(shù)據(jù)安全,免受損壞或丟失?這樣的內(nèi)存系統(tǒng)規(guī)模是否能夠跟得上指數(shù)級的數(shù)據(jù)增長?
廠商為解決上述問題持續(xù)努力著。他們試圖通過實踐體現(xiàn)內(nèi)存處理的性能優(yōu)勢,提高IT市場中如分析、互動決策與其他(近)實時情況下的處理性能。
內(nèi)存是最快的存儲介質(zhì)
使用內(nèi)存來提高I/O密集型應(yīng)用性能并不是新理念,它一直都存在,在內(nèi)存中處理數(shù)據(jù)的速度遠(yuǎn)比那些速寫速度慢的介質(zhì)要快(大概10至1,000倍)——包括閃存。
在計算機(jī)的初期,性能密集型產(chǎn)品已經(jīng)將內(nèi)存作為數(shù)據(jù)緩存使用。大多數(shù)數(shù)據(jù)庫都被設(shè)計為盡可能多的使用內(nèi)存。也許還有人記得,早在MS-DOS時代,需要設(shè)置RAM盤來為PC存儲臨時數(shù)據(jù),從系統(tǒng)中擠出更多速度。
現(xiàn)今的內(nèi)存處理會把這一理念發(fā)揮到極致:采用主動內(nèi)存(動態(tài)RAM)來保存當(dāng)前正在運行的數(shù)據(jù)庫代碼和活動數(shù)據(jù)結(jié)構(gòu),并且將不變的數(shù)據(jù)庫保存在內(nèi)存中。這些數(shù)據(jù)庫已經(jīng)無須再通過主板去和外部媒體進(jìn)行交互,而是優(yōu)化其駐留在內(nèi)存中處理的數(shù)據(jù)結(jié)構(gòu)。
從歷史上看,單臺服務(wù)器的內(nèi)存密度和內(nèi)存成本是兩大限制因素,但現(xiàn)今已可以擴(kuò)展應(yīng)用程序使用更大量級的內(nèi)存處理技術(shù)。這包括每臺服務(wù)器內(nèi)存體系結(jié)構(gòu),內(nèi)聯(lián)/聯(lián)機(jī)重復(fù)數(shù)據(jù)刪除與壓縮技術(shù),使用額外的CPU計算能力(相對便宜)來榨取更多數(shù)據(jù)到內(nèi)存中,而且集群和網(wǎng)格工具可以提升總體內(nèi)存的使用效率。
內(nèi)存變得更便宜、更密集?,F(xiàn)在筆記本標(biāo)配都已經(jīng)比曾經(jīng)的大型機(jī)內(nèi)存容量還要大。今天,任何人都可以用信用卡便宜的從諸如亞馬遜AWS那里買到云計算資源,它最近剛推出的R3高內(nèi)存服務(wù)器擁有244GB RAM,費用為每小時2.8美元。預(yù)算充足的企業(yè)可以考慮具有4TB內(nèi)存的HP ProLiant DL980 G7服務(wù)器,或6TB內(nèi)存的Dell R920,還可以考慮使用具有32TB內(nèi)存的Oracle M6-32。
內(nèi)存中計算不但能夠滿足傳統(tǒng)結(jié)構(gòu)化數(shù)據(jù)應(yīng)用程序的需求,也在大規(guī)模非結(jié)構(gòu)化數(shù)據(jù)處理領(lǐng)域風(fēng)靡一時。Hadoop集群可以利用商品服務(wù)器架設(shè),每個結(jié)點的內(nèi)存可高達(dá)128GB,實現(xiàn)內(nèi)存中數(shù)據(jù)實時查詢與計算。
緩存、分析與交易應(yīng)用
在傳統(tǒng)交易型數(shù)據(jù)庫中,只有熱數(shù)據(jù)記錄因性能問題需要保存在內(nèi)存中,性能更低的廉價磁盤用于提供數(shù)據(jù)存儲空間。數(shù)據(jù)庫引擎一直以來都按這樣的目的而優(yōu)化。現(xiàn)在,把整個數(shù)據(jù)庫都載入內(nèi)存已經(jīng)成為可能。范圍可以從網(wǎng)絡(luò)規(guī)模,分布式鍵值緩存存儲與分析型數(shù)據(jù)庫,到實時“運營智能”網(wǎng)絡(luò)。
大型Web應(yīng)用程序,數(shù)千并發(fā)用戶會連接到Web服務(wù)器,每次訪問網(wǎng)頁時,都會要求服務(wù)器提供穩(wěn)定持久的“會話數(shù)據(jù)”。在這種情況下,交易集中的數(shù)據(jù)庫應(yīng)用將成為很大的瓶頸??蓴U(kuò)展的數(shù)據(jù)庫產(chǎn)品,如Memcached和Redis提供了快速、內(nèi)存中緩存的鍵值類型數(shù)據(jù)。
在很多數(shù)據(jù)挖掘、采集與分析場景中,整個數(shù)據(jù)庫都會需要進(jìn)行結(jié)構(gòu)化的重復(fù)查詢,將整個數(shù)據(jù)庫運行在內(nèi)存中有利于提升性能。專為商業(yè)智能(BI)設(shè)計的縱列分析型數(shù)據(jù)庫已經(jīng)優(yōu)化了數(shù)據(jù)存儲結(jié)果,但是經(jīng)常會以某種壓縮狀態(tài)存在,不適合進(jìn)行大規(guī)模事務(wù)性操作。在快速分析的產(chǎn)品競賽中,內(nèi)存中處理這一功能正在進(jìn)化。
SAP的HANA就是業(yè)界領(lǐng)先的產(chǎn)品,橫向擴(kuò)展型內(nèi)存數(shù)據(jù)庫被設(shè)計用于承載關(guān)鍵ERP數(shù)據(jù)。其可以提供近乎實時的BI金礦,并且同樣可以用于其他數(shù)據(jù)。需要花費傳統(tǒng)數(shù)據(jù)庫數(shù)小時的報表,可以在HANA中幾秒完成。它還可以直接用于處理交易事務(wù),從而進(jìn)一步增加其效用。
其他列式分析數(shù)據(jù)庫廠商,如Teradata與HP Vertica,力爭盡可能多的使用內(nèi)存,例如壓縮在內(nèi)存緩存中的列數(shù)據(jù)。他們同樣支持因為數(shù)據(jù)量太大,考慮到性價比無法完全將所有數(shù)據(jù)放入內(nèi)存的方案。Vertica為例,提供了一種混合內(nèi)存技術(shù),可以快速將數(shù)據(jù)導(dǎo)入內(nèi)存(一般來說從硬盤中),實現(xiàn)近乎實時的磁盤與內(nèi)存數(shù)據(jù)訪問。
Oracle擁有完整的內(nèi)存處理產(chǎn)品,支持分析與快速聯(lián)機(jī)事務(wù)處理(OLTP),如高端的TimesTen以及Exadata一體機(jī),而且還針對自己傳統(tǒng)數(shù)據(jù)庫軟件也增加了內(nèi)存處理的功能。
Oracle Hybrid Columnar Compression (HCC)是個壓縮事務(wù)性數(shù)據(jù)的好例子,這樣可以確實提高分析速度。就在本雜志上線之前,Oracle剛剛發(fā)布了其內(nèi)存中處理的革新功能——Oracle 12c內(nèi)存數(shù)據(jù)庫選件,可以使用HCC模式進(jìn)行快速分析并將完整事務(wù)放入內(nèi)存中,提高OLTP速度。
而今年,微軟也進(jìn)一步加強了SQL Server功能,支持內(nèi)存中的OLTP。Hekaton項目或SQL Server 2014讓DBA可以指定單個數(shù)據(jù)表運行在內(nèi)存當(dāng)中而非傳統(tǒng)磁盤,以充分發(fā)揮其作用,并將實現(xiàn)內(nèi)存表與磁盤中表的透明交互傳輸。
內(nèi)存中的數(shù)據(jù)受保護(hù)嗎?
IT最關(guān)注的數(shù)據(jù)問題之一就是數(shù)據(jù)保護(hù)。DRAM雖然夠快,但是如果你拔出插頭,一切都完了。而且即使將其備份到持久性存儲介質(zhì),如何快速恢復(fù)?畢竟投資內(nèi)存增加實時計算競爭力的價值與宕機(jī)的時間相比,還是存在差距的。
一種常見的方法就是使用本地磁盤或固態(tài)硬盤作為本地存儲目標(biāo),記錄所有日志與最近數(shù)據(jù)更新(以防斷電,重啟等)。然而僅僅這樣是不夠的,如果服務(wù)器出現(xiàn)故障或硬盤損壞,數(shù)據(jù)可能完全丟失。
保護(hù)內(nèi)存數(shù)據(jù)的好例子如SAP
HANA,會使用HP最近發(fā)布的Data Protector與Store Once Federated Deduplication。Data Protector收集HANA數(shù)據(jù)并第三方通過管道應(yīng)用程序接口的方式作為流傳輸。最終將目標(biāo)備份到StoreOnce的全局去重存儲中。
如果出現(xiàn)任何問題,HANA可以通過Data Protector的接口,恢復(fù)本地或遠(yuǎn)程的StoreOnce目標(biāo)數(shù)據(jù)備份。
網(wǎng)格系統(tǒng)
金融行業(yè)可以說是內(nèi)存技術(shù)的忠實用戶,并且還建立了橫向擴(kuò)展的內(nèi)存網(wǎng)絡(luò)來實現(xiàn)實時的智能運營,承載大規(guī)模的快速流媒體數(shù)據(jù)。Tibco、ScaleOut Software、Pivotal還有GridGain提供的網(wǎng)格系統(tǒng)已經(jīng)超越了內(nèi)存數(shù)據(jù)庫的功能,提供更寬廣的計算平臺,數(shù)據(jù)庫運營、大數(shù)據(jù)處理和其他數(shù)據(jù)密集型任務(wù)都可以接近實時的處理。如果你正創(chuàng)建高性能的內(nèi)存應(yīng)用,那么很有可能已經(jīng)使用到了上述的解決方案。
網(wǎng)格平臺旨在確保企業(yè)數(shù)據(jù)保護(hù)、災(zāi)難恢復(fù)與高可用功能都可以內(nèi)置實現(xiàn)。以GridGain為例,可以支撐多個節(jié)點故障,具備原始數(shù)據(jù)中心復(fù)制功能,甚至還支持零停機(jī)時間的升級。
ScaleOut對達(dá)到一定規(guī)模的企業(yè)提供了免費許可,而GridGain已經(jīng)發(fā)布了開源的社區(qū)版。
你還需要注意哪些問題 在購買大內(nèi)存系統(tǒng)提升性能之前,先要深入了解你究竟需要什么樣的性能,還有目前的瓶頸在哪里。內(nèi)存依然會比傳統(tǒng)硬盤或閃存貴得多,而且還可能有其他的方法,用更少的開銷和精力來獲得你想要的性能。
如果你正使用MySQL或MongoDB數(shù)據(jù)庫,一種快速且便宜的方法就是將數(shù)據(jù)庫引擎從默認(rèn)配置調(diào)整為性能優(yōu)化配置,如使用Tokutek的“fractal”索引技術(shù)。這是一個相當(dāng)值得考慮的免費升級,不會涉及到任何基礎(chǔ)設(shè)施或應(yīng)用程序中斷。
盡管如此,內(nèi)存價格將持續(xù)降低,而服務(wù)器的內(nèi)存密度將繼續(xù)增加。大內(nèi)存配置可能很快就會成為服務(wù)器高級配置的標(biāo)準(zhǔn),還有處理器高速緩存,甚至非易失性存儲(閃存)。隨著越來越多的內(nèi)存選擇,更多數(shù)據(jù)處理將在內(nèi)存中完成。
與此同時,數(shù)據(jù)的增長遠(yuǎn)超內(nèi)存的增加,所以還是需要可將大規(guī)模數(shù)據(jù)傳輸并保存在更廉價介質(zhì)上的方法。IT的關(guān)鍵能力也是機(jī)遇之一,就是持續(xù)優(yōu)化復(fù)雜的數(shù)據(jù)化境,動態(tài)引導(dǎo)數(shù)據(jù)流并管理保存在最快介質(zhì)上的數(shù)據(jù)。
“內(nèi)存處理”不止在橫向擴(kuò)展的結(jié)構(gòu)化數(shù)據(jù)中興起,非結(jié)構(gòu)化大數(shù)據(jù)環(huán)境也在發(fā)展,同樣還加速了數(shù)據(jù)處理的本質(zhì)轉(zhuǎn)變。隨著數(shù)據(jù)變得更動態(tài),更流式,更集群也更“在線”,任務(wù)處理會被要求動態(tài)的路由到相關(guān)數(shù)據(jù),而不是簡單回到以主機(jī)為中心的計算機(jī)靜態(tài)數(shù)據(jù)。
換句話說,計算也需要像數(shù)據(jù)一樣流化,而數(shù)據(jù)是駐留在服務(wù)器上的。管理與智能優(yōu)化將成為未來的另一個大問題。