楊理臣 帥向華 董翔 劉欽 李繼賡
1)青海省地震局,西寧 810001 2)中國(guó)地震臺(tái)網(wǎng)中心,北京 100045 3)山東省地震局,濟(jì)南 250014
“十五”期間,中國(guó)地震局建設(shè)完成了地震應(yīng)急指揮系統(tǒng),地震應(yīng)急基礎(chǔ)數(shù)據(jù)庫(kù)是整個(gè)地震應(yīng)急指揮系統(tǒng)進(jìn)行抗震救災(zāi)指揮決策的基礎(chǔ)和核心(謝江麗等,2019)。地震應(yīng)急基礎(chǔ)數(shù)據(jù)庫(kù)包括基礎(chǔ)地理數(shù)據(jù)、社會(huì)經(jīng)濟(jì)統(tǒng)計(jì)數(shù)據(jù)、地震基礎(chǔ)數(shù)據(jù)、災(zāi)害影響背景、救災(zāi)力量?jī)?chǔ)備、震時(shí)應(yīng)急聯(lián)絡(luò)和地震應(yīng)急預(yù)案等方面內(nèi)容。該數(shù)據(jù)庫(kù)以GIS空間數(shù)據(jù)庫(kù)的形式存儲(chǔ),在地震應(yīng)急中發(fā)揮著積極的作用(梁芳,2013)。隨著應(yīng)急指揮技術(shù)系統(tǒng)的發(fā)展,數(shù)據(jù)庫(kù)的內(nèi)容也越來(lái)越豐富和精細(xì),為了將龐雜的數(shù)據(jù)更好的展示和利用,需要利用數(shù)據(jù)挖掘、數(shù)據(jù)可視化等手段,通過(guò)文字、圖片、表格等形式歸納總結(jié)出某一區(qū)域的特征,從而更好地服務(wù)于地震應(yīng)急和地震風(fēng)險(xiǎn)評(píng)估領(lǐng)域。
為了快速掌握某一地區(qū)的基本情況,需要通過(guò)地震應(yīng)急基礎(chǔ)數(shù)據(jù)庫(kù)綜合整理全國(guó)各區(qū)縣的基本情況,關(guān)注地區(qū)的行政區(qū)劃、人口經(jīng)濟(jì)、建筑特征、地震地質(zhì)等方面的內(nèi)容,提煉出能夠服務(wù)于地震領(lǐng)域的地方情況概要信息,形成地震風(fēng)險(xiǎn)評(píng)估綜合地情數(shù)據(jù)庫(kù)。該綜合地情數(shù)據(jù)庫(kù)目前采用Word形式進(jìn)行存儲(chǔ)與展示,以區(qū)縣為單位,將所有內(nèi)容放在一個(gè)Word文件中,制作完成后打印備用。在使用過(guò)程中存在內(nèi)容檢索不便、展示方式單一等問(wèn)題,并且零散的文件限制了信息共享和及時(shí)更新,易造成版本混亂,難以向全國(guó)范圍提供服務(wù)。為了更好地存儲(chǔ)與使用綜合地情數(shù)據(jù),亟需開(kāi)發(fā)一套查詢(xún)展示系統(tǒng),提供統(tǒng)一平臺(tái)面向全國(guó)范圍服務(wù)。
近年來(lái),非結(jié)構(gòu)化數(shù)據(jù)的大量產(chǎn)生帶動(dòng)了大數(shù)據(jù)解決方案逐漸走向成熟,信息社會(huì)智能化程度得到大幅提高(雷德龍等,2014)。一些大型互聯(lián)網(wǎng)公司對(duì)非結(jié)構(gòu)化數(shù)據(jù)庫(kù)MongoDB的使用已經(jīng)頗為普遍。優(yōu)酷每天的日均訪問(wèn)量超過(guò)6億,僅在日常運(yùn)營(yíng)數(shù)據(jù)方面,每天產(chǎn)生的日志總量均在TB級(jí)別,其在線評(píng)論數(shù)據(jù)存儲(chǔ)大部分已遷移到了MongoDB數(shù)據(jù)庫(kù); 阿里開(kāi)放云平臺(tái)、天貓商城、新浪微博、亞馬遜等知名互聯(lián)網(wǎng)公司都在很多業(yè)務(wù)場(chǎng)景應(yīng)用了MongoDB數(shù)據(jù)庫(kù)管理技術(shù)。隨著大數(shù)據(jù)可視化、機(jī)器學(xué)習(xí)等技術(shù)的不斷發(fā)展,如何更好地將新技術(shù)、新成果以及交叉學(xué)科的研究進(jìn)展應(yīng)用于地震信息服務(wù)工作,也是當(dāng)前地震信息化建設(shè)工作中亟須解決的問(wèn)題(鄭通彥等,2021)。針對(duì)現(xiàn)有綜合地情數(shù)據(jù)庫(kù)的不足,本文基于MongoDB數(shù)據(jù)庫(kù),以數(shù)據(jù)靈活的存儲(chǔ)和共享為目標(biāo),使用Web Service技術(shù)實(shí)現(xiàn)綜合地情數(shù)據(jù)的錄入、更新與查詢(xún)。同時(shí)提供版本管理功能,保證了數(shù)據(jù)的現(xiàn)勢(shì)性和接口服務(wù)的一致性。采用前后端分離的開(kāi)發(fā)方式,通過(guò)地震風(fēng)險(xiǎn)評(píng)估平臺(tái)將數(shù)據(jù)可視化展示,并且可以根據(jù)各省份需求,利用同一個(gè)后臺(tái)服務(wù)開(kāi)發(fā)多種前端應(yīng)用,為數(shù)據(jù)共享和應(yīng)用提供更加多維、全面的數(shù)據(jù)服務(wù)形式。
圖1 綜合地情數(shù)據(jù)庫(kù)樣式
地震風(fēng)險(xiǎn)評(píng)估綜合地情數(shù)據(jù)庫(kù)是對(duì)地震應(yīng)急基礎(chǔ)數(shù)據(jù)庫(kù)的內(nèi)容進(jìn)行挖掘與總結(jié)所形成的能夠綜合描述各區(qū)縣基本概況的文檔資料。其內(nèi)容由地理位置、行政區(qū)劃、地形地貌、水系水庫(kù)、氣候特征、人口民族、社會(huì)經(jīng)濟(jì)、建筑特征、交通概況、學(xué)校教育、醫(yī)療衛(wèi)生、重要目標(biāo)、避難場(chǎng)所、地質(zhì)構(gòu)造、歷史地震、區(qū)域特征、地方聯(lián)絡(luò)等條目組成,每個(gè)細(xì)分條目下包含文字形式的描述及圖片、表格信息,如圖1、表1 所示。
表1 綜合地情數(shù)據(jù)庫(kù)條目?jī)?nèi)容
該數(shù)據(jù)庫(kù)可服務(wù)于地震監(jiān)測(cè)、地震應(yīng)急、震害防御等領(lǐng)域,可以快速了解、查詢(xún)基本情況和地域特點(diǎn),有利于地震風(fēng)險(xiǎn)評(píng)估等工作的開(kāi)展,其數(shù)據(jù)的復(fù)雜性有以下兩個(gè)特點(diǎn):
(1)數(shù)據(jù)條目的復(fù)雜性
由于全國(guó)不同地區(qū)對(duì)監(jiān)測(cè)數(shù)據(jù)應(yīng)用、震后應(yīng)急需求、服務(wù)對(duì)象需求等差異,各省份往往自行決定文檔條目?jī)?nèi)容的詳細(xì)程度,或在滿足規(guī)范、規(guī)定的基礎(chǔ)上,根據(jù)實(shí)際需求自行增加新的條目?jī)?nèi)容,以便適應(yīng)各省份的實(shí)際特點(diǎn)。如在青海等地區(qū),寺院的分布較為重要,人口分布往往圍繞寺院呈聚集狀態(tài),可以將寺院分布情況單獨(dú)列出作為一個(gè)地域的特征。
(2)條目?jī)?nèi)容的靈活性
數(shù)據(jù)條目可由文字、圖片和表格三部分組成,表現(xiàn)形式多樣。例如,一些省份將重要目標(biāo)數(shù)據(jù)直接以文字、圖片描述重要目標(biāo)的數(shù)量和分布情況,一些省份則更細(xì)化地將重點(diǎn)目標(biāo)以表格形式詳細(xì)列出; 而對(duì)于地方聯(lián)絡(luò)數(shù)據(jù),一些省份以文字形式直接給出,一些省份則直接以表格形式列出。
由此可見(jiàn),形式為半結(jié)構(gòu)化的數(shù)據(jù)需要在選擇數(shù)據(jù)庫(kù)時(shí)充分考慮其無(wú)固定模式和可橫向擴(kuò)展的特性。傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)的存儲(chǔ)模式難以橫向擴(kuò)展,限制了數(shù)據(jù)模式的靈活存儲(chǔ),也造成了較高的維護(hù)成本。因此,引入非關(guān)系型數(shù)據(jù)庫(kù)MongoDB將徹底解決傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)在這類(lèi)非結(jié)構(gòu)性數(shù)據(jù)的存儲(chǔ)和處理上存在的問(wèn)題,實(shí)現(xiàn)文檔存儲(chǔ)的靈活自主。
在文件組織上,綜合地情數(shù)據(jù)庫(kù)共匯集了全國(guó)共3100余個(gè)區(qū)縣的信息,其文件名命名規(guī)范為“區(qū)劃代碼(區(qū)劃名稱(chēng)).更新日期.docx”的形式,如“500101(重慶市萬(wàn)州區(qū)).201712.docx”。各省份提交數(shù)據(jù)時(shí),以更新日期來(lái)區(qū)分地情數(shù)據(jù)的版本新舊。隨著時(shí)間的推移,其文件數(shù)量也不斷增加。因此,在查看文件時(shí)需要從各種版本的區(qū)縣地情文件中找到最新的信息,使用數(shù)據(jù)庫(kù)進(jìn)行設(shè)計(jì)時(shí)也要考慮到歸檔單元管理的方便和版本檢索的需求。
基于綜合地情文檔結(jié)構(gòu)類(lèi)型的特點(diǎn),本平臺(tái)使用MongoDB數(shù)據(jù)庫(kù)存儲(chǔ)文檔,利用WebService技術(shù)對(duì)數(shù)據(jù)提供統(tǒng)一管理的服務(wù)接口,系統(tǒng)架構(gòu)如圖2所示。
圖2 系統(tǒng)總體架構(gòu)圖
Web Service技術(shù)提供的云服務(wù)作為整個(gè)系統(tǒng)的核心,提供了綜合地情數(shù)據(jù)管理所需要的所有接口服務(wù),利用該平臺(tái)接口可使得任何客戶(hù)端具有綜合地情文檔管理的能力。其流程如下:首先,通過(guò)身份認(rèn)證接口獲得接口授權(quán); 然后,利用文檔更新接口將綜合地情文檔上傳到服務(wù)端,服務(wù)端自動(dòng)解析文件內(nèi)容,驗(yàn)證文檔內(nèi)容的合法性,并根據(jù)文件命名規(guī)則比對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù),進(jìn)行文檔錄入或更新操作; 最后,利用文檔查詢(xún)接口從數(shù)據(jù)庫(kù)中檢索所需要的信息,并根據(jù)數(shù)據(jù)內(nèi)容和系統(tǒng)需求進(jìn)行個(gè)性化的可視化展示。
傳統(tǒng)的結(jié)構(gòu)化數(shù)據(jù)庫(kù)系統(tǒng)通常事先規(guī)定好數(shù)據(jù)庫(kù)表格的結(jié)構(gòu),一旦涉及到數(shù)據(jù)庫(kù)表格結(jié)構(gòu)的調(diào)整便會(huì)帶來(lái)大量的工作。全國(guó)現(xiàn)有2800余個(gè)區(qū)縣級(jí)行政區(qū)劃單位進(jìn)行綜合地情文檔類(lèi)型的存儲(chǔ),未來(lái)擴(kuò)充到鄉(xiāng)鎮(zhèn)級(jí)地情數(shù)據(jù)庫(kù)后,行政區(qū)劃單位數(shù)量將增加到4萬(wàn)個(gè)以上。地情文檔每個(gè)條目均可包含文字、圖片和表格等動(dòng)態(tài)內(nèi)容,且各省份可根據(jù)實(shí)際需求擴(kuò)展本地化特色的條目?jī)?nèi)容。不同的地區(qū)各有特色,內(nèi)容需求具有個(gè)性化,采用傳統(tǒng)的結(jié)構(gòu)化數(shù)據(jù)庫(kù)存儲(chǔ)方式,修改一個(gè)字段將影響全國(guó)所有地區(qū)的數(shù)據(jù)存儲(chǔ),難以實(shí)現(xiàn)各省份內(nèi)容的靈活調(diào)整。因此,實(shí)現(xiàn)一個(gè)模式自由的存儲(chǔ)框架具有重要意義。
MongoDB是一個(gè)基于分布式文件存儲(chǔ)的非結(jié)構(gòu)化數(shù)據(jù)庫(kù),旨在為Web應(yīng)用提供可擴(kuò)展的高性能數(shù)據(jù)存儲(chǔ)解決方案,是功能最豐富、最貼近關(guān)系數(shù)據(jù)庫(kù)的非關(guān)系型數(shù)據(jù)庫(kù)。它是一種面向集合、模式自由、文檔型的數(shù)據(jù)庫(kù)(Banker,2011),采用類(lèi)似JSON的格式存儲(chǔ)文檔型的數(shù)據(jù),該類(lèi)型的數(shù)據(jù)存儲(chǔ)不需要固定的模式,無(wú)需多余操作就能實(shí)現(xiàn)橫向擴(kuò)展,可用來(lái)存儲(chǔ)較為復(fù)雜的數(shù)據(jù)類(lèi)型。
圖3展示了利用MongoDB存儲(chǔ)的文檔結(jié)構(gòu)圖,對(duì)于每一個(gè)區(qū)縣的綜合地情文檔,采用一個(gè)獨(dú)立的Collection存儲(chǔ),其名稱(chēng)為行政區(qū)劃ID,而其條目則由基本信息(Info)和拆分為多個(gè)條目文檔的Section表示,基本信息存儲(chǔ)了該區(qū)縣的名稱(chēng)、編碼和最近更新版本等信息,每個(gè)Section由必須的字段條目標(biāo)題(title)、文字內(nèi)容(content)和版本(version)以及可選內(nèi)容如圖件(figures)和表格(tables)組成。
圖3 MongoDB存儲(chǔ)的文檔結(jié)構(gòu)圖
在存儲(chǔ)時(shí),由于采用JSON的“鍵值對(duì)”模式,將傳統(tǒng)數(shù)據(jù)表中“行”的概念轉(zhuǎn)換成了更加靈活的文檔模型(Banker,2012)。數(shù)據(jù)庫(kù)可擴(kuò)展性方面,當(dāng)新增一類(lèi)數(shù)據(jù)時(shí)只需相應(yīng)地新增加一個(gè)新的條目文檔即可,這種更自由的存儲(chǔ)模式,相較于傳統(tǒng)的結(jié)構(gòu)化數(shù)據(jù)庫(kù)系統(tǒng)管理,大大降低了維護(hù)成本。
該存儲(chǔ)方式有如下3個(gè)優(yōu)點(diǎn):①每個(gè)區(qū)縣的Collection對(duì)應(yīng)一個(gè)獨(dú)立的綜合地情文檔,方便查詢(xún)與管理; ②不固定每個(gè)文檔的條目?jī)?nèi)容,可根據(jù)實(shí)際情況靈活地?cái)U(kuò)展條目?jī)?nèi)容,滿足各省級(jí)用戶(hù)的個(gè)性化存儲(chǔ)需求; ③每個(gè)條目具有版本標(biāo)識(shí),可針對(duì)某一條目進(jìn)行單獨(dú)的更新與版本管理。
傳統(tǒng)的開(kāi)發(fā)模式將前后端代碼耦合在一起,造成代碼的可讀性及可擴(kuò)展性不高,給后期的維護(hù)和擴(kuò)展增加了難度,增加了維護(hù)和擴(kuò)展成本(王建等,2020),難以滿足不同用戶(hù)對(duì)于綜合地情數(shù)據(jù)庫(kù)的個(gè)性化使用需求。前后端分離的核心思想是前端調(diào)用后端的RESTFUL API接口,通過(guò)JSON數(shù)據(jù)進(jìn)行交互,從而將數(shù)據(jù)整合到前端的業(yè)務(wù)流程和數(shù)據(jù)展示中(孫一笑等,2019)。這種架構(gòu)已經(jīng)成為互聯(lián)網(wǎng)項(xiàng)目開(kāi)發(fā)的業(yè)界標(biāo)準(zhǔn)使用方式,本文通過(guò) Nginx+WSGI 的方式有效地對(duì)前端和后端的開(kāi)發(fā)進(jìn)行解耦,所有業(yè)務(wù)邏輯處理均通過(guò)后端實(shí)現(xiàn),確保系統(tǒng)的安全性(王亞楠等,2014; 肖明魁,2015)。并且,前后端分離會(huì)為以后的大型分布式架構(gòu)、彈性計(jì)算架構(gòu)、微服務(wù)架構(gòu)、多端化服務(wù)(各種客戶(hù)端,如瀏覽器、桌面、安卓、IOS等)夯實(shí)基礎(chǔ)。
通過(guò)開(kāi)發(fā)一個(gè)綜合地情數(shù)據(jù)服務(wù)作為獨(dú)立的后臺(tái),實(shí)現(xiàn)綜合地情文檔在數(shù)據(jù)庫(kù)中的存儲(chǔ)、查詢(xún)等具體業(yè)務(wù)功能,使得各省份都可以利用統(tǒng)一平臺(tái)維護(hù)自己的數(shù)據(jù),也可以查詢(xún)到全國(guó)其他省份的信息,實(shí)現(xiàn)了地情信息的集中共享與屬地維護(hù)。利用模式自由存儲(chǔ)技術(shù)可以將地情數(shù)據(jù)條目和內(nèi)容在滿足規(guī)范的基礎(chǔ)上,根據(jù)自身的需要進(jìn)行自由擴(kuò)展,滿足各省份的個(gè)性化需求,方便數(shù)據(jù)直接整合進(jìn)各自的業(yè)務(wù)系統(tǒng)當(dāng)中。由于后臺(tái)REST服務(wù)無(wú)狀態(tài)具有客戶(hù)端無(wú)關(guān)性的特性,從而可以實(shí)現(xiàn)一個(gè)數(shù)據(jù)服務(wù)后臺(tái)、多種前端的應(yīng)用模式。如利用本文的后臺(tái)系統(tǒng)服務(wù),山東將其整合到地震應(yīng)急信息發(fā)布系統(tǒng)中,實(shí)現(xiàn)震后基本信息的微信發(fā)布; 青海將其整合進(jìn)地震應(yīng)急快速評(píng)估系統(tǒng)中,實(shí)現(xiàn)了在地震發(fā)生時(shí)自動(dòng)查詢(xún)震中所在區(qū)域的基礎(chǔ)信息,并在震情基本情況的報(bào)告中自動(dòng)產(chǎn)出。
另外,利用MongoDB的分布式集群數(shù)據(jù)庫(kù)部署可以動(dòng)態(tài)擴(kuò)展節(jié)點(diǎn),避免單點(diǎn)故障給數(shù)據(jù)帶來(lái)丟失的可能性,提高數(shù)據(jù)的訪問(wèn)量的性能(申德榮等,2013)。利用前后端分離方式實(shí)現(xiàn)的后臺(tái)服務(wù)無(wú)狀態(tài)的接口處理方式,搭載負(fù)載均衡配置,使后臺(tái)服務(wù)可以根據(jù)訪問(wèn)量的提高,通過(guò)擴(kuò)展服務(wù)節(jié)點(diǎn)的方式提高服務(wù)能力,基于云平臺(tái)進(jìn)行地震風(fēng)險(xiǎn)評(píng)估綜合地情數(shù)據(jù)服務(wù),滿足系統(tǒng)高并發(fā)的需求。
綜上,前后端分離的方式有如下3個(gè)優(yōu)點(diǎn):①實(shí)現(xiàn)全國(guó)統(tǒng)一的數(shù)據(jù)服務(wù)接口和平臺(tái),免除了數(shù)據(jù)分發(fā)和版本管理的混亂局面; ②一個(gè)后臺(tái)、多種前端的開(kāi)發(fā)方式,方便各省份將數(shù)據(jù)直接整合進(jìn)各自的系統(tǒng)當(dāng)中,提高數(shù)據(jù)的利用率; ③通過(guò)云端部署,使得服務(wù)具有高并發(fā)能力,滿足多應(yīng)用同時(shí)訪問(wèn)的壓力需求。
本文使用Python語(yǔ)言,利用Falcon框架構(gòu)建基于綜合地情數(shù)據(jù)庫(kù)的Web Service系統(tǒng)。Falcon是一個(gè)簡(jiǎn)約的WSGI庫(kù),用于構(gòu)建快速的Web API和應(yīng)用程序后端。在構(gòu)建HTTP API時(shí),其他框架會(huì)帶來(lái)大量依賴(lài)和不必要的數(shù)據(jù)抽象模型,而Falcon具有HTTP和REST架構(gòu)風(fēng)格簡(jiǎn)潔設(shè)計(jì)的優(yōu)點(diǎn),可以用于快速構(gòu)建后臺(tái)接口框架。
表2 后臺(tái)重要接口實(shí)現(xiàn)
實(shí)現(xiàn)的接口如表2 所示。其中接口1提供用戶(hù)身份驗(yàn)證功能,驗(yàn)證通過(guò)后給出token,通過(guò)驗(yàn)證token的有效性,從而驗(yàn)證接口2~4的調(diào)用權(quán)限。接口2為通過(guò)GET方法列出當(dāng)前數(shù)據(jù)庫(kù)中所有的綜合地情文檔列表。接口3通過(guò)POST方法上傳一個(gè)Word形式的綜合地情文檔,系統(tǒng)可自動(dòng)根據(jù)文檔接口分析出文檔包含的各個(gè)條目,將更新日期作為版本號(hào)存儲(chǔ)到數(shù)據(jù)庫(kù)中。接口4通過(guò)GET方法查詢(xún)某一區(qū)縣的綜合地情文檔內(nèi)容,可通過(guò)傳入Section參數(shù)調(diào)取某個(gè)單一條目?jī)?nèi)容,也可通過(guò)傳入version查詢(xún)指定版本的數(shù)據(jù)。如果不指定version參數(shù),接口自動(dòng)返回最新的條目版本。
接口3和接口4為整個(gè)系統(tǒng)的核心功能,分別承擔(dān)了綜合地情數(shù)據(jù)上傳和查詢(xún)的關(guān)鍵業(yè)務(wù)邏輯。采用該接口可以方便地對(duì)MongoDB中的綜合地情數(shù)據(jù)庫(kù)進(jìn)行文檔的存儲(chǔ)和修正,同時(shí),系統(tǒng)設(shè)計(jì)的接口可供后續(xù)系統(tǒng)繼續(xù)發(fā)開(kāi)應(yīng)用(de Villemereuil,2012)。
3.1.1 身份驗(yàn)證接口
由于后臺(tái)服務(wù)需要在全國(guó)地震系統(tǒng)中進(jìn)行應(yīng)用,為了確保接口調(diào)用符合權(quán)限,防止非法訪問(wèn)或修改資源,需要根據(jù)用戶(hù)身份換取資源訪問(wèn)的令牌,并使用令牌執(zhí)行后續(xù)的接口調(diào)用操作。通過(guò)令牌攜帶的信息包括用戶(hù)身份標(biāo)識(shí)、時(shí)間戳和簽名等內(nèi)容。采用令牌方式的優(yōu)點(diǎn)為服務(wù)端無(wú)狀態(tài)化,可適配分布式的后臺(tái)服務(wù)系統(tǒng),并支持移動(dòng)端設(shè)備的安全和可跨域訪問(wèn),其身份驗(yàn)證流程為:
(1)前端系統(tǒng)使用用戶(hù)名和密碼請(qǐng)求驗(yàn)證;
(2)后臺(tái)服務(wù)收到請(qǐng)求后,驗(yàn)證用戶(hù)身份,并簽發(fā)token發(fā)給前端;
(3)前端系統(tǒng)收到token后,即可攜帶token向后臺(tái)服務(wù)請(qǐng)求資源;
(4)后臺(tái)服務(wù)收到請(qǐng)求后,驗(yàn)證token的有效性,識(shí)別調(diào)用接口的用戶(hù)身份,并根據(jù)用戶(hù)身份判斷其操作權(quán)限,驗(yàn)證通過(guò)后,即可返回請(qǐng)求數(shù)據(jù)(圖4)。
圖4 token身份驗(yàn)證流程
3.1.2 綜合地情文檔上傳接口
各省級(jí)用戶(hù)可以通過(guò)綜合地情文檔上傳接口維護(hù)各自的地情文檔數(shù)據(jù),服務(wù)接受Word格式的綜合地情文檔。系統(tǒng)通過(guò)文件名解析文檔的區(qū)劃代碼、區(qū)劃名稱(chēng)和版本信息,利用docx模塊解析文件的具體內(nèi)容,通過(guò)分析文檔中各條目?jī)?nèi)容解析出該條目所包含的文字、圖片和表格等信息,并在通過(guò)內(nèi)容校驗(yàn)后將文檔內(nèi)容入庫(kù)。流程如圖5所示。
圖5 文檔解析流程
3.1.3 綜合地情文檔查詢(xún)接口
用戶(hù)可通過(guò)查詢(xún)接口獲取文檔的內(nèi)容列表,并通過(guò)傳入?yún)^(qū)劃代碼查詢(xún)指定的文檔,系統(tǒng)默認(rèn)會(huì)返回最新版本的內(nèi)容,也可通過(guò)傳入條目信息和內(nèi)容信息查詢(xún)指定條目的文字、圖片或表格信息。在系統(tǒng)開(kāi)發(fā)應(yīng)用時(shí),可以在前端結(jié)合GIS形式的全國(guó)區(qū)劃數(shù)據(jù),通過(guò)空間查詢(xún)、屬性查詢(xún)等可視化檢索方式,獲取查詢(xún)區(qū)域的區(qū)劃代碼,將區(qū)劃代碼傳入后臺(tái),實(shí)現(xiàn)便捷、GIS可視化的數(shù)據(jù)檢索和展示。
前后端分離架構(gòu)實(shí)現(xiàn)了一個(gè)后臺(tái)、多種前端,并使前端可以提供多種應(yīng)用。圖6為目前已建成的地震風(fēng)險(xiǎn)評(píng)估展示平臺(tái)。
通過(guò)后臺(tái)接口的調(diào)用對(duì)原有固定的Word形式的綜合地情文檔進(jìn)行拆解,針對(duì)不同部分的內(nèi)容進(jìn)行更為直觀的展示。將傳統(tǒng)形式單一的文件查詢(xún)方式轉(zhuǎn)變?yōu)橥ㄟ^(guò)接口進(jìn)行有針對(duì)性的查詢(xún)方式,并可將文檔中的表格內(nèi)容變成柱狀圖、折線圖和環(huán)狀圖等更直觀形象的方式,可以通過(guò)交互的方式更直觀地查詢(xún)和了解當(dāng)?shù)氐木唧w情況。
圖6 地震風(fēng)險(xiǎn)評(píng)估展示平臺(tái)界面
此外,該系統(tǒng)還可查詢(xún)某一條目的原始信息,將原有的文字、圖片和表格還原集中展示,方便全面了解這一地區(qū)的詳細(xì)數(shù)據(jù),如圖7所示。
圖7 綜合地情條目?jī)?nèi)容展示界面
該系統(tǒng)部署于中國(guó)地震臺(tái)網(wǎng)中心云平臺(tái)。云計(jì)算平臺(tái)通過(guò)虛擬化等技術(shù),根據(jù)上層應(yīng)用達(dá)到資源共享、快速滿足業(yè)務(wù)等需求,可以有效節(jié)約資源、提高用戶(hù)服務(wù)質(zhì)量(郭凱等,2020)。其中,MongoDB采用共用服務(wù)平臺(tái)提供的數(shù)據(jù)庫(kù)存儲(chǔ)服務(wù),后臺(tái)接口使用云平臺(tái)提供的uWSGI和負(fù)載均衡服務(wù),前端展示平臺(tái)使用虛擬主機(jī)服務(wù)。通過(guò)云平臺(tái)的服務(wù)能力,使系統(tǒng)具有彈性伸縮、資源共享的特點(diǎn),從而提高系統(tǒng)的資源利用率和服務(wù)的可靠性。
由于綜合地情數(shù)據(jù)內(nèi)容形式表達(dá)的復(fù)雜性和文檔條目的靈活伸縮性,使其內(nèi)容查詢(xún)和應(yīng)用服務(wù)成為亟需解決的問(wèn)題。本文充分利用了MongoDB的非結(jié)構(gòu)化文檔存儲(chǔ)的優(yōu)點(diǎn),提出了適用于動(dòng)態(tài)條目的地震風(fēng)險(xiǎn)評(píng)估展示平臺(tái)的總體設(shè)計(jì)、關(guān)鍵技術(shù)和功能實(shí)現(xiàn),利用前后端分離技術(shù),最大化地提高了綜合地情數(shù)據(jù)庫(kù)的服務(wù)能力,利用統(tǒng)一后臺(tái)服務(wù)可將數(shù)據(jù)集成到多種應(yīng)用,滿足數(shù)據(jù)利用和展示的多樣化需求。由于目前系統(tǒng)服務(wù)資源是以虛擬主機(jī)為單位進(jìn)行分配,在分配資源上存在一定的浪費(fèi),為了更好地提高系統(tǒng)利用率和發(fā)揮云平臺(tái)的效能,下一步可使用容器技術(shù)進(jìn)行升級(jí)部署,提高云平臺(tái)資源的利用率。