柯亞男
?
基于非關(guān)系型數(shù)據(jù)庫的測繪檔案管理系統(tǒng)的設(shè)計及實現(xiàn)
柯亞男
上海市測繪院,上海 200063
結(jié)合上海市測繪院《基于Web的數(shù)字測繪檔案管理系統(tǒng)》的建設(shè)實踐,著重闡述了非關(guān)系型數(shù)據(jù)庫、云技術(shù)、工作流控制、在線瀏覽等新技術(shù)在測繪檔案管理系統(tǒng)中的應(yīng)用與實現(xiàn)。
非關(guān)系型數(shù)據(jù)庫;測繪檔案;云技術(shù);工作流;Web
測繪檔案資料是國家的重要財富[1]?,F(xiàn)如今,各單位保存測繪檔案資料的意識在逐漸增強,相關(guān)部門都對此加以重視。然而,為了進一步保存以及利用測繪檔案,測繪檔案資料數(shù)字化以及管理系統(tǒng)的應(yīng)用已經(jīng)越來越必不可少。目前國內(nèi)外使用的檔案數(shù)字化的手段,以及系統(tǒng)的設(shè)計都大不相同。因此,需要結(jié)合自身需求,因地制宜,采用信息化的手段和方式,設(shè)計實現(xiàn)適合本單位的數(shù)字測繪檔案管理系統(tǒng),來提升檔案數(shù)據(jù)的利用以及單位的工作效率。本系統(tǒng)基于瀏覽器/服務(wù)器模式(B/S),采用新興的非關(guān)系型數(shù)據(jù)庫(NoSQL),很好地解決了測繪檔案數(shù)據(jù)量大、信息結(jié)構(gòu)不固定,訪問效率低、不便于擴展等問題。并且利用工作流,在線瀏覽、云儲存等新技術(shù),更好地提高了測繪檔案的管理效率。同時,通過分層開發(fā)技術(shù)以及接口的采用,建立了一套易于維護與擴展的系統(tǒng)開發(fā)架構(gòu),滿足了新系統(tǒng)日后的維護以及與其他系統(tǒng)集成的需要。本文首先簡要分析了系統(tǒng)所用到的新技術(shù),并對系統(tǒng)的整體架構(gòu),業(yè)務(wù)功能,設(shè)計及部署等方面進行了闡述。然后,對在系統(tǒng)實現(xiàn)過程中的核心技術(shù)及實現(xiàn)方法進行了重點分析。
1.1 非關(guān)系型數(shù)據(jù)庫
目前運行的大部分檔案管理系統(tǒng)采用的都是Oracle數(shù)據(jù)庫管理系統(tǒng)。Oracle數(shù)據(jù)庫為嚴(yán)格遵循三大范式的關(guān)系型數(shù)據(jù)庫,對數(shù)據(jù)表格的定義有及其嚴(yán)格的要求,其特點就是具有固定的表結(jié)構(gòu),因此擴展性極差。測繪檔案數(shù)據(jù)種類較多,各種檔案需要記錄的信息相差較大,如果只采用統(tǒng)一的定義或按類分表存儲,在著錄、查詢統(tǒng)計、信息存儲及擴展的環(huán)節(jié)中都存在比較大的問題,因此必須采用一種新的數(shù)據(jù)結(jié)構(gòu)存儲來代替關(guān)系數(shù)據(jù)庫。
非關(guān)系型數(shù)據(jù)庫(NoSQL)提出另一種理念。例如,以鍵值對存儲,其特點是結(jié)構(gòu)不固定,每一個元組可以有不一樣的字段,每個元組可以根據(jù)需要增加一些自己的鍵值對,這樣就不會局限于固定的結(jié)構(gòu),可以減少一些時間和空間的開銷。使用這種方式,用戶可以根據(jù)需要去添加自己需要的字段,這樣,為了獲取用戶的不同信息,不需要像關(guān)系型數(shù)據(jù)庫中,要對多表進行關(guān)聯(lián)查詢,僅需要根據(jù)id取出相應(yīng)的value就可以完成查詢。它適合存儲一些相對簡單的非結(jié)構(gòu)化數(shù)據(jù),例如影像照片、文本、視頻資料等。在解決量大數(shù)據(jù)、問題上效果顯著,而對于需要進行較復(fù)雜查詢的數(shù)據(jù),SQL數(shù)據(jù)庫顯得更為合適。NoSQL數(shù)據(jù)庫都是基于鍵值對的形式存儲的,根據(jù)存儲類型可以分為很多種,目前常見的有五種:文檔式(MongoDB)、列式(Hbase等)、鍵值式(Flare等)、對象式(db4o等)和XML式(BaseX)。其中MongoDB數(shù)據(jù)庫作為NoSQL數(shù)據(jù)庫系列的杰出代表,受到業(yè)界的一致追捧。[2]
MongoDB與非關(guān)系數(shù)據(jù)庫最為接近,而且支持嵌套文檔的存儲,即將文檔或者數(shù)組內(nèi)嵌,一條記錄可表示非常復(fù)雜的層次結(jié)構(gòu),這一特性特別適合檔案數(shù)據(jù)模型。[2]其分布式的存儲結(jié)構(gòu)也為系統(tǒng)分擔(dān)壓力和負(fù)載均衡提供了良好的實現(xiàn)基礎(chǔ)。[3]而且支持云計算層次的擴展,這解決了空間數(shù)據(jù)存儲、利用上的諸多問題。[4]
1.2 附件預(yù)覽
大量的測繪檔案數(shù)據(jù)以電子文件的形式存在。以往電子文檔的瀏覽都受限于文檔的格式以及客戶端文檔閱讀軟件環(huán)境的支持。而SWF格式文件可直接嵌入網(wǎng)頁中進行網(wǎng)絡(luò)傳輸供用戶在線閱讀,不需要安裝任何閱讀器,它支持多種格式的文檔轉(zhuǎn)換,并且能防止亂碼、圖片錯誤等問題。早期的SWF在線文檔預(yù)覽大多用FlashPaper。FlashPaper的工作原理就是用FlashPaper虛擬打印機將可打印文檔轉(zhuǎn)換為SWF文檔。[5]但是FlashPaper目前只支持Windows 32位系統(tǒng),不支持64位系統(tǒng)。因此本系統(tǒng)采用的是FlexPaper。FlexPaper是一款高性能、輕量級且極具表現(xiàn)能力的客戶端運行時播放器,能夠在各種主流操作系統(tǒng)、瀏覽器上使用,使得在沒有安裝閱讀器軟件的情況下瀏覽文檔成為可能。[6]而且不論對方的平臺和語言版本是什么,都可以自由的瀏覽文檔,并可以進行自由的放大,縮小和打印,翻頁等操作,對文檔的傳播非常有好處,剛好適用于本系統(tǒng)的在線文檔瀏覽,不過要先進行文檔格式轉(zhuǎn)換。
1.3 工作流
工作流管理,即工作流自定義功能。根據(jù)實際的業(yè)務(wù)工作流程,定義流程圖,以及流程中每個節(jié)點的用戶及轉(zhuǎn)移條件。[7]隨著人們的工作越來越依賴計算的在線完成,我們需要通過工作流的機制,來協(xié)調(diào)業(yè)務(wù)過程中的各個環(huán)節(jié),將工作分解為定義好的任務(wù)、角色,按照一定的規(guī)則和過程來執(zhí)行這些任務(wù)并對它們進行監(jiān)控,從而實現(xiàn)業(yè)務(wù)過程的自動化,提高工作效率以及管理效率。[8]在檔案管理工作中,從預(yù)歸檔開始、歸檔整理、檔案整理到最終歸檔入庫,都需要一個完整的工作流程,而在檔案的借閱和鑒定操作中也需要具備工作流機制,以實現(xiàn)檔案的高效控制管理。
1.4 云存儲
測繪檔案系統(tǒng)需要存儲大量的測繪檔案數(shù)據(jù),并且逐年增多。隨著現(xiàn)在云平臺的迅猛發(fā)展,越來越多的用戶選擇使用云存儲來存放自己的資料。云存儲的最大特點在于存儲,即服務(wù),用戶可以通過公有API將自己的數(shù)據(jù)上傳到云端保存,并供多人同時讀取。[9]本系統(tǒng)也嘗試了這種存儲方式來減少本地存儲空間,增加多人讀取的效率。目前已有多種云儲存的相關(guān)產(chǎn)品,包括金山云盤,360云盤,百度云盤,IBM云盤等。本系統(tǒng)采用的是金山云盤,因為金山云盤的設(shè)計更適合公司內(nèi)部的多人使用,并且有詳細的權(quán)限設(shè)計。
2.1 體系架構(gòu)
本系統(tǒng)采用面向服務(wù)(SOA)的體系結(jié)構(gòu),遵循面向切面編程(AOP)的設(shè)計理念,使系統(tǒng)各個部分相對獨立,分成包括數(shù)據(jù)層、基礎(chǔ)平臺層以及業(yè)務(wù)層等在內(nèi)的各個獨立的組件,各組件間通過調(diào)用公共的接口服務(wù)來互相協(xié)調(diào)工作,并且可以在遵循接口要求的基礎(chǔ)上進行自定義開發(fā)、配置,既提供強大的功能,又提供高度的靈活性和自主性。
2.2 數(shù)據(jù)庫設(shè)計
本系統(tǒng)采用的MongoDB數(shù)據(jù)庫,是一種非關(guān)系型的數(shù)據(jù)庫,并且支持云計算層面的擴展,其擴展性,靈活性大。本數(shù)據(jù)庫中的信息表主要包括案卷表體系、借閱表體系、權(quán)限體系以及一些其他表(類別表、庫位表、日志表等)。其中,因為MongoDB支持嵌套文檔,因此案卷表直接嵌套多個文件信息以及附件信息,呈樹狀結(jié)構(gòu),便于檢索查詢。而且每條記錄除了共有字段外,還有不同的擴展字段,靈活性大。
圖1 體系架構(gòu)
2.3 功能設(shè)計
本系統(tǒng)設(shè)計主要實現(xiàn)以下幾塊功能,包括檔案著錄管理、檔案檢索瀏覽、檔案借閱管理、檔案信息統(tǒng)計以及其他一些功能(類別管理、權(quán)限管理、日志管理)。
3.1 實現(xiàn)環(huán)境:
開發(fā)語言:JAVA;
部署系統(tǒng):linux系統(tǒng);
系統(tǒng)模式:瀏覽器/服務(wù)器模式(B/S);
瀏覽器版本:支持多種瀏覽器,包括IE(IE6以上)、chrome、火狐等。
3.2 Mongo數(shù)據(jù)庫實現(xiàn)
Java語言可以方便的操作數(shù)據(jù)庫的各種行為,包括連接數(shù)據(jù)庫、插入記錄、查詢記錄以及更新記錄,并且也可以查詢更新內(nèi)嵌文檔。
(1)連接數(shù)據(jù)庫:
(2)插入記錄:
(3)查詢記錄
(4)更新記錄
3.3 文檔在線瀏覽實現(xiàn)
在電子文件上傳后就通過后臺服務(wù)利用工具包SWFtools將PDF文件轉(zhuǎn)換成SWF文件,并在客戶端頁面使用FlexPaper組件實現(xiàn)預(yù)覽。其他格式例如Word、PPT、Excel等先利用軟件Openoffice轉(zhuǎn)換成PDF格式再實現(xiàn)在線預(yù)覽。通過設(shè)置頁面參數(shù)還可以根據(jù)用戶權(quán)限判斷只預(yù)覽文檔部分頁面還是全文預(yù)覽。
3.4 工作流實現(xiàn)
本系統(tǒng)利用時光工作流內(nèi)置了兩個工作流程:案卷著錄流程以及案卷借閱流程,為每個結(jié)點設(shè)置了相應(yīng)的參與者以及轉(zhuǎn)移條件。通過調(diào)用相應(yīng)服務(wù)來新建流程實例,運行工作項以及顯示流程圖像。
案卷著錄流程運行如下圖2所示:
圖2 工作流流程示例圖
3.5 金山云實現(xiàn)
金山云盤通過HTTP請求的方式來調(diào)用相應(yīng)服務(wù),實現(xiàn)數(shù)據(jù)的上傳、下載以及分享,支持多用戶使用。其中分享支持多種形式的分享,包括發(fā)送文件給指定用戶或者發(fā)送含密碼鏈接。分享還可以限制文檔分享時間。
3.6 結(jié)語與展望
本系統(tǒng)基本上結(jié)合了當(dāng)下最新的技術(shù),包括非結(jié)構(gòu)數(shù)據(jù)庫,云技術(shù),在線瀏覽技術(shù),工作流控制技術(shù),實現(xiàn)了數(shù)字測繪檔案管理系統(tǒng)所需要的基本功能,為測繪管理人員工作提供了很大的便利,提高了效率,使測繪檔案管理工作有條不紊地進行。測繪檔案屬于國家保密檔案,因此在后續(xù)使用中一定要多注意安全問題。
[1]解延宏.基于云計算的納稅服務(wù)平臺的研究和實現(xiàn)[D].天津:天津大學(xué),2013.
[2]Kristina C,Michael D.MongoDB 權(quán)威指南[M].北京:人民郵電出版社,2011.
[3]秦強,王晏民,黃明.基于MongoDB的海量遙感影像大數(shù)據(jù)存儲[J].北京建筑大學(xué)學(xué)報,2015(3):22.
[4]任國棟,施化吉,等.基于工作流圖的辦公自動化系統(tǒng)及其實現(xiàn)[J].計算機應(yīng)用,2002(22):13.
[5]史美林,楊光信,向勇,等.WMS:工作流管理系統(tǒng)[J].計算機學(xué)報,1999(22):12-13.
[6]薛銳思,陳建斌,劉龍.知識庫中文檔在線預(yù)覽功能的實現(xiàn)[J].計算機光盤軟件與應(yīng)用,2013(13):07-08.
[7]元小濤.基于FlashPaper的文檔在線閱讀技術(shù)探析[J].軟件導(dǎo)刊,2013(03):22-25.
[8]鄒貴.金MongoDB管理與開發(fā)實戰(zhàn)詳解[J].深入云計算,2013(06):70-71.
[9]周曦,鞠建榮,武小軍.劉廣霞基于Flex的數(shù)字測繪檔案業(yè)務(wù)管理系統(tǒng)的設(shè)計與實現(xiàn)[J].城市勘測,2010(06):08.
P208;G270.7;TP311.52
A
1009-6434(2016)05-0060-02