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