1、收稿日期:;修订日期:基金项目:国家科技支撑项目(2013BAH28F00)第一作者:江颖(1990-) ,女,硕士研究生, 研究方向为地理信息工程。E-mail: 通讯作者:邬群勇(1973-) ,男,副研究员, 研究方向为地理信息系统及其应用。E-mail: 基于 MongoDB 的闽西客家文化数据存储设计与分析摘要:针对客家文化数据类型多样,结构复杂的问题,探讨并构建了客家文化数据分类体系。结合客家文化数据的分类和 MongoDB 数据模型,设计了客家文化遗产数据存储模型和客家文化基础设施数据模型。探讨了基于 MongoDB 的客家文化遗产数据查询和索引的构建方法和流程。在 100MPs
2、 局域网内基于 C/S 结构分别构建了单机和集群测试环境,测试了不同客家文化数据单机和集群的存取性能。实验表明,论文设计的基于 MongoDB 的客家文化数据模型能够较好地实现类型多样、结构复杂的客家文化数据的管理,便于以增加节点的方式来提高存储能力和读写性能。关键字:客家文化;MongoDB;数据存储;NoSQL 数据库;分布式存储中图分类号:TP311 文献标识码:A The Design and Analysis for the Storage of Western Fujian Hakka Culture Data Based on MongoDBAbstract: Consideri
3、ng the enriched types and the complicate structures of Hakka culture data, we investigate and develop 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
4、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 100MPs LAN, single-machine and cluster testing environments based on C / S structure are constructed, and the re
5、ad/write performances of different Hakka culture data in the corresponding environments are tested. Our experiments show that 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
6、improved by adding nodes.Keywords: Hakka culture; MongoDB; data storage; NoSQL database; distributed storage0 引言客家是经过两晋、唐宋、明末以来五次较大规模的从中原地区往南方各省以及国外迁徙形成的汉族民系。闽西客家文化是南迁的中原汉族与当地闽越族人杂居、融合中产生的文化 1,2。如何保存这些有形无形的文化遗产为中华民族多元文化添彩,是一个亟待解决的问题。数字化和信息化技术的发展和成熟,为文化遗产的保护提供了新的技术手段和思路。三维地面激光扫描、360全景摄像、卫星和低空遥感、GPS 、
7、数字扫描、数字录音录像等设备和技术的应用,采集了大量的客家文化数据。这些数据具有类型多样、数据格式差异大、非结构化、数据量大等特点,需要更灵活的数据库技术来管理和访问数据。NoSQL3,4是基于CAP 5和BASE 6发展起来的新型数据库,采用松散的、非结构化或半结构化的数据模型,在类型多样,非结构化数据管理方面提供了一种较好的解决方案。王歆(2013) 7使用非关系型数据库存储海量近地天文望远镜图像数据。范建永等(2012) 8 使用Hbase存储矢量空间数据。陈崇成等(2013) 9 探讨了基于NoSQL的海量空间数据云存储策略与方法。这些作者使用NoSQL数据库存储单一类型的非结构化数据
8、,很难用于实现多种类型的客家文化数据的统一管理。论文针对多种类型的客家文化数据统一管理与查询,并满足用户的高效访问,数据库的灵活易用的实际需求。尝试使用NoSQL中文档型数据库MongoDB 10,11 存储客家文化数据。论文给出了客家文化数据模型,基于该模型构建了客家文化数据库,最终通过对闽西地区的客家文化数据的存储测试,证明了该数据模型高效、可用。1 闽西客家文化数据分类本文以闽西客家文化数据为背景,在描述过程中将客家文化数据分两大类,一类是用于展示客家文化遗产的客家文化遗产数据,另一类是辅助展示客家文化遗产的基础设施数据。根据文化遗产的表现形式将客家文化遗产数据分为物质文化遗产数据、非物
9、质文化遗产数据,如表1。物质文化遗产数据包括了民居(土楼、围龙屋等)、古桥梁、寺庙、祠堂、文物等有形文化遗产的数据;非物质文化遗产数据包括了历史事件、客家民俗文化数据等无形的文化遗产数据。其中客家民俗文化是客家文化的精髓,囊括了极其丰富的内容,如客家传统医药、客家传统手工艺、客家民间音乐和戏剧、客家民间文学、客家传统节日、客家饮食习惯等。表 1 客家文化遗产数据分类客家文化遗产数据类别 客家文化遗产数据内容 数据形式 备注物质文化遗产数据 民居古桥梁寺庙文物祠堂文字、坐标、照片、视频、音频、360 全景、三维模型土楼、围龙屋等非物质文化遗产数据 客家民俗文化 文字、照片、视频、音频客家传统医药
10、、客家传统节日等历史事件客家文化基础设施数据主要由一些影像图和相关设施(交通路线、商店等)图构成,辅助文化遗产数据展示。客家文化基础设施数据根据数据格式和展示方式的不同,分为栅格类型的基础设施数据和矢量类型的基础设施数据。栅格类型的基础设施数据包含闽西卫星影像图、客家文化专题图(如客家人口分布图、客家迁徙路线图)、龙岩地区行政区划图等;矢量类型的基础设施数据包括景区、交通路线、商店、停车场等相关设施数据,如表2。表 2 客家文化基础设施数据分类 客家文化基础设施数据类别 客家文化基础设施数据内容栅格类型的基础设施数据 闽西卫星影像图客家文化专题图矢量类型的基础设施数据 景区交通路线商店2 基于
11、 MongoDB 的客家文化遗产数据存储2.1 MongoDB数据模型MongoDB是面向文档的开源数据库。MongoDB模式灵活,支持面向文档的查询,可以在任何属性上建立索引,包括建立空间索引和全文索引,同时其可扩展性强、支持复制和故障恢复。MongoDB的逻辑结构与关系型数据库相似,分为数据库(database)、集合(collection)和文档(document)三层。MongoDB 的数据库(database)相当于关系型数据库的数据库,集合(collection)相当于关系型数据库的表,文档(document) 相当于关系型数据库的记录。 MongoDB使用类似于JSON的BSON
12、动态地存储数据,支持数值、字符串、日期数组等多种基本类型的数据,同时可以支持文档嵌套文档等多种复杂的存储方式。2.2 客家文化数据存储模型根据以上对 MongoDB 的分析,MongoDB 是模式自由的数据库,同一个集合中每一条文档都可以是不同的结构,使用 MongoDB 可以很容易地更改结构。但为了提高数据库的可操作性,在设计数据库时同一集合一般会使用统一的结构。本文结合 MongoDB 和客家文化数据的分类信息,构建了客家文化遗产数据库和客家文化基础设施数据库。2.2.1 客家文化遗产数据存储结构基于 MongoDB 的客家文化遗产数据库中包含物质文化遗产数据集和非物质文化遗产数据集,如图
13、 1所示。物质文化遗产数据集中文档由唯一标识符(_id)、物质文化遗产名称(name)、所属类别(category)、介绍信息(info) 、物质文化遗产地址(address)、空间位置(location)、图片( picture)、视频(video)、音频(voice)、三维模型(model)、360 全景(360panorama)组成。其中物质文化遗产名称、类别、简介、地址是字符串格式的,空间位置数据是 GeoJSON 格式的点要素数据。图片分两部分存储,缩略图以二进制格式存储在文档中,另一部分图片与视频、音频、三维模型、360 全景数据一起存储在 GridFS 中,文档中只记录相应的字符
14、串格式的文件名数组。GridFS 是 MongoDB 采用的分布式存储文件的机制。非物质文化遗产数据集文档结构与物质文化遗产文档结构相似。非物质文化遗产的空间位置(location)包含 GeoJSON 格式的点要素数据和面要素数据,因为非物质文化遗产是一项区域性的传统或手工艺传承。CollectionName DocumentTCHeritage Documents:tchs文 化 遗 产 数 据 集ICHeritage Documents:itchskey value_idnamecategoryinfopicturevideovoicemodel360panoramaObjectIdSt
15、ringStringStringBinData、 ArrayArrayArrayArrayArray物 质 文 化 遗 产 数 据数 据 描 述GeoJSONlocationStringaddressGridFS Data formatpicturevideovoicemodel360panoramajpgmp4、 WMVmp3objSWFGridFS存 储非 物 质 文 化 遗 产数 据 描 述key value_idnamecategoryinfopicturevideovoicelocationObjectIdStringStringStringBinData、 ArrayArrayAr
16、rayGeoJSONtime Dateaddress String图 1 客家文化遗产数据存储结构2.2.2 客家文化基础设施数据存储结构基于 MongoDB 的客家文化基础设施数据库,由栅格类型基础设施地图集和矢量类型基础设施地图集组成,如图 2 所示。栅格类型和矢量类型的基础设施地图集中的每一个图层存储为一个集合。栅格类型基础设施地图集存储的是卫星影像地图和客家文化专题图等栅格数据。按金字塔式划分的地图瓦片数据根据不同内容存储在不同的集合中,而集合中文档内容由瓦片唯一标识符(_id)、瓦片所属层级(level)、以及瓦片二进制数据 (mapshard)构成。矢量类型的基础设施地图集存储的是
17、景区、交通路线、商店等矢量数据。一个集合存储一个图层相应的地理要素数据,每个文档由要素的唯一标识符(_id )、属性数据(attribute) 、空间数据(geometry)。其中属性数据根据具体数据而定,包含如名称(name )、简介( info)等,通过一个内嵌文档保存。矢 量 地 图数 据 描 述key value_idattributegeometryObjectIdGeoJSONCollectionName DocumentVector_SecnicRegion Documents:MapFeatures矢 量 类 型 基 础 设 施 地 图 集Vector_TrafficRoute
18、 Documents:MapFeatures key valuenameinfoStringStringkey value_idlevelObjectIdInt栅 格 地 图数 据 描 述mapshard BinDataCollectionName DocumentRaster_SatelliteImage Documents:MapShards栅 格 类 型 基 础 设 施 地 图 集Raster_ThematicMap1 Documents:MapShardsRaster_ThematicMap2 Documents:MapShards 图 2 客家文化基础设施数据存储结构3 基于 Mon
19、goDB 的客家文化遗产数据查询与索引构建查询是数据库最基本的功能,而索引可以加快查询速度。根据客家文化遗产数据的特点,最常用的查询一是通过给定客家文化遗产名称进行查询,二是通过给定的位置或范围进行查询。为了优化查询,在客家文化遗产数据集上建立2个索引:name键的索引、location键的索引。location键采用2dsphere索引,2dsphere是MongoDB 提供的一种球面索引方式。通过该索引可以实现对点、线、面几何图形进行球面检索,实现临近查询、点在面内等空间查询。查 询 客 家 文 化 遗产 数 据查 询 方 式通 过 属 性 信 息 进 行 查 询输 入 查 询 条 件 :
20、名 称通 过 空 间 关 系 进 行 查 询给 定 要 查 询 的 数据 类 别是 否 有 该 文 化遗 产 数 据NY读 取 文 化 遗 产 数据查 询 条 件临 近 查 询给 定 点 和 需 返 回结 果 的 最 大 个 数范 围 查 询给 定 范 围 : 圆 、矩 形 、 多 边 形是 否 有 数 据 在该 范 围 内Y 读 取 文 化 遗 产 数据 Y结 束是 否 该 类 型 数据NN图 3 客家文化遗产数据查询流程客家文化遗产数据查询流程图,如图3,主要分为以下几个步骤:1) 通过属性信息对客家文化遗产数据进行查询通过用户输入的名称信息,可以根据已经建立的name键索引对客家文化遗产
21、数据库进行查询。查询到目标数据则读取数据,如未查询到目标数据,要求用户重新输入查询条件。2) 通过空间关系对客家文化遗产数据进行查询给定要查询的数据类别后选择临近查询或者范围查询,数据类别可以是物质文化遗产数据中的民居、古桥梁等,也可以是非物质文化遗产文化民俗,或者是复合类别。临近查询或者范围查询得到目标数据后读取数据,结束流程。4 试验与结果分析4.1 试验环境及数据在 100MPs 局域网内基于 C/S 结构分别构建 MongoDB 数据库集群和单机测试环境。数据库集群上每台计算机分别部署一个 MongoDB 分片节点(Shard)、一个配置服务器(Config Server)、一个路由器
22、( Router),如图 4 所示。计算机配置如下:客户机 CPU 为 AMD A8-4500M,内存为 8GB,操作系统为 Windows7,数据库集群由三台 CPU 为 E5300,内存 2GB,操作系统 Ubuntu12.04 计算机组成。单机的读写测试由组成集群的其中一台计算机完成。实验数据由三部分组成:一是由客家文化遗产名称、类别、简介、地址、空间位置数据和缩略图组成客家文化遗产数据;二是客家文化遗产的图片、视频、音频、三维模型、360 全景数据;三是按 Google Map 切图方案得到的龙岩地区 12 到 16 级切片地图数据。Shard1Config Server1Router
23、1Shard2Config Server2Router2Shard3Config Server3Router3ClientServer1 Server2 Server3图 4 集群测试架构4.2 客家文化数据入库本文根据客家文化数据库设计,测试不同类型客家文化数据写入效率,测试结果如下。由客家文化遗产名称、类别、简介、地址、空间位置数据和缩略图组成的大小约为 10KB。写入 100 万条数据单机和集群所用时间分别为 2068s,1212s。客家文化遗产的图片、视频、音频、三维模型、360 全景等数据存储在 GridFS 中。这些数据大小并不一致,每个文化遗产描述过程中可能会包含其中一项或者多项
24、(图片 1 Mb-10 Mb、视频 100Mb-2Gb、音频 5 Mb-50 Mb、三维模型 50 Mb-200 Mb、360 全景 5Mb-20Mb) 。集群和单机向 GridFS 中导入单个客家文化遗产文件,时间相差不大,如表 3 所示。表 3 不同类型客家文化遗产数据导入时间数据类型 数据大小 单机导入时间(秒) 集群导入时间(秒)振成楼照片 4Mb 0.773 0.751振福楼游览视频 500Mb 81.152 66.213客家山歌音频 4Mb 0.843 0.752侨福楼 360 全景 8Mb 1.278 1.116振成楼三维模型 186Mb 29.1 24.765按照客家文化基础设
25、施数据库设计的栅格类型基础设施数据存储结构,导入龙岩市由 Google Map 切图方案切得的 12 到 16 级行政区划地图。切片为 10-20KB 的 jpg 格式图片,12 到 16 级数据大小分别为6.6MB、45.3 MB、76 MB、 230 MB、846 MB。各层级切片地图数据的集群导入时间约为单机导入时间的一半,如表 4 所示。表 4 栅格类型基础设施数据导入时间地图层级 12 13 14 15 16单机导入时间(秒) 1.784 4.322 13.780 61.391 231.734集群导入时间(秒) 0.727 2.275 7.756 40.072 109.7914.3
26、客家文化数据查询试验根据客家文化遗产的类别和名称对数据库中 100 万条不同的客家文化遗产数据进行查询测试。设计每个并发对客家文化遗产数据库中 2000 条不同的数据进行查询,并在测试前对数据进行预热,使数据最大程度读入内存。测试结果如图 5 所示,图中横轴为并发数,纵轴为每秒总共查询条数。在 40 并发前单机每秒查询条数高于集群,40 并发后集群的每秒查询条数继续提高,而单机不再增加。集群每秒查询条数会有起伏,因为查询的数据不是绝对平均地存储在三台计算机中。在 90 并发后单机每秒查询数量急剧下降,是由于查询的数据量已经超出单台计算机内存大小。图 5 并发访问测试由以上实验可知,基于 Mon
27、goDB 的客家文化数据模型能够较好地实现类型多样、结构复杂的客家文化数据的管理,并容易通过增加节点的方式来提高数据库存储能力和读写性能。5 结语本文利用 MongoDB 灵活的数据存储方式,对各种不同类型的客家文化数据进行研究,设计了不同类型客家文化数据的存储模型以及构建了查询索引方法和流程。最后用实验验证了这些存储模型的有效性,并测试了在不同环境下的存取效率,为文化遗产数据高效管理提供解决思路。下一步工作是建立闽西客家文化目录服务系统,实现各种类型闽西客家文化数据的统一展示。参考文献1 罗香林.客家源流考M.北京 :中国华侨出版公司, 1989:13-51.2 林晓平.客家文化特质探析J.
28、 西南民族大学学报(人文社科版), 2005, 26(12):72-753 申德荣, 于戈, 王习特, 等.支持大数据管理的 NoSQL 系统研究综述J.软件学报, 2013, 24(8):1786-18034 杜晋博, 杨君君.基于 NoSQL 和云存储的非结构化存储服务J.武汉大学学报(理学版), 2012, 58(10):99-1015Gilbert S, Lynch N.Brewers conjecture and the feasibility of consistent,available,partition-tolerant web servicesJ.ACM SIGACT Ne
29、ws, 2002, 33(2):51-596Pritchett D.Base: An ACID alternativeJ.Queue, 2008, 6(3):48-557 王歆.基于非关系型数据库系统的近地天体望远镜图像数据库的设计与实现J. 天文学报, 2013, 54(4):382-3918 范建永, 龙明, 熊伟.基于 HBase 的矢量空间数据分布式存储研究J.地理与地理信息科学, 2012, 28(5):39-429 陈崇成, 林剑峰, 吴小竹, 等.基于 NoSQL 的海量空间数据云存储与服务方法J.地球信息科学学报, 2013, 15(2):166-17410 Chodorow K.MongoDB: the definitive guideM. “ OReilly Media, Inc.“, 2013.11 Wei-ping Z, Ming-Xin L, Huan C.Using MongoDB to implement textbook management system instead of MySQLC/Communication Software and Networks (ICCSN), 2011 IEEE 3rd International Conference on. IEEE, 2011: 303-305.