姜青濤 梅丹
北京道達(dá)天際科技有限公司 北京 100089
近些年來隨著各類衛(wèi)星持續(xù)發(fā)射并投入使用,衛(wèi)星數(shù)據(jù)信源、衛(wèi)星載荷類型、衛(wèi)星數(shù)據(jù)產(chǎn)品種類不斷增加,由此產(chǎn)生了巨量的衛(wèi)星遙感數(shù)據(jù)。以高分衛(wèi)星數(shù)據(jù)為例目前高分一號(hào)、高分三號(hào)、高分四號(hào)、高分六號(hào)已形成了可見光、微波遙感、立體測繪、高光譜等載荷;分辨率范圍也覆蓋了幾十米、幾米到亞米級(jí);數(shù)據(jù)存儲(chǔ)量每日接收量的單位從GB上升到TB,各級(jí)數(shù)據(jù)產(chǎn)品年產(chǎn)生量已達(dá)PB級(jí),由此給數(shù)據(jù)管理帶來的挑戰(zhàn)日趨嚴(yán)重。如何建立一套兼顧高可靠性存儲(chǔ)和便捷地檢索,如何建立數(shù)據(jù)的全生命周期管理模式,如何方便擴(kuò)展后續(xù)衛(wèi)星信源擴(kuò)展以滿足后續(xù)衛(wèi)星數(shù)據(jù)的不斷接入,在大數(shù)據(jù)技術(shù)背景下建立一套開放式的衛(wèi)星數(shù)據(jù)全生命周期管理體系已迫在眉睫。
傳統(tǒng)衛(wèi)星數(shù)據(jù)管理模式,主要依托目錄固定分類對(duì)各類衛(wèi)星數(shù)據(jù)進(jìn)行組織,這樣的方式問題在于:第一,固化的數(shù)據(jù)目錄劃分和分類對(duì)數(shù)據(jù)多條件檢索和查詢要求不易實(shí)現(xiàn);第二,受物理存儲(chǔ)單元的限制,小碎文件的存儲(chǔ)依然占用同等存儲(chǔ)空間導(dǎo)致存儲(chǔ)空間利用率低;第三,存放在文件服務(wù)器或者NAS[1]存儲(chǔ)的數(shù)據(jù)能夠通過外部訪問致使數(shù)據(jù)安全性不高。利用Elasticsearch、FastDFS等大數(shù)據(jù)技術(shù)可解決傳統(tǒng)存儲(chǔ)和管理方式的不足。
Elasticsearch是一種分布式海量數(shù)據(jù)檢索與分析技術(shù)[2],其底層基于Lucene實(shí)現(xiàn),支持的數(shù)據(jù)高達(dá)PB級(jí)別,其倒排索引的算法效率更優(yōu)于傳統(tǒng)數(shù)據(jù)庫(如:Mysql)的B+Tree算法,能極大提高查詢檢索的效率,對(duì)于大數(shù)據(jù)量的衛(wèi)星數(shù)據(jù)的查詢能實(shí)現(xiàn)近實(shí)時(shí)性響應(yīng)速度。
在Mysql數(shù)據(jù)庫和Elasticsearch中存儲(chǔ)一千萬條記錄,做增加、刪除、修改、查詢的性能測試,其中傳統(tǒng)數(shù)據(jù)庫是針對(duì)主鍵做的增刪改查操作,測試結(jié)果如下表所示:
表1 Elasticsearch與傳統(tǒng)數(shù)據(jù)庫對(duì)比
由上表可以看出,Elasticsearch在大數(shù)據(jù)量下的增加、刪除、修改雖然不如傳統(tǒng)數(shù)據(jù)庫,但查詢性能遠(yuǎn)遠(yuǎn)優(yōu)于傳統(tǒng)數(shù)據(jù)庫,為此使用Elasticsearch作為搜索引擎會(huì)極大的提升系統(tǒng)的效率,并且減少對(duì)傳統(tǒng)數(shù)據(jù)庫的壓力。
FastDFS[3]是以C語言開發(fā)的一項(xiàng)開源輕量級(jí)分布式文件系統(tǒng),它主要功能包括:文件存儲(chǔ)、文件同步和文件訪問以及高容量和負(fù)載均衡。主要解決大數(shù)據(jù)量的存儲(chǔ)問題,能夠方便地提供在線訪問數(shù)據(jù)的功能。隨著衛(wèi)星數(shù)據(jù)的增多,對(duì)文件服務(wù)器的存儲(chǔ)空間提出很大需求,F(xiàn)astDFS能夠方便地進(jìn)行空間的擴(kuò)容,通過增加Storage的數(shù)量或增加Group的方式,并修改Traker的配置可達(dá)到文件服務(wù)器的擴(kuò)容的目的。
為了保障系統(tǒng)的安全性存儲(chǔ),F(xiàn)astDFS可以設(shè)計(jì)成為安全可靠的系統(tǒng),首先FastDFS本身通過加密將存儲(chǔ)在其中的文件名進(jìn)行加密,為了實(shí)現(xiàn)FastDFS中的文件無法通過Url的方式不安全進(jìn)行訪問,可以通過網(wǎng)關(guān)對(duì)其進(jìn)行統(tǒng)一管理,保證數(shù)據(jù)安全性。
使用FastDFS與Elasticsearch的結(jié)合思路解決了大數(shù)據(jù)下的存儲(chǔ)與檢索問題,使用Elasticsearch來存儲(chǔ)管理在FastDFS數(shù)據(jù)的索引,管理衛(wèi)星的元數(shù)據(jù)以及數(shù)據(jù)源信息,并對(duì)數(shù)據(jù)進(jìn)行分級(jí)存儲(chǔ),即使在PB級(jí)數(shù)據(jù)的存儲(chǔ)下,系統(tǒng)也能達(dá)到毫秒級(jí)別的響應(yīng)速度。
實(shí)現(xiàn)數(shù)據(jù)的全生命周期的管理,需要在數(shù)據(jù)進(jìn)行入庫前選擇數(shù)據(jù)的在線時(shí)長,一旦數(shù)據(jù)的生命周期達(dá)到設(shè)置值,系統(tǒng)將通過定時(shí)機(jī)制對(duì)該數(shù)據(jù)刪除,減少磁盤空間的占用。Elasticsearch在此期間對(duì)數(shù)據(jù)進(jìn)行全生命周期的管理,對(duì)數(shù)據(jù)進(jìn)行關(guān)鍵詞檢索、區(qū)間檢索、空間地理位置檢索以及基礎(chǔ)元數(shù)據(jù)信息檢索。而FastDFS提供存儲(chǔ)數(shù)據(jù)實(shí)體的功能,如需對(duì)檢索結(jié)果數(shù)據(jù)下載或在線瀏覽可以通過Elasticsearch中索引到數(shù)據(jù)存儲(chǔ)在磁盤中的位置。
(1)數(shù)據(jù)組織模型
將各類衛(wèi)星數(shù)據(jù)以驅(qū)動(dòng)化校驗(yàn)的方式來達(dá)到數(shù)據(jù)的標(biāo)準(zhǔn)化,校驗(yàn)完成后形成待歸檔數(shù)據(jù)。衛(wèi)星數(shù)據(jù)一般分為原始數(shù)據(jù)及產(chǎn)品數(shù)據(jù),需要根據(jù)不同的驅(qū)動(dòng)來進(jìn)行校驗(yàn)、管理。
(2)數(shù)據(jù)存儲(chǔ)模型
數(shù)據(jù)存儲(chǔ)模型基于Elasticsearch和FastDFS,使用FastDFS實(shí)現(xiàn)數(shù)據(jù)本身的存儲(chǔ),Elasticsearch存儲(chǔ)對(duì)應(yīng)數(shù)據(jù)的相關(guān)元數(shù)據(jù)信息以及數(shù)據(jù)存儲(chǔ)在FastDFS中的索引信息,實(shí)現(xiàn)存儲(chǔ)與索引分離的方式,分類存儲(chǔ)分類檢索,極大地結(jié)合衛(wèi)星數(shù)據(jù)的特點(diǎn):數(shù)據(jù)量大、元數(shù)據(jù)信息量大,不僅能存儲(chǔ)數(shù)據(jù),更能精確快速地檢索數(shù)據(jù)。
(3)數(shù)據(jù)管理模型
衛(wèi)星數(shù)據(jù)量大,類型多,這也對(duì)分類存儲(chǔ)和數(shù)據(jù)的生命周期提出要求,分類存儲(chǔ)可以通過數(shù)據(jù)驅(qū)動(dòng)的方式來提取數(shù)據(jù)的元數(shù)據(jù)信息,形成數(shù)據(jù)集的概念,生成一類數(shù)據(jù)的特有字段信息,這樣方便、清晰、明了,數(shù)據(jù)整潔是實(shí)現(xiàn)管理的重要目的;其次管理數(shù)據(jù)的生命周期也是必要的,隨著衛(wèi)星數(shù)據(jù)的日益的存儲(chǔ),會(huì)產(chǎn)生很多歷史無用的冗余數(shù)據(jù),對(duì)于無效數(shù)據(jù)的定期刪除會(huì)極大地減少磁盤空間的占用,節(jié)省寶貴的空間資源。在對(duì)數(shù)據(jù)進(jìn)行歸檔時(shí)就應(yīng)該適當(dāng)設(shè)置好數(shù)據(jù)的存活周期,到期后系統(tǒng)能自動(dòng)對(duì)此類數(shù)據(jù)進(jìn)行刪除,減少人工處理,況且在如此龐大的數(shù)據(jù)兩下,依靠人工判別數(shù)據(jù)進(jìn)行刪除本身就是一項(xiàng)不易的工作。設(shè)置數(shù)據(jù)生命周期基本流程如下:
圖1 設(shè)置數(shù)據(jù)生命周期流程圖
使用Elasticsearch與FastDFS結(jié)合的方式能夠?qū)崿F(xiàn)存儲(chǔ)與索引分離,將數(shù)據(jù)存儲(chǔ)在FastDFS中,將索引以及衛(wèi)星數(shù)據(jù)的元數(shù)據(jù)信息存儲(chǔ)在Elasticsearch中,用戶根據(jù)數(shù)據(jù)類型選擇數(shù)據(jù)驅(qū)動(dòng),后續(xù)即便是有新的衛(wèi)星數(shù)據(jù)接入,只需要根據(jù)數(shù)據(jù)類型新增驅(qū)動(dòng)即可,能夠方便實(shí)現(xiàn)數(shù)據(jù)的開放式拓展,實(shí)現(xiàn)系統(tǒng)與數(shù)據(jù)之間的快速適配。
用戶在選擇文件路徑進(jìn)行上傳時(shí),必須要選擇文件在系統(tǒng)中的存活周期,隨著系統(tǒng)的使用會(huì)產(chǎn)生很多歷史的垃圾冗余數(shù)據(jù),對(duì)此類數(shù)據(jù)會(huì)占用大量的磁盤空間,同時(shí)對(duì)Elasticsearch的檢索性能造成一定的影響,對(duì)于此類數(shù)據(jù)需要設(shè)置定期刪除策略,第一、系統(tǒng)定時(shí)隨機(jī)對(duì)數(shù)據(jù)進(jìn)行檢索,判斷如果數(shù)據(jù)的存活周期小于30天則將此類數(shù)據(jù)存儲(chǔ)在Redis中,定期對(duì)其進(jìn)行刪除;第二、系統(tǒng)在做檢索操作時(shí)對(duì)數(shù)據(jù)進(jìn)行生命周期判斷,如果在生命周期內(nèi),直接將數(shù)據(jù)以及索引刪除,不返回任何結(jié)果,否則返回查詢的數(shù)據(jù)。
系統(tǒng)實(shí)現(xiàn)時(shí)序圖如下:
圖2 系統(tǒng)時(shí)序圖
數(shù)據(jù)驅(qū)動(dòng)是為不同數(shù)據(jù)提供校驗(yàn)規(guī)范化處理的需要,衛(wèi)星數(shù)據(jù)種類繁多,格式也不盡相同甚至有些數(shù)據(jù)差別很大,為了方便各類數(shù)據(jù)的接入,提高系統(tǒng)的適配性,需要將衛(wèi)星數(shù)據(jù)以驅(qū)動(dòng)的方式進(jìn)行校驗(yàn)以及提取元數(shù)據(jù)信息,一類數(shù)據(jù)對(duì)應(yīng)一個(gè)數(shù)據(jù)驅(qū)動(dòng),數(shù)據(jù)驅(qū)動(dòng)只需要定制對(duì)一類數(shù)據(jù)進(jìn)行校驗(yàn)提取即可,所以后續(xù)衛(wèi)星的接入只需要新增數(shù)據(jù)驅(qū)動(dòng)即可。
根據(jù)數(shù)據(jù)驅(qū)動(dòng)可以校驗(yàn)數(shù)據(jù)并提取數(shù)據(jù)的元數(shù)據(jù)信息,并將提取出的元數(shù)據(jù)信息存入到Elasticsearch中,待文件上傳成功存儲(chǔ)到FastDFS中后將文件存儲(chǔ)位置一并存儲(chǔ)在Elasticsearch,不管是檢索數(shù)據(jù)信息還是對(duì)數(shù)據(jù)進(jìn)行下載查看都可以對(duì)數(shù)據(jù)進(jìn)行還原。
選擇數(shù)據(jù)的生命周期后上傳,上傳成功后返回Id信息,系統(tǒng)會(huì)根據(jù)策略進(jìn)行生命周期的管理。
查詢檢索,根據(jù)數(shù)據(jù)關(guān)鍵詞在Elasticsearch中進(jìn)行數(shù)據(jù)的查詢檢索,在大數(shù)據(jù)量下系統(tǒng)的查詢檢索能夠達(dá)到毫秒級(jí)別。
對(duì)比將數(shù)據(jù)存儲(chǔ)到磁盤進(jìn)行分目錄式的管理,采用FastDFS與Elasticsearch結(jié)合的方式,大大提升了系統(tǒng)的效率以及安全性。FastDFS的文件可以通過網(wǎng)關(guān)進(jìn)行統(tǒng)一配置,實(shí)現(xiàn)文件訪問的安全性。如下圖所示,對(duì)于傳統(tǒng)文件目錄的訪問方式的耗時(shí)相當(dāng)于系統(tǒng)設(shè)計(jì)優(yōu)化后的上千倍。
圖3 系統(tǒng)優(yōu)化前后對(duì)比圖
管理大數(shù)據(jù)量的衛(wèi)星數(shù)據(jù)需要提供安全可靠的系統(tǒng)來對(duì)數(shù)據(jù)進(jìn)行維護(hù),在提升系統(tǒng)速度的同時(shí)更應(yīng)該考慮數(shù)據(jù)的安全性,使用Elasticsearch與FastDFS的結(jié)合能夠滿足要求。首先相比于文件目錄式的管理方式,使用驅(qū)動(dòng)檢驗(yàn)管理數(shù)據(jù),精確對(duì)衛(wèi)星數(shù)據(jù)的查詢檢索的速度相比于優(yōu)化前提升了上千倍,同時(shí)避免了直接訪問文件的不安全因素。其次對(duì)數(shù)據(jù)設(shè)置在線生命周期,減少系統(tǒng)的垃圾數(shù)據(jù)冗余,節(jié)省磁盤存儲(chǔ)空間,同時(shí)隨著系統(tǒng)的使用時(shí)間越久,對(duì)此類數(shù)據(jù)的刪除能夠?qū)ο到y(tǒng)進(jìn)行優(yōu)化,因?yàn)閷?duì)無用數(shù)據(jù)的檢索也會(huì)消耗系統(tǒng)性能,減低系統(tǒng)的檢索效率。將Elasticsearch與FastDFS結(jié)合對(duì)數(shù)據(jù)進(jìn)行全生命周期管理能夠以靈活、高效、安全、穩(wěn)定的方式解決大量衛(wèi)星數(shù)據(jù)的存儲(chǔ)管理問題。