1.引言
近年來,大數據已經成為學術界和工業界普遍關注的一個熱點問題。維基百科中將“大數據”定義為無法在一定時間內用常規軟件工具對其內容進行抓取、管理和處理的數據集合。目前一般認為大數據具有4V特征,即Volume,Variety,Value,Velocity。Volume特征是指大數據的規模巨大,通常是PB甚至ZB級別。在2011年,就產生了1.8ZB(也就是1.8萬億GB)的大數據,著名咨詢公司IDC發布的報告中稱全球產生的數據將在2020年達到40 ZB。Variety特征是指數據類型繁多。大數據超越了以事務為代表的結構性數據的概念,涉及了以網頁為代表的半結構化數據以及形式多樣的非結構化數據,如文本、音頻、視頻等,也涉及了物流、交通、醫療、農業、金融、工業等多樣化的信息源。Value特征是指大數據的高價值信息密度低。以視頻為例,連續不間斷監控過程中,可能有用的數據僅有一兩秒。Velocity特征是指大數據要求很高的處理速度。大數據的處理通常具有時效性,必須把握好對數據流的掌控應用,從而才能最大化地挖掘利用大數據所潛藏的價值。
大數據的4V特征對現有的數據管理技術提出了許多新的挑戰。從存儲的角度看,大數據管理面臨的主要問題可歸納為如下幾個方面:
(1)大數據存儲架構的挑戰:磁盤讀寫性能差,與主存的速度差距正在逐漸增大,使得傳統的主存-磁盤存儲架構越來越無法適應大數據管理的要求。
(2)大數據管理算法的挑戰:隨著新型存儲介質越來越多地被運用于大規模分布式存儲中,大規模分布式數據庫中傳統的持久化策略、索引結構、查詢執行、查詢優化、恢復策略等均是基于磁盤存儲設計的,新型存儲介質具有完全不同于磁盤的物理特性,因此無法發揮新型存儲的優勢。
(3)大數據管理的能耗挑戰:能耗在現有大型數據管理系統(通常是數據中心)中的費用比例逐年升高(目前大約占總能耗的16%左右),給企業帶來了沉重的經濟負擔。
與大數據技術同步發展的是新型存儲技術。新型存儲是相對于傳統的磁存儲介質而言的。鑒于磁盤在面臨上述挑戰時已顯得力不從心,市場上對于新型存儲器件的需求越來越強烈,國際上從2000年以來在閃存、相變存儲器等新型存儲器件的制造和產業化方面取得了重要突破,并已開始逐步在各類應用領域(如嵌人式系統、企業計算等)中使用。
但是,新型存儲技術的快速發展對于大數據管理而言帶來了哪些新的機遇和問題?引人新型存儲技術后是否能夠部分解決大數據管理中的挑戰性問題?這些問題目前在研究面向新型存儲的大數據管理中還沒有滿意的答案。基于這一背景,本文試圖對面向新型存儲的大數據管理的研究現狀做一個梳理,分析該領域中的已有進展,理清存在的新問題和新方向,從而為未來新型存儲和大數據管理的研究提供有價值的參考。
本文的后續內容安排如下:第2節介紹了新型存儲,第3節總結了面向新型存儲的大數據存儲架構現狀,第4節討論了面向新型存儲的大數據管理算法進展,第5節給出了面向新型存儲的大數據管理未來發展方向,最后是論文總結。
2.新型存儲技術
目前,主流的新型存儲設計觀點是IBM提出的存儲級主存技術SCM ( Storage Class Memo-ry)SCM同時具有內存級存取和持久存儲的特點,其主要特征為:非易失(壽命在10年左右),DRAM的高速訪問時間、價格低廉、固態無機械運動等。SCM的性能特點使其可以存在于存儲系統的不同層次上:既可以作為主存,也可以作為內存與二級存儲之間的緩存,也可以作為二級存儲器。SCM技術的候選材料有很多,如閃存(Flash Memory)、磁性存儲器MRAM(Magnetic RAM),電阻式存儲器RRAM ( Resistive RAM)和相變存儲器PCM ( Phase-Change Memory,也稱PRAM或PCRAM)等。其中閃存和PCM發展最為迅速,目前已經達到了實用化的水平,也是大數據存儲中最可能引人的新型存儲技術。
2.1 閃存
閃存是一種可以被電子化擦除和重寫的非易失性存儲設備,閃存將二進制數據存儲在雙層MOS管組成的記憶單元陣列中,MOS管中包含“浮動柵”和“控制柵”,數據位是1或者0取決于浮動柵上是否有電子,寫入0時,向柵電極和漏極施加高電壓,增加在源極和漏極之間傳導的電子能量,這樣一來,電子就會突破氧化膜絕緣體,進人浮動柵,即成功寫人。讀取數據時,向柵電極施加一定的電壓,電流大為1,電流小則為0。
固態盤SSD ( Solid State Drives)是目前閃存存儲的最主要形式,主要由閃存芯片閃存轉換層、址映射表寄存器、控制器等部件構成,其中閃存芯片用于存儲數據,閃存轉換層向操作系統提供邏輯頁的訪問接口,實現了邏輯頁和物理頁的映射,隱藏了閃存芯片上的寫前擦除、異地更新,實現擦除塊之間的磨損平衡等功能。并且使閃存設備可以處理USB, SAS, SATA命令,實質上將閃存存儲抽象為與磁盤一樣的塊設備。
目前閃存發展迅速,已在便攜式存儲設備上廣泛應用,隨著半導體技術的進步,容量也在不斷增加,價格不斷降低,閃存也越多越多地應用到大型存儲中,例如,百度已經在2009年開始就在其搜索服務器上全部使用了固態硬盤。
與磁盤介質相比,閃存具有一些特殊的物理性質:
(1)無機械延遲:閃存作為一種純電子設備,沒有機械尋道操作,隨機讀的延遲很低。
(2)讀寫不對稱:通常閃存上的隨機讀速度較快,但隨機寫速度較慢。這是因為寫人數據時,需要通過加壓的方式對存儲單元進行電子填充。
(3)異地更新:傳統磁盤采用的是原位更新機制(In-Place Update),即可以直接用新的二進制位覆蓋磁盤上舊的二進制位。但是,對閃存的寫操作不是簡單地改變某個二進制位,而是需要將所在的整個擦除塊的所有二進制位全部重置為1,即需要先執行塊擦除操作。塊擦除操作會使得系統性能顯著降低。
(4)壽命限制:閃存芯片的塊擦除次數是有限制的,超過一定擦除次數的閃存單元將不再可用。
(5)低能耗:與磁盤相比,閃存的能耗更低,每GB讀數據的能耗只有磁盤的200,寫操作能耗不足磁盤的3000。閃存的出現為建設綠色數據中心以及低能耗數據管理系統提供了有力支持。
2.2 相變存儲器PCM
相變存儲器PCM是一種非易失類型的存儲器,由硫系玻璃材質構成。由于這種材質的特質,通過施以電脈沖熱,它可以在無定形和結晶這兩種狀態之間進行切換。PCM兼具速度快、耐用、非揮發性和高密度性等多種優勢于一身,其讀寫數據和恢復數據的速度是當前應用最廣一泛的非揮發性存儲技術閃存的100倍。
自20世紀60年代開始人們就已經在研究相變存儲器,但直到2000年Intel和Ovonyx發布合作和許可協議才標志著大容量PCM研發時代的到來。2009年12月工業界推出了1Gb的PCM產品,2012年推出了8GB的PCM存儲芯片。國內的中國科學院上海微系統所近年來也研制了8MB的PCM芯片。
與磁盤以及閃存相比,PCM具有以下特性:
(1)非易失性:與閃存一樣,PCM是非易失的存儲介質。
(2)讀取速度高:和DRAM一樣,相變存儲技術以隨機訪問性能高而見長,它可直接從存儲器執行代碼。PCM的讀取延遲比閃存縮短1到2個數量級,而讀取帶寬可與DRAM媲美。
(3)寫人速度高:與DRAM一樣,PCM具有位可變性(Bit Alterability),將信息存儲在位可變性存儲器中,只需在1和0之間進行轉換,不需要獨立的擦除步驟。
(4)字節可尋址:類似于DRAM, PCM也具有字節可尋址的特性。
(5)寫壽命長:PCM寫壽命已經達到了10的8次方次,遠超過了閃存的105次。隨著技術進步,PCM的寫壽命正在接近磁盤的寫壽命(10的15次方次),一定程度上解決了閃存取代磁盤過程中因耐寫能力嚴重不足帶來的缺陷,可以保證存儲器更高的可靠性。
(6)低能耗:PCM基于微型存儲單元的相變存儲數據,沒有機械轉動裝置并具有低電壓的特性(0.2V-0.4V),同時由于相變存儲器的非易失性,保存代碼或數據也不需要刷新電流,使其成為理想的下一代綠色存儲器。
3. 基于新型存儲的大數據存儲架構
閃存、PCM等新型存儲介質的引人使得大數據存儲架構有了多種選擇。但是,由于新型存儲介質在價格、壽命等方面與傳統的磁盤相比不具優勢,因此目前主流的觀點是在大數據存儲系統中同時使用新型存儲介質以及傳統存儲介質,由此產生了多種基于新型存儲的大數據存儲架構,例如基于PCM的主存架構、基于閃存的主存擴展架構、基于多存儲介質的分層存儲架構等。
3.1 基于PCM的主存架構
由于PCM存儲密度高、容量大、耗電低,而且訪問速度接近內存,因此工業界和學術界都開展了將PCM作為主存系統的研究。PCM替代DRAM,首先必須考慮克服PCM寫次數限制,即延長PCM的壽命問題。為了解決PCM壽命的問題,目前的研究重點主要集中在減少對PCM的寫操作以及負載均衡等方面。
在文獻中,研究者提出了一種利用DRAM來減少對PCM寫操作的方法。它將PCM作為主存,同時使用一塊較小的DRAM作為PCM的緩存,并借助DRAM緩存來延遲對PCM的寫操作,從而達到減少PCM寫次數的目的。研究的實驗結果表明,這種混合存儲結構可以在使用13%左右的額外DRAM存儲代價的基礎上,有效地延長PCM的壽命。
負載均衡思想是通過增加一層地址映射,將PCM的寫均勻地分配給所有的存儲單元,以盡可能達到PCM的最大使用壽命。在文獻中,研究者提出了一種代數映射方法Start-Gap。它利用少量的寄存器來保存地址映射關系和執行地址映射關系的改變,通過定期將每一個存儲單元遷移到他相鄰的位置來實現負載均衡。文獻提出了隨機化Start-Gap算法,改進了原始算法中具有集中寫特征的存儲單元在遷移時可能帶來的不均衡寫問題。
在針對大數據存儲的集群架構中,負載均衡主要通過適合PCM的數據劃分算法來實現。文獻提出了一種針對服務器集群的PCM與DRAM混合主存架構,并基于該架構設計了一種新的數據劃分算法。該算法實現了集群的全局負載均衡以及DRAM和PCM之間的數據合理分配,使混合存儲系統表現出比純DRAM系統和純PCM系統更好的性能。
PCM作為主存系統的思想對大數據管理的性能和能耗等問題的解決都有著重要的意義。雖然大數據應用中涉及的原始數據量非常大,但真正有價值的數據量以及應用每次需要存取的數據量仍是有限的,因此我們可以利用PCM的高性能、低能耗特性,將應用需要實時存取的高價值數據存儲在PCM中,同時利用磁盤等傳統存儲介質維護大規模的原始數據。因此,將PCM引人到目前的存儲架構中構建混合存儲系統,將有望解決大數據管理中的性能與能耗問題。
3.2 基于閃存的主存擴展架構
與PCM相比,目前閃存的應用更為廣泛。高速大容量固態硬盤SSD設備的不斷出現,使得SSD在存儲架構中的地位也得以提升。在大數據管理方面,目前SSD的存儲容量還達不到大數據的PB級別存儲需求,因此近年來的主要工作集中在利用高端SSD進行主存擴展的研究上。
在文獻中,普林斯頓大學的研究人員提出了一種利用SSD進行內存擴展的主存管理系統一SSDAIIoc。SSDAIIoc在存儲體系中將SSD升到一個更高的層次,它把SSD當做一個更大、更慢的RAM而不是將它當做磁盤的緩存。通過使用SSDAIIoc,應用程序可以幾乎透明地將他們的主存擴展到幾百GB而不需要對軟件重新設計,遠遠超出了服務器上RAM容量的限制。此外,SS-DAlloc能夠提升90%的SSD的原始性能,同時將SSD的壽命提高32倍。
在文獻中,研究者以NoSQL數據庫系統Redis為基礎平臺,用SSD代替磁盤作為虛擬內存中的交換設備,擴大虛擬內存的同時幫助NoSQL數據庫減少數據讀延遲,并針對SSD隨機寫性能差的特點,設計了針對SSD的寫緩沖區優化算法和垃圾回收機制,從而提高了數據庫系統的整體性能。
考慮到當將SSD作為虛擬交換設備時,頁面交換的代價依然較大,文獻設計了一種基于DRAM與SSD的混合主存架構,將SSD作為主存,將 DRAM作為SSD的高速緩沖,以對象為單位管理資源。為了減少寫放大,將SSD組織成log結構的順序塊,并將這種混合主存結構融人Mem-cached,大幅提升了Memcached性能。
基于閃存的混合主存系統與基于PCM的主存系統在設計動機上類似—都是以性能為主要的目標。對于大數據管理而言,引人閃存(或者PCM)來部分地替代傳統內存,可以有效地擴展內存容量,減少對底層大數據的頻繁訪問,從而提高大數據系統的數據訪問性能。此外,在能耗方面,由于閃存和PCM的能耗都低于磁盤,因此也有助于降低大數據管理的能耗。
3.3 基于多存儲介質的分層存儲架構
基于不同存儲介質的分層存儲架構目前主要集中在DRAM、閃存、磁盤的混合存儲研究上。一種觀點是將閃存做為內存與磁盤之間的緩存。例如,F1ash Cache是Facebook為innoDB設計的塊緩存應用,它將閃存劃分為一個邏輯集合,基于組相聯映射的思想將磁盤上的塊數據映射到閃存中。當I/O請求到達時,Flash Cache會先在閃存中查找該數據是否已被緩存,如果有,則直接進行讀寫操作,否則訪問磁盤。將閃存作為DRAM與磁盤之間的緩存進行數據預取或者預寫,還可以充分發揮閃存讀性能好的優點,減少對磁盤的寫操作,同時減少系統能耗。另一種觀點是將閃存與磁盤一樣作為二級存儲介質,手動或者自動地將不同類別的數據分配到閃存或磁盤。由于不同的存儲分配策略以及存儲介質組合方式對于此類系統的性能有著決定性影響,因此目前主要集中在存儲分配、存儲介質用量組合等方面。
(1)在存儲分配方面,已有研究傾向于根據I/O特性和數據的冷熱程度來進行存儲分配,將讀傾向負載的數據或者熱點數據存放在SSD上,而寫傾向負載或冷數據等則存放在磁盤上。IBM在其企業級存儲設備DS8700上增加了EasyTier自動封存存儲功能,將較大的邏輯卷進行劃分,并對劃分后的子卷進行熱度檢測,如果是熱點卷,就將其遷移到SSD上,同時把SSD上的非熱點卷再遷回到磁盤。文獻中提出的HRO方法將隨機性強、熱度高的數據分配在SSD上,順序性強、熱度低的數據分配在磁盤上,并設計了數據隨機性檢測算法。文獻結合數據頁的訪問次數以及訪問熱度實現對頁面的準確分類和分配,即將讀傾向負載的熱頁面存儲到SSD上,將寫傾向負載的頁面或者冷頁面存儲到磁盤上。文獻為了增加閃存的壽命,使用數據I/O特性進行存儲分配,以減少對閃存的寫操作,以頁為單位檢測數據的I/O特性,將寫操作較多的數據放置在磁盤中,而讀操作較多的數據放置在SSD中。文獻將隨機數據和讀操作傾向較多的數據傾向于放置在SSD中,順序數據和寫操作較多的數據傾向于分配到磁盤。
分層存儲的存儲分配思想也被運用于針對大數據存儲的集群中。例如,淘寶網采用了基于SSD,SAS和SATA的分層存儲系統,并采用了兩種不同的存儲分配方法:一種是根據文件大小來定義遷移到哪種存儲介質上;另一種遷移策略按訪問的熱度來進行分配。文獻討論了在Lustre集群文件系統上的對象存儲服務器OSS(Object-based Storage Server)。該服務器是由SSD和磁盤陣列構成的混合存儲系統,其中SSD主要用來存儲較小的、訪問頻率高的對象,磁盤陣列用于存儲較大的、訪問頻率低的對象。文獻針對面向對象存儲的Lustre集群文件系統,在對象存儲結構上增加一層基于PCM新型存儲設備的高速存儲層,自動分析I/O訪問特征,預測其后續操作,主動把可能需要的對象預取到PCM高速存儲層,并且設計了預取和對象遷移算法。
此外,面向分層存儲的存儲分配方法還應用在大數據文件系統的元數據管理上。在面向大數據管理的分布式文件系統中,利用分層系統存儲分配用頻率、規模等都不允許將所有數據統一存儲于集中式的存儲設備上,因此基于分層存儲的多介質混合存儲技術將越來越受到研究者們的重視。但是,由于多種存儲介質的分層存儲存在著多種組合方式,什么樣的混合存儲策略適合大數據應用、在多介質混合存儲系統中如何有效地實現數據分配與遷移等仍有待進一步探索。
4.基于新型存儲的大數據管理算法
由于傳統的數據庫技術取得了巨大的成功,因此許多研究者從數據庫管理系統的角度研究基于新型存儲的大數據管理方法。傳統的數據庫研究集中在存儲管理、索引、查詢處理等方面,因此本節也從這些角度來總結現有的基于新型存儲的大數據管理算法。
4.1 基于新型存儲的大數據存儲管理
大數據存儲通常采用分布式存儲策略,但傳統的分布式存儲策略通常采用基于副本的方式。例如,MongoDB設計了復制集指定每個文檔的副本保存位置,Hbase基于HDFS進行副本管理并采用機架感知的方式進行副本分布。但是,已有的這些分布式存儲策略沒有考慮不同存儲介質的性能、成本以及物理特性上的差異。引人了多樣化的新型存儲介質后,需要設計新的數據分配算法,使數據分布在合適的新型存儲介質上,從而加快數據的訪問性能。
Ramcloud是針對異構多存儲系統設計的高性能分布式數據庫系統。它針對異構存儲系統的不同特性,采用了所謂的日志緩存(Buffered Log-grog)技術,將主數據放置在性能最好的存儲系統上,而將副本以及數據更新日志放置在成本較低的存儲上,既降低了成本,又保證了性能。
此外,由于Web作為大數據的主要來源之一,開展基于Web的大數據研究是當前的一個主要研究方向。Web領域中廣泛使用了NoSQL數據庫技術,但在NoSQL數據庫中引人閃存等新型存儲介質后產生了許多新的問題,例如持久化策略。
持久化策略是指將數據寫人持久存儲介質的策略。不同的持久化策略對于系統性能有著很大的影響。在現有的NoSQL數據庫系統中,Redis以AOF日志的形式把更新操作順序寫人日志結構文件,累計多次寫操作,進行集中地追加寫操作。BigTable,Cassandra和Hbase都采用了類似LSM樹結構來進行寫優化,數據首先被入數據內存緩沖區的Memstore,當Memstore達到一定闌值時,緩存數據會被刷新到磁盤,生成一個新的存儲文件持久化數據SSTable。逐步增多的SSTable文件會以滾動合并(Rolling Merge)的模式合并成更大的SSTable。LSM樹結構的好處是優化了寫操作,但在一定程度上降低了查詢性能,而且SSTable的合并也會引入較大的內存開銷。在NoSQL數據庫系統中引人閃存之后,由于閃存具有異地更新特性,往往需要設計新的持久化策略。RethinkDB是一個SSD優化的分布式No-SQL數據庫系統。它為了有效減少閃存異地更新和垃圾回收對持久化性能帶來的影響,設計了“隱形Trim”機制,優化了持久化策略,通過將閃存存儲層作為黑盒,使用基于性能、塊大小等參數的演化推理機制找到最理想的工作負載模式,最終實現系統在閃存上的讀寫性能優化。
基于新型存儲的大數據存儲管理與傳統的數據庫系統有著較大的差別。主要的一點在于大數據環境下的數據存儲通常是分布式、分層的,而傳統數據庫系統中的數據以集中存儲為主。因此,面向新型存儲的大數據存儲管理面臨著存儲介質異構性、數據分片、存儲分配等問題。雖然NoSQL在Web領域得到了廣泛應用,但能否作為大數據管理的統一平臺還有待進一步研究。
4.2 基于新型存儲的大數據索引設計
數據庫索引管理是有效組織數據、提高數據庫查詢性能的關鍵技術之一。大數據管理中的索引設計主要考慮高擴展性、高性能,能夠有效支持非主鍵查詢和多維查詢等不同類型查詢,主要索引結構有二級索引、雙層索引、按照空間目標排序的索引等。
二級索引由局部索引和全局索引構成,局部索引只負責該節點上的數據索引,全局索引則依據局部索引構建,如Efficient B-tree ,RT-CAN,QT-Chord,EMINC等;雙層索引主要適用于非鍵值列的快速查詢,索引表由原數據表中的鍵值和索引列的組合構成,如ITHBase,IHBase ,CCIndex等;按照空間目標排序的索引有MD-HBase, UQE-Index等。
目前二級索引中的局部索引均基于磁盤特性進行設計,如Efficient B-tree局部索引結構采用了B+-tree,RT-CAN局部索引結構為R-tree,EM-INC局部索引結構為KD-tree。閃存等新型存儲的特性和磁盤具有明顯差異,將基于磁盤的索引實現方法直接移植到新型存儲上會嚴重響索引性能。以閃存為例,傳統的索引更新維護往往導致頻繁的小數據量更新,這些更新操作會帶來大量的閃存擦除操作,極大地降低了索引的性能和閃存壽命。
在基于新型存儲的索引方面,目前主要的研究集中在面向閃存的索引上。閃存數據庫索引設計的目標是不僅要在閃存介質上實現索引的高查詢性能,而且還要根據閃存的物理特性減少索引更新維護帶來的性能代價(如頻繁擦除等)。目前提出的閃存索引結構大都采用了傳統的樹型結構,并以減少對閃存的隨機寫為主要目的,采用的方法往往是延遲更新或者合并更新等。這方面的研究目前比較多,例如Hash-Tree ,u-Tree ,Lazy-up-date B+-Tree,LA-Tree等。u-Tree將從根到目標節點路徑上的所有節點都放置在同一閃存塊中,通過新分配閃存塊來解決索引更新過程中產生的新路徑,從而減少了隨機寫操作。Lazy-up-date B+-Tree。首先將更新在內存中進行緩沖,對屬于相同節點的更新進行合并,然后進行組提交。Lazy-update-Tree方法存在以下兩個優點:首先是緩沖的更新可以進行批量提交,這樣可以減少在更新節點時因為尋址而帶來的讀代價;其次,更新可以進行分組,通過分組可以大大減少數據的更新次數。LA-Tree將索引樹分為一組等高度的子樹,每棵子樹組織為B+-Tree,并且對于每棵子樹采取延遲更新操作。Hash-Tree采用樹形一散列的混合設計思路,它首先使用一個散列函數將數據劃分到若干個桶中,然后對于每個桶中的數據提出了一種新的樹形索引結構一FTree進行組織。由于Hash-Tree將數據組織成了許多棵小的樹,因此發生更新時不需要更新整個索引,因此可以提高更新性能。
雖然目前在基于閃存的索引設計方面已經做了不少的工作,但仍鮮有工作針對PB級別的超大規模數據開展研究。索引的性能通常與數據量的大小成反比,因此已有的索引技術能否在大規模數據下依然保持較好的性能還有待進一步研究。此外,由于大數據應用中,數據的價值、訪問頻度有高有低,在索引設計方面也需要進行有針對性的分層設計。
4.3 基于新型存儲的大數據查詢處理
查詢處理與優化是數據庫系統的一項主要功能。I/O問題是基于磁盤的傳統數據庫查詢處理和優化的基礎和核心問題。由于新型存儲和磁盤物理特性的不同,兩者具有不同的I/O機,所以基于磁盤I/O機制設計的查詢處理和優化機制不能直接應用于基于新型存儲的大數據管理上,需要設計全新的查詢處理和優化機制。
在數據庫查詢處理中,連接操作的方法對于查詢執行的效率影響很大,特別是連接操作會產生大量的中間結果,需要寫到外部存儲,這對于閃存這樣的新型存儲介質來說代價非常昂貴,并且傳統的連接算法主要是針對磁盤特性設計的,沒有考慮新存儲介質的讀寫特性。目前提出的面向新型存儲的連接算法主要集中在閃存方面,其出發點是避免在閃存上執行大量隨機寫操作,同時盡量發揮閃存的隨機讀性能。相關的算法主要有DigestJoin算法,Sub一Join算法等。
DigestJoin算法提出了兩階段連接的方法。在第一階段僅將記錄的關鍵字和連接列讀人內存進行排序或者哈希,從而很大程度上減小連接表的大小,以此來減少連接操作的代價;在第二階段,從閃存中按照連接的結果從表中讀取投影的列輸出,這個過程就是重新載人的過程。重新載人過程的代價對整個算法性能來說很關鍵,通過使用naive的載人方法、基于頁的載人方法以及傳統的載人方法證明重新載人過程的代價計算是個NP問題。DigestJoin算法提出了一種基于圖的載人策略,用連接圖來選擇載人的頁。通過實驗發現該方法可以有效地減小連接的代價。
子連接算法Sub-Join也是一種針對閃存關系數據庫上的連接操作,通過減少對數據的讀取和連接中的隨機寫操作來提高查詢執行效率。首先將進行連接查詢的相關數據表在主鍵和連接列上進行投影,形成子表;然后在子表上進行連接操作。最終的查詢結果是根據子表連接查詢的結果再從原始表中回取獲得。Sub-Join僅從子表中讀取數據進行匹配,從而大量減少了需要讀取的數據量。同時,Sub-Join在生成子表時采取連續讀,而且在寫子表連接結果時采取順序寫的方式,有效地減少了連接過程中的隨機寫操作。
此外,在大數據環境下,查詢往往被分解成多個任務并發執行,根據資源的占用情況和節點的運行情況對任務進行有效的調度,對查詢優化有著至關重要的作用。目前針對調度的優化已經有不少工作,根據調度對象的粒度,可以把已有工作分成三個類型:查詢調度、MapReduce作業調度和MapReduce任務調度。
查詢調度的基本思想是,根據不同查詢任務的優先級、服務等級協議(SLO)等調整資源分配,保障用戶體驗。文獻設計了一種SLO感知的存儲系統,討論了SSD作為磁盤讀緩存存儲環境下的查詢動態調度方案,通過將閃存緩存層進行分區,然后根據要求的服務等級對應用進行緩存大小分配,并且根據當前緩存命中率、利用率、系統延遲等要素對緩存大小進行調整,以提高查詢調度性能。
MapReduce任務調度的基本思想在于進行MapReduce任務運行時間預測,繼而將更多的任務分配給性能高的節點,以提升查詢性能。文獻將任務負載特征和硬件異構性作為任務調度的指標,其中硬件異構性包含了CPU性能、網絡帶寬、內存、存儲系統性能等特征。隨著SSD在大數據存儲系統中的普遍應用,存儲系統異構性將日益凸顯,同時副本也可能存儲在不同的存儲介質上,這些都給MapReduce任務調度帶來了新的挑戰。
基于新型存儲的大數據查詢處理很難孤立地進行研究,因此查詢處理機制、查詢優化算法等與大數據存儲架構、索引設計、存儲管理機制等都是密切相關的。相對而言,基于新型存儲的大數據查詢處理研究的迫切程度要低于大數據存儲管理與索引設計。
5.未來發展展望
5.1 面向新型存儲的大數據層次化存儲體系
隨著閃存、PCM , SCM等新型存儲介質的出現,未來數據存儲體系中將以多介質混合存儲為主流,這與目前RAM、磁盤、磁帶共存的現象類似。在大數據應用中,將數據集中存儲是不可行的,因為巨大的數據量將導致性能低下。因此,必須建立一種新的層次化的多介質存儲體系,根據數據的不同特性(例如訪問的冷熱屬性、操作的特性等)以及不同存儲介質的特性合理地分配數據存儲位置,從而實現海量存儲、高性能以及低能耗的設計目標。這一問題涉及多個方面的內容,未來可能的研究內容包括多介質混合存儲系統與一體化管理、存儲器結構感知的數據管理技術以及大數據分布式協同存儲技術等。
(1)多介質棍合存儲系統與一體化管理:市場上的閃存、磁盤等規格形式眾多。以閃存為例,不同廠商生產的SSD產品性能差異比較大,SSD的接口協議主要有PCIe, SAS, SATA三種,磁盤分為FC HDD, SAS HDD, SATA HDD。此外,SCM技術的候選材料形式眾多,除了閃存外,還包括了憶阻器(Memristor)、磁性存儲器(MRAM) ,電阻式存儲器(ReRAM, RRAM )、相變存儲器(PCM,PRAM,PCRAM)等,在存儲密度、壽命、讀寫速率方面都有較大的差異。因此,基于不同類型和性能的存儲介質來構建多介質混合存儲系統帶來了更加復雜的問題,需要我們從理論模型和實驗驗證兩方面研究不同的混合存儲策略,并建立不同混合存儲策略下的存儲分配模型和代價模型。以RAM、閃存和磁盤混合存儲為例,可能的混合存儲策略包括:
①傳統模式,即磁盤作為二級存儲,RAM作為磁盤的緩存;
②閃存作為二級存儲,RAM作為閃存的緩存;
③閃存和磁盤都作為二級存儲,RAM作為兩者共同的緩存;
④磁盤作為二級存儲,閃存作為RAM的擴充并且與RAM共同作為磁盤的單一緩存;
⑤磁盤作為二級存儲,閃存作為介于RAM和磁盤之間的另一層獨立緩存。
(2)存儲器結構感知的數據管理技術:針對RAM,PCM、閃存、RRAM、磁盤等多類型存儲介質共存的現狀,研究適應新型存儲器結構的數據庫系統軟件基礎理論和關鍵技術。目前,Janus系統在閃存用量分配推薦上已經取得了非常好的性能,但對于更加復雜的異構存儲環境,如何實現存儲介質用量的自適應動態分配將是一個極具挑戰性的問題。另一方面,充分利用新型存儲低能耗的特點,將能耗作為存儲用量分配的指標,可以有效減少大數據管理系統的整體能耗。因此,基于能耗的異構存儲系統中存儲介質用量分配也將是未來的一個研究方向。
(3)大數據分布式協同存儲技術:大數據在整個系統中的存儲位置通常包括感知器件端、中間層、應用層等不同的位置。我們一般把感知器件端稱為“海”端,而把應用端稱為“云”端。大數據如何在海、云以及平臺層實現分布式協同存儲是大數據存儲研究中的一個重要問題。在現有研究中,無論是通過數據的I/O特性、冷熱程度進行存儲分配,還是將所有新建文件放置在閃存或PCM上,都無法滿足大多數大數據應用的需求。大數據應用數據負載具有多樣性、復雜性,如相冊、商品圖片類存儲應用,讀遠多于寫;而社區游戲類應用的特點在于好友間互動性強,用戶數據會被頻交叉訪問,也不存在明顯熱點數據。傳統的分布式數據存儲并沒有考慮不同的大數據應用數據負載特點。此外,分布式大數據協同存儲環境的數據遷移也是一個值得研究的問題。現有的基于頁、塊或文件的數據熱點識別和數據遷移算法往往不能發揮有效作用,原因主要在于現有的數據管理系統(如NoSQL數據庫系統)采用了特殊的持久化策略,如Big-Table,Hbase,Cassandra等采用的類似于LSM-Tree寫優化結構,數據以SSTable的形式存儲在存儲介質上。因此,未來的研究重點可以集中在基于新的粒度模型的熱點數據識別和數據遷移方面。
(4)高性能、可擴展的大數據存儲優化技術:傳統的數據庫系統以磁盤為基礎進行設計,其核心算法包括體系結構都是針對磁盤而優化設計的。隨著閃存、PCM等新型存儲介質的快速發展和產品化,在未來的計算機系統中,一種更為可行的方法是在系統中同時使用磁盤、閃存、SCM,RAM等存儲介質,構建一個多介質的混合存儲環境,從而發揮各種介質的特性,在性能和價格上取得較好的折衷。數據庫系統的存儲優化機理不僅要建立可以充分發揮新型存儲器件優點的數據庫系統體系結構,還要解決多介質混合存儲時的系統優化設計問題。此外,傳統的關系數據庫技術在可擴展性方面存在不足,因此在大數據混合存儲系統的實現上,還需要綜合考慮NoSQL、列存儲等技術,同時從性能角度還應考慮內存數據庫等技術。
5.2 面向新型存儲的大數據管理算法
新型存儲器件的發展要求數據庫技術充分結合存儲器件的特性,而現在的研究大都還停留在磁盤數據庫上,造成存儲與CPU之間的性能鴻溝,無法徹底解決計算機系統的性能瓶頸問題。同時,由于傳統關系數據庫在可擴展性方面存在的不足難以滿足社會網絡、生物計算等領域的應用需求,而大數據的海量、動態、多樣化等特征也對數據庫技術提出了新的挑戰,因此面向新型存儲的大數據研究迫切需要設計有效的系統層核心算法。結合傳統DBMS的發展歷史,可以預計,面向新型存儲的大數據管理算法也將集中在索引、查詢處理等方面。
(1)基于新型存儲的大數據持久化算法:No-SQL數據庫系統普遍采用的日志追加寫、類LSM-Tree寫優化雖然可以較好地適應閃存的異地更新特性,但是往往采用為SSTable建立索引的方式彌補損失的查詢性能,系統運行時索引全部都需要在內存中維護,占用了大量內存;同,如果SSTable較大,通過索引查找到SSTable之后的表順序查找,同樣會帶來延遲,因此需要內存使用效率更高且查找效率高的存儲策略。基于閃存的Key-Value存儲SILT設計了三種不同的鍵值存儲結構,降低了內存占用率、減少了閃存I/O,對基于新型存儲的大數據持久化算法有啟發性作用。未來可研究的方向包括:針對不同應用場景下高效的閃存持久化策略;提高內存使用效率和查找效率的閃存存儲策略。
(2)基于新型存儲的大數據可靠性保障方法:Ramcloud中的副本管理策略對異構性存儲副本管理有著啟發作用,結合不同存儲介質之間的不同讀寫性能、成本、能耗等,將讀寫操作集中在性能較好的新型存儲上,而副本則保存在具有很高可靠性、低成本的磁盤等存儲介質上。但是,隨之帶來了數據恢復問題,即如何從性能較差的磁盤存儲中快速恢復數據?這方面值得研究的工作包括基于多介質分層存儲的副本管理策略、基于多介質分層存儲的恢復策略等。
(3)基于新型存儲的大數據索引算法:分布式
雙層索引RT-CAN, EMINC中分別使用R-Tree,Tree提高其多維查詢效率,R-Tree,Tree等高維索引的頻繁更新在閃存上會造成寫放大和擦除,代價較大。而目前閃存數據庫中的索引研究主要集中在為數不多的樹結構,缺乏類似于R-Tree和KB-Tree的高效多維查詢索引。未來的一些發展方向包括:分布式多維索引設計、復雜數據索引(如物聯網數據、社會網絡數據等)、針對大數據復雜查詢的索引等。
(4)基于新型存儲的大數據查詢執行算法:目前,大數據查詢處理通常采用MapReduce策略。閃存數據庫領域的一些連接算法對于基于Ma-pReduce的連接算法有很大的啟發作用。MapRe-duce連接操作主要考慮中間結果產生量、網絡傳輸量,中間結果需要寫到外部存儲,這對于閃存、PCM等來說代價非常昂貴。如果能夠盡量發揮閃存的快速讀性能,消除MapReduce連接產生的大量中間結果,則有望得到高效的大數據連接算法。但是,同樣也面臨著一些問題。首先,大數據查詢執行中對內存容量要求較高,但目前內存單機容量已經較難提升,易形成性能瓶頸;此外,仍然缺乏面向閃存的高效等值連接算法,如星型連接、鏈式連接等。因此,基于新型存儲的高效多表等值連接算法、基于新型存儲的高效MapReduce連接算法等可能是未來在大數據連接算法方面的發展方向。
(5)基于新型存儲的大數據查詢優化算法:大數據環境中,隨著基于SSD的分層存儲系統的應用越來越廣泛,存儲系統的異構性越來越成為查詢優化中的關鍵要素,這要求大數據管理系統能夠根據集群中不同節點的不同存儲性能,將更多的Ma-pReduce任務放置在存儲性能更強的節點上,從而提升查詢性能。因此,基于新型存儲的大數據查詢優化算法可以集中研究考慮不同節點存儲設備的不同耐用性、I/O特性、訪存速度等因素的MapRe-duce任務調度算法。
5.3 能耗感知的大數據管理技術
能耗代價是大數據管理中的一個核心問題。傳統的數據管理技術通常以高性能為主要目標,忽略了能耗代價。隨著數據規模的快速增長,存儲和管理數據的能耗代價在數據中心的比例越來越高,因此研究能耗感知的大數據管理技術是未來大數據庫系統中必須考慮的一個重要方面。
傳統的磁盤存儲介質能耗較大,而閃存、PCM等新型存儲介質則具有相對更低的能耗代價,因此也為我們設計能耗感知的大數據存儲系統提供了新的支持。能耗感知的大數據管理技術涉及兩個層面的研究:一是DBMS的能耗有效性算法和技術,主要研究DBMS能耗測試技術、能耗有效的查詢處理機制;二是以多個數據庫節點集群為背景的能耗均衡性實現方法,主要研究如何使數據庫節點集群以及存儲設備能夠根據負載動態地切換電源狀態,以實現能耗與負載之間的匹配。這兩個方面的問題都涉及到數據庫系統架構以及存儲架構的重新設計,同時需要解決其中出現的一些新問題,具有很大的挑戰性。未來主要的研究方向包括:
(1)能耗有效的查詢優化技術:不同的查詢計劃已被證明具有不同的能耗,但目前已有研究沒有在查詢處理器中提供靈活的能耗和性能折衷的方案。因此,在查詢處理器中引人能耗代價,開展能耗有效的查詢優化技術研究將是未來的一個主要研究方向。
(2)能耗均衡的數據庫節點集群體系結構:數據庫節點集群中一般包括計算節點、存儲節點以及控制節點。計算節點用于任務處理(例如Join操作),存儲節點提供數據存儲和管理,控制節點提供協調、控制等功能。計算架構研究主要探討節點的分組、任務劃分、節點間的協同方式、狀態控制等問題。能耗均衡的主要思想是根據負載來動態切換節點的電源狀態,因此,需要研究有效的算法來決定何時切換節點電源狀態。此外,對于存儲設備的能耗均衡性控制,也需要研究根據數據訪問的頻率、本地性等特征來動態切換存儲設備電源狀態的算法。
(3)能耗均衡的集群存儲分配方法:在數據庫節點集群中,存儲設備的能耗均衡性依賴于優化的冷熱數據劃分算法以及存儲分配算法,同時還要考慮集群中存儲節點之間的數據復制策略,以保證在不同的訪問模式下存儲系統能夠使用盡可能少的設備就可以響應數據訪問請求。存儲分配和復制策略還要避免頻繁地切換設備的電源狀態。
(4)面向集群的高能效緩沖區置換算法:在閃存數據庫方面的已有研究表明,不同的緩沖區管理策略對性能和能耗有著很大的影響。但是,以往工作主要是針對單節點數據庫服務器的緩沖區管理開展的,其主要目標是提高緩沖區命中率和減少對存儲設備的。而面向集群的高能效緩沖區管理方法的目的是更好地實現存儲設備的能耗均衡性,即通過設計高能效的緩沖區管理機制,使得底層的存儲設備能夠在保證響應性能的前提下減少帶電工作的存儲設備比例,從而實現降低能耗的目標。這一問題是研究能耗均衡的數據庫節點集群中出現的新問題。
6.結束語
隨著新型存儲的快速發展和大數據時代的來臨,面向新型存儲的大數據管理將成為未來新的研究熱點。利用新型存儲的獨特優勢來解決大數據管理中的關鍵問題是這一研究方向中的核心和要點。本文簡要論述了目前大數據管理面臨的問題,重點討論了新型存儲的特點;在此基礎上對結合新型存儲的大數據管理現狀進行了梳理,總結了目前在大數據存儲架構和管理算法方面的進展;最后給出了面向新型存儲的大數據管理未來發展方向,以期對此領域未來的研究提供有價值的參考。
核心關注:拓步ERP系統平臺是覆蓋了眾多的業務領域、行業應用,蘊涵了豐富的ERP管理思想,集成了ERP軟件業務管理理念,功能涉及供應鏈、成本、制造、CRM、HR等眾多業務領域的管理,全面涵蓋了企業關注ERP管理系統的核心領域,是眾多中小企業信息化建設首選的ERP管理軟件信賴品牌。
轉載請注明出處:拓步ERP資訊網http://m.nttd-wave.com.cn/
本文網址:http://m.nttd-wave.com.cn/html/support/11121511623.html