江 穎,鄔群勇,唐曙光,黃君毅
(1.福建省空間信息工程研究中心,福建 福州 350002;2.福州大學(xué) 空間數(shù)據(jù)挖掘與信息共享教育部重點(diǎn)實驗室,福建 福州 350002)
?
基于MongoDB的閩西客家文化數(shù)據(jù)存儲設(shè)計與分析
江穎1,鄔群勇1,唐曙光2,黃君毅2
(1.福建省空間信息工程研究中心,福建 福州 350002;2.福州大學(xué) 空間數(shù)據(jù)挖掘與信息共享教育部重點(diǎn)實驗室,福建 福州 350002)
摘要:針對客家文化數(shù)據(jù)類型多樣、結(jié)構(gòu)復(fù)雜的問題,探討并構(gòu)建客家文化數(shù)據(jù)分類體系。結(jié)合客家文化數(shù)據(jù)的分類和MongoDB數(shù)據(jù)模型,設(shè)計客家文化遺產(chǎn)數(shù)據(jù)存儲模型和客家文化基礎(chǔ)設(shè)施數(shù)據(jù)模型。探討基于MongoDB的客家文化遺產(chǎn)數(shù)據(jù)查詢和索引的構(gòu)建方法和流程。在100 MPs局域網(wǎng)內(nèi)基于C/S結(jié)構(gòu)分別構(gòu)建單機(jī)和集群測試環(huán)境,測試不同客家文化數(shù)據(jù)單機(jī)和集群的存取性能。實驗表明,基于MongoDB的客家文化數(shù)據(jù)模型能夠較好地實現(xiàn)類型多樣、結(jié)構(gòu)復(fù)雜的客家文化數(shù)據(jù)的管理,便于以增加節(jié)點(diǎn)的方式來提高存儲能力和讀寫性能。
關(guān)鍵詞:客家文化;MongoDB;數(shù)據(jù)存儲;NoSQL數(shù)據(jù)庫;分布式存儲
客家是經(jīng)過兩晉、唐宋、明末以來5次較大規(guī)模的從中原地區(qū)往南方各省以及國外遷徙形成的漢族民系。閩西客家文化是南遷的中原漢族與當(dāng)?shù)亻}越族人雜居、融合中產(chǎn)生的文化[1-2]。如何保存這些有形無形的文化遺產(chǎn)為中華民族多元文化添彩,是一個亟待解決的問題。
數(shù)字化和信息化技術(shù)的發(fā)展和成熟,為文化遺產(chǎn)的保護(hù)提供了新的技術(shù)手段和思路。三維地面激光掃描、360全景攝像、衛(wèi)星和低空遙感、GPS、數(shù)字掃描、數(shù)字錄音錄像等設(shè)備和技術(shù)的應(yīng)用,采集了大量的客家文化數(shù)據(jù)。這些數(shù)據(jù)具有類型多樣、數(shù)據(jù)格式差異大、非結(jié)構(gòu)化、數(shù)據(jù)量大等特點(diǎn),需要更靈活的數(shù)據(jù)庫技術(shù)來管理和存儲數(shù)據(jù)。
NoSQL[3-4]是基于CAP[5]和BASE[6]發(fā)展起來的新型數(shù)據(jù)庫,采用松散的、非結(jié)構(gòu)化或半結(jié)構(gòu)化的數(shù)據(jù)模型,在類型多樣、非結(jié)構(gòu)化數(shù)據(jù)管理方面提供了一種較好的解決方案。王歆[7]使用非關(guān)系型數(shù)據(jù)庫存儲海量近地天文望遠(yuǎn)鏡圖像數(shù)據(jù);范建永等[8]使用Hbase存儲矢量空間數(shù)據(jù);陳崇成等[9]探討基于NoSQL的海量空間數(shù)據(jù)云存儲策略與方法。NoSQL數(shù)據(jù)庫在非結(jié)構(gòu)化數(shù)據(jù)存儲上有其獨(dú)特的優(yōu)勢,而在對多種類型非結(jié)構(gòu)化數(shù)據(jù)統(tǒng)一管理時,需要更加靈活的存儲策略。
論文針對多種類型的客家文化數(shù)據(jù)統(tǒng)一管理與查詢,并滿足用戶的高效訪問、靈活易用的實際需求。嘗試使用NoSQL中文檔型數(shù)據(jù)庫MongoDB[10-11]存儲客家文化數(shù)據(jù)。
1閩西客家文化數(shù)據(jù)分類
本文以閩西客家文化數(shù)據(jù)為背景,在描述過程中將客家文化數(shù)據(jù)分兩大類:一類是用于展示客家文化遺產(chǎn)的客家文化遺產(chǎn)數(shù)據(jù);另一類是輔助展示客家文化遺產(chǎn)的基礎(chǔ)設(shè)施數(shù)據(jù)。
根據(jù)文化遺產(chǎn)的表現(xiàn)形式將客家文化遺產(chǎn)數(shù)據(jù)分為物質(zhì)文化遺產(chǎn)數(shù)據(jù)、非物質(zhì)文化遺產(chǎn)數(shù)據(jù)。物質(zhì)文化遺產(chǎn)數(shù)據(jù)包括了民居(土樓、圍龍屋等)、古橋梁、寺廟、祠堂、文物等有形文化遺產(chǎn)的數(shù)據(jù);非物質(zhì)文化遺產(chǎn)數(shù)據(jù)包括了歷史事件、客家民俗文化數(shù)據(jù)等無形的文化遺產(chǎn)數(shù)據(jù)。其中客家民俗文化是客家文化的精髓,囊括了極其豐富的內(nèi)容,如客家傳統(tǒng)醫(yī)藥、客家傳統(tǒng)手工藝、客家民間音樂和戲劇、客家民間文學(xué)、客家傳統(tǒng)節(jié)日、客家飲食習(xí)慣等。
客家文化基礎(chǔ)設(shè)施數(shù)據(jù)主要由一些影像圖和相關(guān)設(shè)施(交通路線、商店等)圖構(gòu)成,輔助文化遺產(chǎn)數(shù)據(jù)展示。客家文化基礎(chǔ)設(shè)施數(shù)據(jù)根據(jù)數(shù)據(jù)格式和展示方式的不同,分為柵格類型的基礎(chǔ)設(shè)施數(shù)據(jù)和矢量類型的基礎(chǔ)設(shè)施數(shù)據(jù)。柵格類型的基礎(chǔ)設(shè)施數(shù)據(jù)包括閩西衛(wèi)星影像圖、客家文化專題圖(如客家人口分布圖、客家遷徙路線圖)、龍巖地區(qū)行政區(qū)劃圖等;矢量類型的基礎(chǔ)設(shè)施數(shù)據(jù)包括景區(qū)、交通路線、商店、停車場等相關(guān)設(shè)施數(shù)據(jù)。
2基于MongoDB的客家文化遺產(chǎn)數(shù)據(jù)存儲
2.1MongoDB數(shù)據(jù)模型
MongoDB是面向文檔的開源數(shù)據(jù)庫。MongoDB模式靈活,支持面向文檔的查詢,可以在任何屬性上建立索引,包括建立空間索引和全文索引,同時其可擴(kuò)展性強(qiáng)、支持復(fù)制和故障恢復(fù)。
MongoDB的邏輯結(jié)構(gòu)與關(guān)系型數(shù)據(jù)庫相似,分為數(shù)據(jù)庫(database)、集合(collection)和文檔(document)三層。MongoDB的數(shù)據(jù)庫(database)相當(dāng)于關(guān)系型數(shù)據(jù)庫的數(shù)據(jù)庫,集合(collection)相當(dāng)于關(guān)系型數(shù)據(jù)庫的表,文檔(document)相當(dāng)于關(guān)系型數(shù)據(jù)庫的記錄。MongoDB使用類似于JSON的BSON動態(tài)存儲數(shù)據(jù),支持?jǐn)?shù)值、字符串、日期數(shù)組等多種基本類型的數(shù)據(jù),同時可以支持文檔嵌套文檔等多種復(fù)雜的存儲方式。
2.2客家文化數(shù)據(jù)存儲模型
根據(jù)以上對MongoDB的分析,MongoDB是模式自由的數(shù)據(jù)庫,同一個集合中每一條文檔都可以是不同的結(jié)構(gòu),使用MongoDB可以很容易地更改結(jié)構(gòu)。但為了提高數(shù)據(jù)庫的可操作性,在設(shè)計數(shù)據(jù)庫時同一集合一般會使用統(tǒng)一的結(jié)構(gòu)。本文結(jié)合MongoDB和客家文化數(shù)據(jù)的分類信息,構(gòu)建客家文化遺產(chǎn)數(shù)據(jù)庫和客家文化基礎(chǔ)設(shè)施數(shù)據(jù)庫。
2.2.1客家文化遺產(chǎn)數(shù)據(jù)存儲結(jié)構(gòu)
基于MongoDB的客家文化遺產(chǎn)數(shù)據(jù)庫按兩層結(jié)構(gòu)進(jìn)行存儲,分別為元數(shù)據(jù)層和具體的數(shù)據(jù)集。用戶通過元數(shù)據(jù)了解數(shù)據(jù)庫中數(shù)據(jù)集的描述信息,并根據(jù)元數(shù)據(jù)提供的數(shù)據(jù)類型進(jìn)行讀取和轉(zhuǎn)換數(shù)據(jù)格式。
1)元數(shù)據(jù),客家文化遺產(chǎn)數(shù)據(jù)元數(shù)據(jù)集中,包含客家文化遺產(chǎn)數(shù)據(jù)集的內(nèi)容描述、坐標(biāo)系描述、以及每項數(shù)據(jù)的類型和含義。
2)數(shù)據(jù)集,客家文化遺產(chǎn)數(shù)據(jù)庫中包含物質(zhì)文化遺產(chǎn)數(shù)據(jù)集和非物質(zhì)文化遺產(chǎn)數(shù)據(jù)集,如圖1所示。
物質(zhì)文化遺產(chǎn)數(shù)據(jù)集中文檔由唯一標(biāo)識符(_id)、物質(zhì)文化遺產(chǎn)名稱(name)、所屬類別(category)、介紹信息(info)、物質(zhì)文化遺產(chǎn)地址(address)、空間位置(location)、圖片(picture)、視頻(video)、音頻(voice)、三維模型(model)、360全景(360panorama)組成。其中物質(zhì)文化遺產(chǎn)名稱、類別、簡介、地址是字符串格式的,空間位置數(shù)據(jù)是GeoJSON格式的點(diǎn)要素數(shù)據(jù)。圖片分兩部分存儲,縮略圖以二進(jìn)制格式存儲在文檔中,另一部分圖片與視頻、音頻、三維模型、360全景數(shù)據(jù)一起存儲在GridFS中,文檔中只記錄相應(yīng)的字符串格式的文件名數(shù)組。GridFS是MongoDB采用的分布式存儲文件的機(jī)制。
非物質(zhì)文化遺產(chǎn)數(shù)據(jù)集文檔結(jié)構(gòu)與物質(zhì)文化遺產(chǎn)文檔結(jié)構(gòu)相似。非物質(zhì)文化遺產(chǎn)的空間位置(location)包含GeoJSON格式的點(diǎn)要素數(shù)據(jù)和面要素數(shù)據(jù),因為非物質(zhì)文化遺產(chǎn)是一項區(qū)域性的傳統(tǒng)或手工藝傳承。
2.2.2客家文化基礎(chǔ)設(shè)施數(shù)據(jù)存儲結(jié)構(gòu)
基于MongoDB的客家文化基礎(chǔ)設(shè)施數(shù)據(jù)庫,由柵格類型基礎(chǔ)設(shè)施地圖集和矢量類型基礎(chǔ)設(shè)施地圖集組成,如圖2所示。柵格類型和矢量類型的基礎(chǔ)設(shè)施地圖集中的每一個圖層存儲為一個集合。
圖1 客家文化遺產(chǎn)數(shù)據(jù)存儲結(jié)構(gòu)
圖2 客家文化基礎(chǔ)設(shè)施數(shù)據(jù)存儲結(jié)構(gòu)
柵格類型基礎(chǔ)設(shè)施地圖集存儲的是衛(wèi)星影像地圖和客家文化專題圖等柵格數(shù)據(jù)。按金字塔式劃分的地圖瓦片數(shù)據(jù)根據(jù)不同內(nèi)容存儲在不同的集合中,而集合中文檔內(nèi)容由瓦片唯一標(biāo)識符(_id)、瓦片所屬層級(level)、以及瓦片二進(jìn)制數(shù)據(jù)(mapshard)構(gòu)成。
矢量類型的基礎(chǔ)設(shè)施地圖集存儲的是景區(qū)、交通路線、商店等矢量數(shù)據(jù)。一個集合存儲一個圖層相應(yīng)的地理要素數(shù)據(jù),每個文檔由要素的唯一標(biāo)識符(_id)、屬性數(shù)據(jù)(attribute)、空間數(shù)據(jù)(geometry)。其中屬性數(shù)據(jù)根據(jù)具體數(shù)據(jù)而定,包含如名稱(name)、簡介(info)等,通過一個內(nèi)嵌文檔保存。
3基于MongoDB的客家文化遺產(chǎn)數(shù)據(jù)查詢與索引構(gòu)建
查詢是數(shù)據(jù)庫最基本的功能,而索引可以加快查詢速度。根據(jù)客家文化遺產(chǎn)數(shù)據(jù)的特點(diǎn),最常用的查詢一是通過給定客家文化遺產(chǎn)名稱進(jìn)行查詢,二是通過給定的位置或范圍進(jìn)行查詢。為了優(yōu)化查詢,在客家文化遺產(chǎn)數(shù)據(jù)集上建立2個索引:name鍵的索引、location鍵的索引。location鍵采用2dsphere索引,2dsphere是MongoDB提供的一種球面索引方式。通過索引可以實現(xiàn)對點(diǎn)、線、面幾何圖形進(jìn)行球面檢索,實現(xiàn)臨近查詢、點(diǎn)在面內(nèi)等空間查詢。
客家文化遺產(chǎn)數(shù)據(jù)查詢流程,如圖3所示,主要分為以下幾個步驟:
1)通過屬性信息對客家文化遺產(chǎn)數(shù)據(jù)進(jìn)行查詢。通過用戶輸入的名稱信息,可以根據(jù)已經(jīng)建立的name鍵索引對客家文化遺產(chǎn)數(shù)據(jù)庫進(jìn)行查詢。查詢到目標(biāo)數(shù)據(jù)則讀取數(shù)據(jù),如未查詢到目標(biāo)數(shù)據(jù),要求用戶重新輸入查詢條件。
2)通過空間關(guān)系對客家文化遺產(chǎn)數(shù)據(jù)進(jìn)行查詢。給定要查詢的數(shù)據(jù)類別后選擇臨近查詢或者范圍查詢,數(shù)據(jù)類別可以是物質(zhì)文化遺產(chǎn)數(shù)據(jù)中的民居、古橋梁等,也可以是非物質(zhì)文化遺產(chǎn)文化民俗,或者是復(fù)合類別。臨近查詢或者范圍查詢得到目標(biāo)數(shù)據(jù)后讀取數(shù)據(jù),結(jié)束流程。
圖3 客家文化遺產(chǎn)數(shù)據(jù)查詢流程
4試驗與結(jié)果分析
4.1試驗環(huán)境及數(shù)據(jù)
在100 MPs局域網(wǎng)內(nèi)基于C/S結(jié)構(gòu)分別構(gòu)建MongoDB數(shù)據(jù)庫集群和單機(jī)測試環(huán)境。數(shù)據(jù)庫集群上每臺計算機(jī)分別部署一個MongoDB分片節(jié)點(diǎn)(Shard)、一個配置服務(wù)器(Config Server)、一個路由器(Router)。計算機(jī)配置如下:客戶機(jī) CPU為AMD A8-4500M,內(nèi)存為8GB,操作系統(tǒng)為Windows7,數(shù)據(jù)庫集群由三臺CPU為E5300,內(nèi)存2GB,操作系統(tǒng)Ubuntu12.04計算機(jī)組成。單機(jī)的讀寫測試由組成集群的其中一臺計算機(jī)完成。實驗數(shù)據(jù)由三部分組成:一是由客家文化遺產(chǎn)名稱、類別、簡介、地址、空間位置數(shù)據(jù)和縮略圖組成客家文化遺產(chǎn)數(shù)據(jù);二是客家文化遺產(chǎn)的圖片、視頻、音頻、三維模型、360全景數(shù)據(jù);三是龍巖地區(qū)地圖數(shù)據(jù)。
4.2客家文化數(shù)據(jù)入庫
本文根據(jù)客家文化數(shù)據(jù)庫設(shè)計,測試不同類型客家文化數(shù)據(jù)寫入效率,測試結(jié)果如下:由客家文化遺產(chǎn)名稱、類別、簡介、地址、空間位置數(shù)據(jù)和縮略圖組成的大小約為10 KB。寫入100萬條數(shù)據(jù)單機(jī)和集群所用時間分別為2 068 s,1 212 s。
客家文化遺產(chǎn)的圖片、視頻、音頻、三維模型、360全景等數(shù)據(jù)存儲在GridFS中。這些數(shù)據(jù)大小并不一致,每個文化遺產(chǎn)描述過程中可能會包含其中一項或者多項(圖片1 Mb-10 Mb、視頻100 Mb-2 Gb、音頻5 Mb-50 Mb、三維模型50 Mb-200 Mb、360全景5 Mb-20 Mb)。集群和單機(jī)向GridFS中導(dǎo)入單個客家文化遺產(chǎn)文件,時間相差不大,如表1所示。
按照客家文化基礎(chǔ)設(shè)施數(shù)據(jù)庫設(shè)計的柵格類型基礎(chǔ)設(shè)施數(shù)據(jù)存儲結(jié)構(gòu),導(dǎo)入龍巖市由Google Maps切圖方案切得的12到16級瓦片地圖。切片為10-20 KB的jpg格式圖片,12到16級數(shù)據(jù)大小分別為6.6 MB、45.3 MB、76 MB、230 MB、846 MB。各層級切片地圖數(shù)據(jù)的集群導(dǎo)入時間約為單機(jī)導(dǎo)入時間的一半,如表2所示。
表1 不同類型客家文化遺產(chǎn)數(shù)據(jù)導(dǎo)入時間
表2 柵格類型基礎(chǔ)設(shè)施數(shù)據(jù)導(dǎo)入時間
圖4 并發(fā)訪問測試
4.3客家文化數(shù)據(jù)查詢試驗
根據(jù)客家文化遺產(chǎn)的類別和名稱對數(shù)據(jù)庫中100萬條不同的客家文化遺產(chǎn)數(shù)據(jù)進(jìn)行查詢測試。設(shè)計每個并發(fā)對客家文化遺產(chǎn)數(shù)據(jù)庫中2 000條不同的數(shù)據(jù)進(jìn)行查詢,并在測試前對數(shù)據(jù)進(jìn)行預(yù)熱,使數(shù)據(jù)最大程度讀入內(nèi)存。測試結(jié)果如圖4所示,圖中橫軸為并發(fā)數(shù),縱軸為每秒總共查詢條數(shù)。在40并發(fā)前單機(jī)每秒查詢條數(shù)高于集群,40并發(fā)后集群的每秒查詢條數(shù)繼續(xù)提高,而單機(jī)不再增加。集群每秒查詢條數(shù)會有起伏,因為查詢的數(shù)據(jù)不是絕對平均地存儲在三臺計算機(jī)中。在90并發(fā)后單機(jī)每秒查詢數(shù)量急劇下降,是由于查詢的數(shù)據(jù)量已經(jīng)超出單臺計算機(jī)內(nèi)存大小。
由以上實驗可知,基于MongoDB的客家文化數(shù)據(jù)模型能夠較好地實現(xiàn)類型多樣、結(jié)構(gòu)復(fù)雜的客家文化數(shù)據(jù)的管理,并容易通過增加節(jié)點(diǎn)的方式來提高數(shù)據(jù)庫存儲能力和讀寫性能。
5結(jié)束語
本文利用MongoDB靈活的數(shù)據(jù)存儲方式,對各種不同類型的客家文化數(shù)據(jù)進(jìn)行研究,設(shè)計不同類型客家文化數(shù)據(jù)的存儲模型以及構(gòu)建了查詢索引方法和流程。最后用實驗驗證了這些存儲模型的有效性,并測試在不同環(huán)境下的存取效率,為文化遺產(chǎn)數(shù)據(jù)高效管理提供解決思路。下一步工作是建立閩西客家文化目錄服務(wù)系統(tǒng),實現(xiàn)各種類型閩西客家文化數(shù)據(jù)的統(tǒng)一展示。
參考文獻(xiàn):
[1]羅香林.客家源流考[M].北京:中國華僑出版公司,1989:13-51.
[2]林曉平.客家文化特質(zhì)探析[J].西南民族大學(xué)學(xué)報(人文社科版),2005,26(12):72-75.
[3]申德榮,于戈,王習(xí)特,等.支持大數(shù)據(jù)管理的NoSQL系統(tǒng)研究綜述[J].軟件學(xué)報,2013,24(8):1786-1803.
[4]杜晉博,楊君君.基于NoSQL和云存儲的非結(jié)構(gòu)化存儲服務(wù)[J].武漢大學(xué)學(xué)報(理學(xué)版),2012,58(10):99-101.
[5]GILBERT S,LYNCH N.Brewer’s conjecture and the feasibility of consistent,available,partition-tolerant web services[J].ACM SIGACT News,2002,33(2):51-59.
[6]PRITCHETT D.Base:An ACID alternative[J].Queue,2008,6(3):48-55.
[7]王歆.基于非關(guān)系型數(shù)據(jù)庫系統(tǒng)的近地天體望遠(yuǎn)鏡圖像數(shù)據(jù)庫的設(shè)計與實現(xiàn)[J].天文學(xué)報,2013,54(4):382-391.
[8]范建永,龍明,熊偉.基于HBase的矢量空間數(shù)據(jù)分布式存儲研究[J].地理與地理信息科學(xué),2012,28(5):39-42.
[9]陳崇成,林劍峰,吳小竹,等.基于NoSQL的海量空間數(shù)據(jù)云存儲與服務(wù)方法[J].地球信息科學(xué)學(xué)報,2013,15(2):166-174.
[10] CHODOROW K.MongoDB:the definitive guide[M].“O’Reilly Media,Inc.”,2013.
[11] ZENG Wei-ping,LI Ming-Xin,CHEN Huan.Using MongoDB to implement textbook management system instead of MySQL[C]//Communication Software and Networks (ICCSN),2011 IEEE 3rd International Conference on.IEEE,2011:303-305.
[責(zé)任編輯:張德福]
Design and analysis for the storage of Western Fujian Hakka culture data based on MongoDB
JIANG Ying1,WU Qunyong1,TANG Shuguang2,HUANG Junyi2
(1.Spatial Information Research Center of Fujian Province,Fuzhou 350002, China; 2.Key Laboratory of Spatial Data Mining and Information Sharing Ministry of Education(Fuzhou University), Fuzhou 350002, China)
Abstract:Considering the enriched types and the complicate structures of Hakka culture data,this paper investigates and develops the relevant data classification system.Combining the Hakka culture data classification system and the MongoDB data model,the storage model for Hakka cultural heritage data and the data model for infrastructure of Hakka culture are developed.Meanwhile,construction methods and processes of query and index for the Hakka cultural heritage data,based on MongoDB,are discussed.In a 100 MPs LAN,single-machine and cluster testing environments based on C/S structure are constructed,and the read/write performances of different Hakka culture data in the corresponding environments are tested.The experiments show the model based on MongoDB can smoothly manage the enrich-typed and complicate-structured Hakka culture data,of which the storage capacity and read/write performance can be improved by adding nodes.
Key words:Hakka culture;MongoDB;data storage;NoSQL database;distributed storage
中圖分類號:TP311
文獻(xiàn)標(biāo)識碼:A
文章編號:1006-7949(2016)03-0056-05
作者簡介:江穎(1990-),女,碩士研究生.
基金項目:國家科技支撐計劃資助項目(2013BAH28F00)
收稿日期:2014-12-05