1、2023 年第 11 期8计算机应用信息技术与信息化基于 N o S Q L数据库的地图瓦片数据存储与管理研究刘元亮1 李兆杨1 谢中凯1 李 飞1LIU Yuanliang LI Zhaoyang XIE Zhongkai LI Fei 摘要 地图瓦片缓存技术降低了 WebGIS 服务端的压力,不需要进行动态出图,大大提高了地图服务的性能,有力提升了用户体验。从地图瓦片数据存储方式入手,分析了地图瓦片文件存储方式存在的问题,设计了一种基于 MongoDB 集群的分布式瓦片数据存储方案,研发了瓦片快速存储与管理软件,实现了“天地图山东”平台地图瓦片的精细化管理和存储架构的升级。通过对地图瓦片文
2、件存储与 MongoDB 存储的读取效率进行性能测试和对比分析可以发现,基于 MongoDB 的地图瓦片存储方式在高并发访问时有着明显的优势,能够满足实际工作的需要。关键词 地图瓦片;MongoDB;数据存储 doi:10.3969/j.issn.1672-9528.2023.11.0021.山东省国土测绘院 山东济南 250102 基 金 项 目 山 东 省 重 大 科 技 创 新 工 程 资 助 项 目(2019JZZY020103)0 引言随着互联网地图服务的不断升级迭代,各种地图渲染技术层出不穷,服务方式呈现出丰富的多样性。虽然地图渲染技术与方式提高了用户的地图服务体验,但是瓦片地图作
3、为一种底图服务,凭借其自身的特点,在互联网地图中依然发挥着举足轻重的作用,特别是影像地图瓦片服务仍然是影像地图最为高效的服务方式。瓦片地图是包含一系列比例尺、一定地图范围的地图切片文件,按照金字塔结构进行组织,在服务器端进行预生成,通过级别、行列号进行唯一标识,当用户平移、缩放地图时,浏览器根据金字塔模型,计算出所需瓦片,并从瓦片服务器获取、拼接后展现给用户。这种方式由于不需要实时地生成图片,大大提高了网络地图的响应速度,具有良好的用户体验1-4。目前,百度地图、高德地图、Bing Maps、Google Maps 的影像地图服务都采用瓦片数据进行组织5。在国家地理信息公共服务平台设计中,更是
4、明确提出将电子地图瓦片缓存服务作为主要的地图服务标准之一。瓦片地图服务的数据基础是瓦片文件,对瓦片文件的存储与管理方式将直接影响到地图服务效率的高低6-7。目前,地图瓦片大多采用文件目录的形式进行存储,包括散列式瓦片存储和紧凑式瓦片存储,散列式瓦片存储具有“单个文件小、文件个数多”的特点,随着地图瓦片数量的不断增长,这种方式会面临一系列问题,如存在查询性能瓶颈、数据迁移备份耗时长、无法实现分布式部署问题;紧凑式瓦片存储虽然占用空间少,但是面临集群式瓦片地图服务,依旧需要多机器拷贝,且用户并发量大时,会面临较大磁盘读写压力8-11。为了解决这些问题,提高瓦片数据生成发布的效率,实现对瓦片数据的精
5、细化管理,提升山东省地理信息公共服务平台(天地图山东)的地图服务能力,本文基于主流NoSQL 数据库 MongoDB,实现了平台地图瓦片由文件存储到 MongoDB 分布式存储的架构升级,满足了平台地图服务的高并发性和海量数据访问的需求。1 MongoDB 简介MongoDB 是一个免费、开源、跨平台的 NoSQL 文档型数据库,它是介于关系型数据库和非关系型数据之间的产品,使用类似于 json 的 bson 格式进行数据存储,支持的数据结构非常松散,可以存储比较复杂的数据类型;其查询语言非常强大,相较于传统的关系型数据库有着易于使用、易于扩展、功能丰富、性能高效等特点,对于海量数据的存储与管
6、理更具有优势12-13。MongoDB 作为一种文档型非关系数据库系统,它通过分片保证了水平扩展的能力,通过复制组实现了数据的冗余存储,从而保证了其安全性。在实际的生产环境中利用分片和复制组的机制将数据库分布存储在多个片节点上,每个片节点上的数据又通过复制组进行冗余备份存储,通过这种机制,保障 MongoDB 集群的可扩展性和安全性14。2023 年第 11 期9计算机应用信息技术与信息化作为一种 NoSQL 数据库,MongoDB 对于地图瓦片存储具有天然的优势。首先,MongoDB 通过 key-value 形式进行存储,允许保存各种类型的非结构化数据,数据耦合度低,非常适合“(层级、行号
7、、列号)(瓦片)”这种关系的数据存储。其次,MongoDB 集群具有主从复制、副本集、分片三种部署模式,具有故障切换、负载均衡、故障恢复等多种特性,可以实现海量瓦片的分布式存储,保证瓦片地图服务的正常运行和访问效率。最后,MongoDB 支持数据版本信息设置,允许同一数据多次入库更新,实现同一套瓦片数据不同时期版本的多重存储。2 MongoDB 地图瓦片存储与管理2.1 数据分析山东省地理信息公共服务平台瓦片地图数据包括线划电子地图、影像地图、影像注记,其中影像地图包括月度、季度、年度的历史影像。地图瓦片文件均按照山东省地理信息公共服务平台的切图级别和比例尺,基于 ArcGIS 软件切片制作而
8、成,采用紧凑型 bundle 大文件格式进行存储,根据数据类别、级别等进行分组存放。紧凑型 bundle 大文件是 ArcGIS10 中出现的一种切片缓存文件格式,与之前的松散型存储格式相比,具有迁移方便、切片效率高、占用空间小等优点,采用.bundle和.bundlex 两种文件格式存储,其中.bundle 存储切片数据和.bundlex 是.bundle 文件中切片数据的索引文件,一个.bundle 文件中最多可以存储 128128(16 384)个切片,通过.bundlex 文件中的参数可以解析出.bundle 文件中的瓦片数据。本研究中的切图区域为整个山东省陆域范围,处于北纬 34.3
9、8 38.30,东经 114.78 122.72之间,切图级别为 7 18 级。2.2 总体架构为了满足用户的高并发、大数据量请求,保证瓦片地图服务不间断运行,平台部署了三台瓦片服务器,当用户浏览地图发送瓦片获取请求时,会利用负载均衡算法,将请求链接到其中一台瓦片服务器,瓦片服务器通过MongoDB路由,访问到 MongoDB 集群,获取到所需瓦片,并将其返回给用户,总体架构如图 1 所示。其中,3 台瓦片服务器主要用来解析用户的瓦片请求,得到所需瓦片的层级和行列号,通过MongoDB 路由向 MongoDB 库请求该瓦片。MongoDB 路由是一个 Mongos 实例,主要用来屏蔽分布式数据
10、库内部的复杂性,提供集群的单一入口,将瓦片请求转发到对应分片服务器上,当查询请求包含分片片键时,路由将查询请求发送到指定分片,否则,路由将其发送到所有分片,并汇总所有查询结果。图 1 瓦片存储总体架构MongoDB 集群则是存储瓦片数据的位置,本研究采用副本集和分片相结合的部署模式,副本集模式将瓦片数据复制多份保存,不同服务器存储同一份数据,当服务器出现故障时能够自由切换;分片模式则将整个数据集分别存储到不同的分片上,适合处理海量数据15。集群由 5 台节点服务器组成,包括 3 个配置服务(confi g)和 5 个分片服务(shard),其中 confi g 存储集群所有节点、分片数据路由的
11、信息,shard是真正存储瓦片数据的位置,它是 MongoDB 数据库的核心机制,通过将数据库数据分散存贮到不同的服务器上,来缓解高并发访问,实现均衡负载。每个分片服务采用副本集来实现高可用性,包括主节点(ShrM)、从节点(ShrS)、仲裁节点(ShrA),三个节点分别对应不同的服务器,当主节点出现问题宕机时,能够将从节点选取为主节点,保证集群运转正常且数据不会丢失。2.3 MongoDB 瓦片存储流程设计研究中 MongoDB 瓦片存储主要包括数据库健康检查、数据集合创建、层级分析、空间范围分析、异常瓦片检测等多个流程,如图 2 所示。用户登录系统后,首先要自动检查MongoDB 数据库集
12、群的健康状态,若集群健康异常或网络连接出现问题,则退出系统,进行故障排查;如若一切正常,则需要根据要瓦片数据类型和操作类型进行创建或选择数据集合(新入数据创建数据集合,更新数据选择已有数据集合);然后选择本地瓦片数据源,支持 ArcGIS10.X 各个版本的紧凑型大文件切片格式,设定入库瓦片的级别范围,默认718级范围;再而可以选择瓦片入库空间范围,支持自定义空间2023 年第 11 期10计算机应用信息技术与信息化范围文件(shapefi le)和四至范围过滤,通过计算地图瓦片的空间坐标,与已有的空间过滤条件进行叠加分析,筛选出符合条件的地图瓦片,实现瓦片局部更新;接着对这些瓦片进行检查,将
13、瓦片大小大于 200 kB 的定义为异常瓦片,并将其层级和行列号输出到日志,以便于后期错误排查,对于正常瓦片,为了实现地图瓦片入库效率的最优化,采用批量方式进行入库,本文测试对比了不同数量瓦片批次入库存储效率,通过实验发现,在现有的集群环境下,地图瓦片单次存储 800 张左右时效率最高;最后数据入库完成后,对已入数据进行索引创建,保证瓦片检索的效率,同时可以对已入库的地图瓦片进行实时浏览及进度统计。图 2 MongoDB 瓦片存储流程研究中以覆盖山东省全域的矢量电子地图瓦片、影像地图瓦片、影像注记瓦片及各期历史影像瓦片作为研究对象,在 MongoDB 数据库中创建了 SDPubMap、SDRa
14、sterPubMap、SDRasterPubMapDJ 等多个数据集合,分别存储以上不同类型和时期的地图瓦片。每张瓦片用id(由层级、行号、列号组成)进行唯一标识,并为其建立索引,瓦片读取时可利用 key-value 键值对唯一获取该张瓦片。2.4 MongoDB 瓦片入库管理工具实现为了快速将地图瓦片导入 MongoDB 库中,研究中开发了地图瓦片入库管理工具,包括自定义层级瓦片入库、自定义空间范围瓦片入库、瓦片删除、上传进度统计、集群服务器状态监控、瓦片浏览等相关功能,实现了地图瓦片的动态管理、MongoDB 集群服务器监控以及入库瓦片的实时浏览,如图 3 所示,具体典型功能如下。图 3
15、MongoDB 地图瓦片入库工具(1)上传任务信息配置。包括任务名称的命名,瓦片数据来源地址选择,MongoDB 目标数据集设定以及用于地图切片的 ArcGIS 版本等基本信息的配置。(2)自定义瓦片层级入库。可以从下拉列表中选择待上传瓦片的级别区间,任务执行时只会将该层级内的瓦片同步到 MongoDB 数据库中。(3)自定义空间范围入库。支持导入任意的空间范围数据(shapefi le 格式)和设定四至范围,通过解析瓦片的空间坐标信息,与自定义空间范围进行叠加分析,从而将该范围内的瓦片上传的 MongoDB 数据库中。(4)瓦片数据删除。通过设置要删除的瓦片级别和目标地图,可以将该地图的指定
16、级别瓦片全部删除。(5)上传任务进度统计。通过计算总瓦片量和已上传瓦片量,可以每隔 1 s 计算当前瓦片上传进度。(6)日志解析。通过日志的形式记录层级个数、各层级瓦片数量,支持异常瓦片判断及层级行列号信息输出。(7)集群服务器状态监控。可以对集群服务器各个分片的磁盘、内存使用情况进行实时监控与报警,保障集群的高效稳定运行。(8)瓦片数据浏览。对于已上传和正在上传的瓦片,可以进行实时浏览,以便及时发现上传过程中出现的问题。2.5 应用成效目前,该技术已经应用于山东省地理信息公共服务平台(天地图山东)中,实现了山东省线划电子地图、影像地图、影像注记、历史影像等亿级地图瓦片的存储与管理,724 h
17、不间断服务,广泛应用于全省自然资源、生态环境、空间规划、应急指挥、城市管理等 50 多个领域,支撑了省直部门和市县 3000 余个业务系统的地图服务调用,日均地图服务访问量3000 万次以上,带动了上百家企业参与地理信息增值开发。3 性能测试为了检验基于 MongoDB 的瓦片存储管理策略在存储效率和并发访问上的特性,搭建了测试环境对其进行了测试。2023 年第 11 期11计算机应用信息技术与信息化以山东省影像地图瓦片数据为例,按照国际通用的地图瓦片切片规则,以北纬 90、西经 180为切图原点,向东向南按行列递增,瓦片规格为 256256 像素,某一等级的瓦片均由低一级的各瓦片切割成 4
18、个瓦片组成。根据山东省的范围,全省 7 18 级的瓦片数量总共约 1200 万,数据大小在150 GB 左右。测试环境中搭建了含有三个节点 MongoDB 集群,操作系统均为 Windows Server2012,内存为 4 GB,CPU 为 4 核,硬盘为 300 GB 固态硬盘。另外编写了瓦片读取 Web 服务,同时满足读取常规方式存储的地图瓦片和基于 MongoDB 存储的地图瓦片,该服务以 IIS 作为 Web 服务器进行发布,操作系统 Windows Server2012,内存为 8 GB,CPU 为 8 核,硬盘为 300 GB 固态硬盘。测试工具采用 LoadRunner11.0
19、,网络宽带为 100 Mbit/s。利用 LoadRunner 分别对两种瓦片存储形式的瓦片读取效率进行测试,并发用户数分别设置为 50、100、150、200、300,测试过程中每隔 10 s 增加 10 个访问量,递增并发,并发量达到目标值后,持续测试运行 1 h,不同并发访问数的平均响应时间如表 1 所示。表 1 两种地图瓦片存储模式读取效率对比并发用户数MongoDB 瓦片存储响应时间/s常规瓦片存储响应时间/s501001502003000.0270.0420.0740.0880.1360.036 0.0630.0980.1470.242由表 1 可以看出,当用户并发量在 100 以
20、内时,基于MongoDB 的瓦片存储响应时间和常规瓦片存储响应时间相差不大;当用户并发量大于 100 时,常规瓦片存储的响应时间明显大于基于 MongoDB 瓦片存储响应时间。因此,基于MongoDB 的瓦片存储与管理方案完全可以替代现有的常规瓦片存储管理,且在高并发量的瓦片读取时效率有明显的提升。4 结语本文在分析常规基于文件的地图瓦片存储的问题基础上,针对 MongoDB 独特的体系架构、分片和复制组机制、索引特点等关键技术,深入研究了基于 MongoDB 进行地图瓦片的存储,研发了瓦片入库和管理工具,并对 MongoDB存储和常规瓦片存储的读取效率进行了测试。结果表明,基于 MongoD
21、B 的瓦片存储读取效率高于常规瓦片存储,随着用户并发量的增加,其读取效率的优势愈加明显,因此,基于 MongoDB 的瓦片存储支撑的 Web 地图服务具有高并发、高性能、高可用等特点,能够满足“天地图山东”平台地图瓦片服务的需求。参考文献:1 邱新忠.基于 MongoDB GridFS 的地图瓦片数据存储研究J.地理空间信息,2016,14(2):50-52.2 邱儒琼,郑丽娜,李兵.基于 MongoDB 的电子地图瓦片数据存储和服务研究 J.地理空间信息,2014,12(6):155-157.3 张晋文,周艳兵,刘小生.网络地图缓存技术研究与应用进展 J.测绘与空间地理信息,2015,38(
22、8):59-62.4 刘赟,邢朦.基于瓦片地图的电子海图生成和应用方法 J.雷达与对抗,2019,39(4):61-64.5张飞龙.基于MongoDB遥感数据存储管理策略的研究D.开封:河南大学,2016.6 陈超,王亮,闫浩文,等.一种基于 NoSQL 的地图瓦片数据存储技术 J.测绘科学,2013,38(1):142-143.7 王冬至,林东铨.一种适用于移动端国土调查应用的瓦片地图存储方法 J.测绘地理信息,2020,45(5):94-96.8 李瑞清,熊伟,吴烨,等.一种基于 MBTiles 的地图瓦片存储技术 J.地理空间信息,2019,17(12):58-62.9 王乃生,王文杰,
23、张哲.基于 NoSQL 数据库的时态地图瓦片数据存储模型研究与实现 J.测绘与空间地理信息,2020,43(8):132-134.10 冯海峰.基于分布式存储的电子地图系统的设计与实现D.北京:北京理工大学,2016.11 王伟,姚晓婧,蒋许峰,等.高性能瓦片数据存储与发布应用技术研究 J.天津职业技术师范大学学报,2022,32(2):15-22.12 马卫春,任家锋,朱清.MongoDB 存储地图瓦片技术在国情普查建库中的应用 J.测绘地理信息,2018,43(3):66-69.13 张恩,张广弟,兰磊.基于 MongoDB 的海量空间数据存储和并行 J.地理空间信息,2014,12(1):46-48.14 孙忠芳,谭智,付海龙.基于 MongoDB 集群的高性能瓦片服务器 J.中国科技信息,2015(8):107-109.15 刘云汉,郭继光.基于 MongoDB 分片集群的海量数据存储设计 J.电子技术与软件工程,2022(7):254-258.【作者简介】刘元亮(1990),男,山东临沂人,硕士研究生,工程师,研究方向:地理信息系统应用。李飞(1987),男,通信作者(email:),山东济宁人,硕士研究生,高级工程师,研究方向:地理信息系统应用。(收稿日期:2023-06-09 修回日期:2023-07-20)