付乾
(山西潞安煤基清潔能源有限責(zé)任公司 山西省長(zhǎng)治市 046000)
以先進(jìn)的信息技術(shù)為支撐,我國(guó)已經(jīng)進(jìn)入到了物聯(lián)網(wǎng)時(shí)代,為社會(huì)生產(chǎn)以及人們的日常生活帶來(lái)了很大的便利。而物聯(lián)網(wǎng)快速發(fā)展背景下,對(duì)于大量乃至海量數(shù)據(jù)的存儲(chǔ)和管理變得非常重要,在實(shí)現(xiàn)信息共享的同時(shí),也可以促進(jìn)信息利用率的提高?;诖耍嚓P(guān)技術(shù)人員應(yīng)該進(jìn)一步加大對(duì)于物聯(lián)網(wǎng)大數(shù)據(jù)存儲(chǔ)與管理技術(shù)的研究工作,將技術(shù)所具備的優(yōu)勢(shì)最大限度的發(fā)揮出來(lái)。
物聯(lián)網(wǎng)是以“物”作為數(shù)據(jù)來(lái)源的網(wǎng)絡(luò),以快速發(fā)展的傳感器技術(shù)和網(wǎng)絡(luò)技術(shù)為支撐。物聯(lián)網(wǎng)的出現(xiàn),為社會(huì)發(fā)展創(chuàng)造出更多便利,而在物聯(lián)網(wǎng)發(fā)展中,數(shù)據(jù)存儲(chǔ)與管理技術(shù)是核心內(nèi)容。新時(shí)期,伴隨著大數(shù)據(jù)、云計(jì)算等信息技術(shù)的發(fā)展,物聯(lián)網(wǎng)的規(guī)模不斷擴(kuò)大,也使得原本的“大”數(shù)據(jù)量及“快”數(shù)據(jù)傳輸必須重新進(jìn)行定義[1]。例如,數(shù)年前,每秒數(shù)萬(wàn)條的數(shù)據(jù)信息記錄會(huì)被稱為高速吞吐,而現(xiàn)如今,這樣的數(shù)據(jù)記錄速率甚至?xí)徽J(rèn)為太慢。借助不同類型的傳感器,可以對(duì)物理對(duì)象的相關(guān)信息進(jìn)行采集,在搭配相應(yīng)信息傳輸渠道的情況下,傳感器采集到的數(shù)據(jù)信息會(huì)被傳遞到數(shù)據(jù)中心,而物聯(lián)網(wǎng)大數(shù)據(jù)的發(fā)展,對(duì)數(shù)據(jù)存儲(chǔ)與管理技術(shù)提出了許多新的要求,產(chǎn)生的影響不容忽視。物聯(lián)網(wǎng)大數(shù)據(jù)存儲(chǔ)與管理技術(shù)在很多領(lǐng)域都已經(jīng)得到了廣泛應(yīng)用,如氣象分析、智慧城市建設(shè)、環(huán)境監(jiān)測(cè)等,不過(guò)伴隨著數(shù)據(jù)量的增大,現(xiàn)有的數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)管理技術(shù)逐漸難以滿足數(shù)據(jù)信息存儲(chǔ)和管理的現(xiàn)實(shí)需求,暴露出很多問(wèn)題,如信息處理速度緩慢等,需要技術(shù)人員及時(shí)做好技術(shù)創(chuàng)新。
從技術(shù)人員的角度,在設(shè)計(jì)分布式文件系統(tǒng)的過(guò)程中,需要充分考慮系統(tǒng)本身的可靠性及可擴(kuò)展性,借助“客戶機(jī)/服務(wù)器”模式來(lái)對(duì)系統(tǒng)的性能進(jìn)行優(yōu)化,條件允許的情況下,應(yīng)該積極引入先進(jìn)的技術(shù)手段來(lái)拓展系統(tǒng)功能。通常來(lái)講,如果沒(méi)有特殊要求,在分布式文件系統(tǒng)中,會(huì)使用HaD HDFS 來(lái)對(duì)數(shù)據(jù)信息進(jìn)行存儲(chǔ),其不僅能夠提高數(shù)據(jù)傳輸和數(shù)據(jù)檢索的效率,也可以切實(shí)保障數(shù)據(jù)安全。另外,HDFS 本身在流數(shù)據(jù)讀寫[2]、大數(shù)據(jù)集和跨平臺(tái)兼容性等方面有著比較明顯的優(yōu)勢(shì),當(dāng)然,其缺陷同樣存在,即無(wú)法很好的適應(yīng)低延遲數(shù)據(jù)訪問(wèn)的需求,小文件存儲(chǔ)數(shù)量少,也無(wú)法對(duì)文件進(jìn)行相應(yīng)的修改,給后續(xù)工作的實(shí)施帶來(lái)了很大不便。
分布式數(shù)據(jù)庫(kù)主要指HBase,數(shù)據(jù)庫(kù)本身的可靠性高,性能優(yōu)越,具備可伸縮性,可以被用于非結(jié)構(gòu)化數(shù)據(jù)和半結(jié)構(gòu)計(jì)劃數(shù)據(jù)的存儲(chǔ)工作,而且能夠?yàn)楦鞣N類型接口的訪問(wèn)提供支持,從技術(shù)人員的角度,在選擇數(shù)據(jù)庫(kù)訪問(wèn)模式時(shí),應(yīng)該結(jié)合實(shí)際應(yīng)用需求進(jìn)行考慮,使得訪問(wèn)模式的優(yōu)勢(shì)能夠得到有效發(fā)揮。對(duì)比傳統(tǒng)的關(guān)系數(shù)據(jù)庫(kù),HBase 數(shù)據(jù)庫(kù)的結(jié)構(gòu)更加簡(jiǎn)單,數(shù)據(jù)存儲(chǔ)環(huán)節(jié)會(huì)將數(shù)據(jù)轉(zhuǎn)化為字符串,能夠最大限度的保障信息安全。從用戶的角度,如果想要快速可靠的進(jìn)行數(shù)據(jù)存儲(chǔ),需要合理的轉(zhuǎn)換數(shù)據(jù)格式,確保結(jié)構(gòu)化數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù)可以被轉(zhuǎn)化成對(duì)應(yīng)的字符串,這樣能夠?yàn)閿?shù)據(jù)存儲(chǔ)提供便利[3]。不僅如此,HBase 還具備許多豐富的功能,如數(shù)據(jù)維護(hù)、數(shù)據(jù)索引、數(shù)據(jù)可伸縮等,在對(duì)物聯(lián)網(wǎng)大數(shù)據(jù)存儲(chǔ)與管理技術(shù)進(jìn)行研究和應(yīng)用的過(guò)程中,需要將分布式數(shù)據(jù)庫(kù)技術(shù)的優(yōu)勢(shì)充分發(fā)揮出來(lái),保證數(shù)據(jù)存儲(chǔ)的效果。
在云計(jì)算中,云數(shù)據(jù)庫(kù)扮演著相當(dāng)重要的角色,能夠?qū)崿F(xiàn)數(shù)據(jù)庫(kù)的部署和虛擬化,促進(jìn)數(shù)據(jù)庫(kù)數(shù)據(jù)存儲(chǔ)能力的提高,避免重復(fù)配置問(wèn)題,減少資源浪費(fèi)的同時(shí),也可以為軟件和硬件的升級(jí)提供良好支撐。云數(shù)據(jù)庫(kù)可以提供多樣化的數(shù)據(jù)庫(kù)功能,為數(shù)據(jù)的存儲(chǔ)和管理提供便利,而結(jié)合相應(yīng)的數(shù)據(jù)庫(kù)服務(wù)進(jìn)行分析,用戶都能夠借助遠(yuǎn)程方式,使用云數(shù)據(jù)庫(kù)的各種功能。對(duì)于用戶而言,云數(shù)據(jù)庫(kù)就好比是一個(gè)簡(jiǎn)單的計(jì)算機(jī)軟件,在對(duì)其進(jìn)行使用時(shí),不需要了解云數(shù)據(jù)庫(kù)的原理以及各種物理層面的細(xì)節(jié),只需要根據(jù)自己的需要選擇相應(yīng)的功能即可[4]。不僅如此,用戶也可以在云數(shù)據(jù)庫(kù)中進(jìn)行數(shù)據(jù)信息的存儲(chǔ),而這樣的數(shù)據(jù)存儲(chǔ),能夠利用很多網(wǎng)絡(luò)平臺(tái)實(shí)現(xiàn),如百度云平臺(tái)、360 云盤等,有助于數(shù)據(jù)存儲(chǔ)效率的提高,也可以在很大程度上保證數(shù)據(jù)信息的真實(shí)性和準(zhǔn)確性。同時(shí),在數(shù)據(jù)存儲(chǔ)和管理的過(guò)程中,借助云數(shù)據(jù)庫(kù)的信息檢索功能,用戶可以十分方便的實(shí)現(xiàn)對(duì)所需數(shù)據(jù)信息的快速檢索,節(jié)約時(shí)間和精力。云數(shù)據(jù)庫(kù)技術(shù)具備易用性和高性能的特征,能夠被廣泛的應(yīng)用在市場(chǎng)各個(gè)行業(yè)和領(lǐng)域,為社會(huì)發(fā)展和人們的生產(chǎn)生活提供便利。通過(guò)這樣的方式,工作的質(zhì)量和效率也會(huì)得到提升。
對(duì)于物聯(lián)網(wǎng)大數(shù)據(jù)存儲(chǔ)與管理而言,NoSQL 數(shù)據(jù)庫(kù)是一種至關(guān)重要的內(nèi)容,其所代表的含義是“Not Only SQL”。在該數(shù)據(jù)庫(kù)中,傳統(tǒng)的關(guān)系模型被非關(guān)系模型取代,常見(jiàn)的非關(guān)系模型包括鍵值模型、文檔模型以及列族模型等。在實(shí)際應(yīng)用中,NoSQL 數(shù)據(jù)庫(kù)的表結(jié)構(gòu)并不固定,因此很少會(huì)對(duì)該數(shù)據(jù)進(jìn)行連續(xù)操作,也不會(huì)遵循事務(wù)所具備的原子性特點(diǎn)和一致性特點(diǎn)。NoSQL 數(shù)據(jù)庫(kù)與傳統(tǒng)的數(shù)據(jù)庫(kù)相比,具備更強(qiáng)的靈活性和可擴(kuò)展性,可以將數(shù)據(jù)模型和云計(jì)算技術(shù)結(jié)合在一起,為后續(xù)的數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)分析提供良好支撐,保證數(shù)據(jù)分析的效果,確保數(shù)據(jù)能夠得到有效利用。從目前的發(fā)展情況分析,NoSQL 數(shù)據(jù)庫(kù)技術(shù)在實(shí)際應(yīng)用中存在不少缺陷,如成熟性不足、應(yīng)用范圍狹窄,風(fēng)險(xiǎn)性高等,無(wú)法對(duì)一些特殊情況進(jìn)行處理。這種情況下,技術(shù)人員需要結(jié)合數(shù)據(jù)存儲(chǔ)與管理的具體要求,對(duì)NoSQL 數(shù)據(jù)庫(kù)進(jìn)行合理選擇,以鍵值數(shù)據(jù)庫(kù)為例,包括BigTable、Dynamo 等,列族數(shù)據(jù)庫(kù)則包括了HadoopDB、GreenPLum 等,不同數(shù)據(jù)庫(kù)有著各自的特點(diǎn)和優(yōu)勢(shì),通過(guò)合理的選擇和應(yīng)用,能夠?qū)?shù)據(jù)庫(kù)的價(jià)值最大限度的發(fā)揮出來(lái)[5]。
以空間有效的高性能鍵值數(shù)據(jù)檢索系統(tǒng)為例,針對(duì)物聯(lián)網(wǎng)大數(shù)據(jù)存儲(chǔ)和管理技術(shù)在實(shí)踐中的應(yīng)用情況進(jìn)行分析。物聯(lián)網(wǎng)中,索引性能需要滿足實(shí)時(shí)性、海量性和快速性的要求,這里選擇Radix Tree 作為數(shù)據(jù)檢索系統(tǒng)的索引結(jié)構(gòu),因?yàn)镽adix Tree 具備常數(shù)級(jí)的查詢時(shí)間復(fù)雜度,對(duì)比其他索引結(jié)構(gòu)更加優(yōu)秀,不過(guò),想要令Radix Tree 適合海量數(shù)據(jù),需要規(guī)避Radix Tree 中指針的空間開(kāi)銷,同時(shí)也需要考慮面對(duì)動(dòng)態(tài)數(shù)據(jù)時(shí)如何增加指針數(shù)組的空間利用率。
3.1.1 架構(gòu)設(shè)計(jì)
考慮Radix Tree 在實(shí)際應(yīng)用中存在的各種問(wèn)題,為了保證數(shù)據(jù)存儲(chǔ)及管理的效果,本文從物聯(lián)網(wǎng)大數(shù)據(jù)環(huán)境出發(fā),提出了Radix KV 高性能鍵值數(shù)據(jù)檢索系統(tǒng),而從提高該系統(tǒng)在數(shù)據(jù)索引方面的更新速度,解決空間開(kāi)銷問(wèn)題,在系統(tǒng)中,設(shè)置了自適應(yīng)并行索引更新,對(duì)索引子樹(shù)構(gòu)建的并行度進(jìn)行合理設(shè)置,同時(shí)設(shè)計(jì)出了一種基于數(shù)組的Radix Tree 表達(dá)方式。Radix KV 的索引全部位于內(nèi)存中,鍵值數(shù)值則被放置在磁盤內(nèi),系統(tǒng)可以分為三個(gè)不同的層次,分別是HashStore、SortedStore 和IndexedStore。Radix KV 的優(yōu)勢(shì)在于,可以基于Radix Tree 檢索相應(yīng)的鍵值數(shù)據(jù),獲取相應(yīng)的查詢時(shí)間開(kāi)銷,其可以達(dá)到常數(shù)級(jí),之后,利用數(shù)據(jù)緩沖區(qū)內(nèi)的二分查找以及哈希索引,可以為最近到達(dá)的數(shù)據(jù)提供必要的實(shí)時(shí)響應(yīng)支撐,因?yàn)樵诿鎸?duì)較小的數(shù)據(jù)量時(shí),二分和哈希具備較好的查詢性能優(yōu)勢(shì)。
3.1.2 HashStore
HashStore 的日志塊功能使得其可以追加寫提供支持,在這種情況下,數(shù)據(jù)流可以通過(guò)追加寫的方式,被寫入到相應(yīng)的內(nèi)存塊中,促進(jìn)寫吞吐的提高。另外,可以通過(guò)在數(shù)據(jù)與日志塊內(nèi),構(gòu)建哈希索引的方式,實(shí)現(xiàn)HashStore 數(shù)據(jù)的高速檢索。當(dāng)HashStore 中的數(shù)據(jù)量達(dá)到一定閾值后,需要將相應(yīng)的數(shù)據(jù)寫入到SortedStore,做好數(shù)據(jù)排序,將無(wú)序鍵值數(shù)據(jù)有序排列,不過(guò)考慮數(shù)據(jù)排序的時(shí)間開(kāi)銷較大,可能引發(fā)系統(tǒng)寫瓶頸,需要對(duì)其進(jìn)行解決。
3.1.3 SortedStore
在系統(tǒng)架構(gòu)中,鍵值數(shù)據(jù)會(huì)通過(guò)數(shù)據(jù)流的形式,進(jìn)入到系統(tǒng)中,而在SortedStore 數(shù)據(jù)排序操作完成后,處理完成的數(shù)據(jù)會(huì)被發(fā)送到IndexedStore,在IndexedStore 中,構(gòu)建索引子樹(shù),并且完成合并操作。在數(shù)據(jù)子樹(shù)構(gòu)建完成后,原本存在于SortedStore 內(nèi)的所有數(shù)據(jù)會(huì)被清除,然后SortedStore 會(huì)繼續(xù)接收新的數(shù)據(jù)信息,形成循環(huán)。從這個(gè)角度分析,索引樹(shù)的構(gòu)建可以分成兩個(gè)階段,第一階段是數(shù)據(jù)的排序以及索引子樹(shù)的構(gòu)建,第二階段是對(duì)構(gòu)建好的索引子樹(shù)進(jìn)行合并,在實(shí)際應(yīng)用中,兩個(gè)階段不需要區(qū)分,可以同時(shí)進(jìn)行操作。
IndexedStore 的核心功能,是基于SortedStore 中的K 個(gè)數(shù)據(jù)塊,構(gòu)建K 棵索引子樹(shù)并且合并到索引樹(shù)中,因?yàn)楹A繑?shù)據(jù)索引會(huì)帶來(lái)較大的空間開(kāi)銷,最需要解決的問(wèn)題,是如何才能實(shí)現(xiàn)空間有效的Radix Tree,這里提出了一種空間有效的Radix Tree 表達(dá)方式——Radix Array。
3.2.1 Radix Array 設(shè)計(jì)
Radix Array 可以通過(guò)葉子節(jié)點(diǎn)數(shù)組、內(nèi)部節(jié)點(diǎn)數(shù)組和內(nèi)部節(jié)點(diǎn)索引進(jìn)行表達(dá),借助三點(diǎn)實(shí)現(xiàn)對(duì)于空間開(kāi)銷的優(yōu)化:一是在內(nèi)部節(jié)點(diǎn)索引數(shù)組中,以數(shù)組下標(biāo)距離來(lái)對(duì)內(nèi)部節(jié)點(diǎn)間的父子進(jìn)行表示,直接摒棄指針空間開(kāi)銷;二是在節(jié)點(diǎn)父子關(guān)系表達(dá)中,就Radix Array 構(gòu)建環(huán)節(jié)所有內(nèi)部節(jié)點(diǎn)中的父節(jié)點(diǎn)進(jìn)行保存,索引子樹(shù)構(gòu)建完成后,對(duì)子節(jié)點(diǎn)指針進(jìn)行補(bǔ)全,增加相應(yīng)的位圖索引,以方便對(duì)于子節(jié)點(diǎn)的快速查找,位圖索引的應(yīng)用,使得內(nèi)部節(jié)點(diǎn)不需要對(duì)空的后續(xù)子節(jié)點(diǎn)距離進(jìn)行記錄,空間利用率得到了優(yōu)化;三是可以使用中序遍歷的方式,對(duì)內(nèi)部節(jié)點(diǎn)進(jìn)行保存,確保其能夠?qū)崿F(xiàn)與葉子節(jié)點(diǎn)的一對(duì)一映射,不需要對(duì)葉子節(jié)點(diǎn)和上一層節(jié)點(diǎn)間的父子關(guān)系進(jìn)行存儲(chǔ)。
3.2.2 IndexedStore 索引更新
在SortedStore 將數(shù)據(jù)塊發(fā)送給IndexedStore 后,IndexedStore會(huì)對(duì)索引進(jìn)行更新,先針對(duì)每個(gè)數(shù)據(jù)塊建立起Radix Array,然后將其依次合并到索引樹(shù)中,而當(dāng)索引樹(shù)的數(shù)據(jù)量超出閾值后,可以將索引中的葉子節(jié)點(diǎn)數(shù)組放入磁盤內(nèi),建立起新的索引樹(shù)。具體來(lái)講,一是創(chuàng)建數(shù)組。將SortedStore 中排序的數(shù)據(jù)塊作為葉子節(jié)點(diǎn)數(shù)組,SortedStore 中實(shí)施多路快速排序的同時(shí),可以對(duì)相鄰字典序關(guān)鍵詞的LCP 進(jìn)行計(jì)算,遍歷葉子節(jié)點(diǎn)數(shù)組,結(jié)合LCP 來(lái)實(shí)現(xiàn)對(duì)比較位上不同測(cè)試內(nèi)容的快速獲取,完成內(nèi)部節(jié)點(diǎn)創(chuàng)建;二是路由數(shù)組構(gòu)建。獲取內(nèi)部節(jié)點(diǎn)后,需要將其插入Treap 中,形成內(nèi)部節(jié)點(diǎn)父子關(guān)系;三是Radix Array 合并操作。Radix Array 合并可以直接利用Treap 算法,在針對(duì)K 個(gè)大小為N/K 的Treap 進(jìn)行合并時(shí),時(shí)間復(fù)雜度為O。
總而言之,信息化時(shí)代背景下,物聯(lián)網(wǎng)大數(shù)據(jù)存儲(chǔ)與管理技術(shù)在推動(dòng)物聯(lián)網(wǎng)技術(shù)和社會(huì)發(fā)展方面有著非常積極的作用,基于此,物聯(lián)網(wǎng)大數(shù)據(jù)發(fā)展中,相關(guān)人員應(yīng)該正確認(rèn)識(shí)數(shù)據(jù)存儲(chǔ)與管理技術(shù),對(duì)技術(shù)特點(diǎn)和技術(shù)優(yōu)勢(shì)進(jìn)行明確,將技術(shù)優(yōu)勢(shì)充分發(fā)揮出來(lái),以更好的滿足人們對(duì)于數(shù)據(jù)信息的各種需求,實(shí)現(xiàn)數(shù)據(jù)的高效傳遞和高度共享,使得數(shù)據(jù)信息能夠被應(yīng)用到更多領(lǐng)域,為社會(huì)經(jīng)濟(jì)的穩(wěn)定健康發(fā)展提供可靠支撐。