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