分区存储技术在地理国情普查数据库中的应用

2017-07-05 14:19胡小彭任家锋魏雪梅
地理空间信息 2017年5期
关键词:空间数据国情入库

胡小彭,任家锋,魏雪梅

(1.安徽省基础测绘信息中心,安徽 合肥 230031;2.安徽省智慧城市与地理国情监测重点实验室,安徽 合肥 230031)

分区存储技术在地理国情普查数据库中的应用

胡小彭1,2,任家锋1,2,魏雪梅1,2

(1.安徽省基础测绘信息中心,安徽 合肥 230031;2.安徽省智慧城市与地理国情监测重点实验室,安徽 合肥 230031)

分析了Oracle数据库分区存储技术,并通过ArcSDE空间数据库引擎,提出了一种基于分区存储技术的空间数据入库解决方案。根据地理国情普查数据的特点,设计了对应的数据分区存储策略;并将其应用于安徽省地理国情普查数据库建设中。测试结果表明,分区存储数据库的读取效率明显高于非分区存储数据库。

地理国情普查;分区存储;空间数据;数据库

地理国情普查是一项重大的国情国力调查,是全面获取地理国情信息、掌握地表自然、生态以及人类活动基本情况的重要手段和基础性工作[1]。安徽省第一次地理国情普查是与全国各省、市、区同步进行的一项重要工作。地理国情普查成果数据具有庞大、复杂、多样化且存储分散等特点,为实现成果数据的集中存储、安全管理与高效应用,需要建立完整且空间连续的地理国情普查数据库,以满足普查成果数据管理、分发应用、统计分析和地理国情监测的需求[2]。

地理国情普查数据库建设的内容包括地理国情普查成果数据、专题数据和地理国情统计分析成果数据等[3]。其中,地理国情普查成果数据中的地表覆盖、道路网络和水域网络等要素数量多、数据量大,可采取分区存储策略,将其存储在不同的物理空间,以提高数据的存储和访问性能,并可有效隔离数据故障[4]。

在数据库建库过程中,当数据库的表过大时,通常会采用分区存储的策略,例如在Oracle中会采用分区表的形式,按照业务特征对表进行分区,达到提高存储性、可管理性和可用性的目的。同样,也可通过ArcSDE空间数据库引擎,实现空间数据的分区存储。

1 关键技术

1.1 Oracle的分区存储

分区是指将大型的表或索引分割成相对较小的、可独立管理的部分,这些独立的部分即为分区。对表进行分区后,各分区的逻辑属性是相同的,但物理属性可以不同,如分区后各分区的属性结构完全一致,但各分区可存储在不同的表空间中。由于各分区的逻辑属性完全一致,对分区后的表来说,可用同样的SQL语句进行操作,没有增加用户操作数据库的复杂度[5-6]。分区存储的优点为:①提高读取效率,用户可只在感兴趣目标分区中进行查询,从而提高数据读取的效率;②维护方便,可单独备份和恢复每个分区;③隔离故障,若表的某个分区出现故障,但不影响表在其他分区数据的使用,增强了数据的可用性;④均衡I/O,将不同分区映射到不同的磁盘以平衡系统的I/O效率,提高了并发性,改善了系统性能。

Oracle的表分区方法分为范围分区、列表分区、散列分区和组合分区4种[7],具体方法为:

1)范围分区:按范围对数据表中的某个值进行分区,如根据行政区划分区,将不同行政区划内的数据存储到对应的分区表中。

2)列表分区:对分区字段的离散值进行分区,可按照自然的方式将无序和不相关的数据集合进行分区。

3)散列分区:基于分区字段的Hash值,自动将记录插入到相应分区,常用于分区范围很难确定或很难平衡的情况。

4)组合分区:主要有范围—散列分区、范围—列表分区,将两种分区方法结合使用,以满足复杂情况的需求。

1.2 空间数据分区存储

通过ArcSDE空间数据库引擎可实现空间数据在Oracle中的分区存储,即实现对ArcSDE相关参数设置的分区存储。设置的方式有两种:一种是对Dbtune文件(位于SDEHOME/etc/dbtune.sde)进行配置,另一种是在ArcSDE系统表Dbtune中新增分区关键字和配置参数;前者需安装ArcSDE服务,而后者只需链接ArcSDE数据库即可。随着ArcSDE版本的升级完善,已经越来越趋向于通过直连的方式来链接空间数据库。本文采用第二种方式对ArcSDE系统数据库进行配置,在配置的同时还可将空间数据的存储模型设为基于Oracle Spatial的SDO_Geometry,进一步提升空间数据的存储性能。系统表的关键参数配置如表 1所示。

表1 ArcSDE系统表配置参数

2 分区存储的实现

2.1 分区存储策略

地理国情普查成果数据中需要对要素数量多、数据量大的矢量数据进行分区存储。对于矢量数据来说,需进行分区存储的数据有地表覆盖数据、交通网络和水域网络等,即需在V_LCRA、V_LRDL、V_LCTL、V_LVVL、V_HYDL、V_HYDA等6个图层中增加1 个AREACODE字段,表示数据的分区代码。

由于安徽省地理国情普查成果数据是以县、区为单位进行生产、建库预处理和存储组织的,为了便于数据入库,在数据库中可按照县、区进行分区存储。具体实现方法为:首先在各县、区的成果数据中建立分区代码;再采用范围分区的方法,根据分区代码建立表分区。分区存储设置功能模块界面如图1所示。

图1 分区存储设置功能界面

2.2 分区数据入库

数据入库前,需根据地理国情普查数据库建设规范要求,建立每个要素类的数据结构;要实现分区数据入库,在建立要素类时需指定配置关键字(代码中的GQDB_PARTITION为分区策略配置中的关键字),创建分区要素类的代码为:

IFeatureClass pfC = pFeatureDataset.CreateFeatureClass(fs Name,fsField,

null,null,pesriFeatureType, “SHAPE”, “GQDB_ PARTITION”);

为了保证数据高效、正确无误地入库,利用ArcGIS Engine组件,根据分区数据存储的特性,开发了分区数据入库程序,实现了各县、区地理国情普查矢量数据在数据库中的自动化分区存储。

2.3 实例对比验证

由于采用分区存储的图层数据要素数量多、数据量大,在未分区前需在海量数据中进行检索,降低了数据读取效率;而使用分区存储后,可只在指定的分区中进行检索,提高了数据读取效率。在实际应用中,可通过ArcGIS Engine提供的ISqlWorkspace和IQueryDescription接口来实现对分区数据的调用。

1)用直连的方式链接ArcSDE:

IPropertySet prtySet=new PropertySetClass();

prtySet.SetProperty(“instance”, “sde:oracle11g:10.34.65.1/ orcl”);

prtySet.SetProperty(“user”, “AHGQSDE”);

prtySet.SetProperty(“password”, “AHGQSDE”);

IWorkspaceFactory wkpFactory=new SdeWorkspace Factory();

IWorkspace wkp= wkpFactory.Open(prtySet,0);

2)调用分区数据示例代码:ISqlWorkspace sqlWkp=(ISqlWorkspace) workspace; String cmd=“select * from V_LCRA Patrition (PARTITION340123)”;

IQueryDescription qDsp= sqlWkp.GetQueryDescription(cmd); String lyrName=“”;

sqlWkp.CheckDatasetName(“V_LCRA”, qDsp,out lyrName);

ITable pTb= sqlWkp.OpenQueryClass(lyrName, qDsp);

IFeatureClass pfC= pTb as IFeatureClass;

为了验证分区数据的查询效率,利用同一台计算机,根据上述查询方法,分别在全省分区和非分区存储数据库中读取肥西县的地表覆盖、水系数据,如图2所示。

图2 查询效率对比

通过实例测试对比验证表明,在分区存储数据库中读取数据的效率明显高于非分区存储数据库,查询效率对比见表2。

表2 查询效率对比/ms

3 结 语

本文在分析数据库分区存储相关技术的基础上,提出了地理国情普查数据分区存储的策略与方法;并通过编程实现、效率测试、算法调优,实现了数据量较大的地表覆盖、道路和水系等矢量数据的分区存储,为安徽省地理国情普查数据库建设提供了一种高效方案。

分区存储技术,可明显提高数据的读取效率,也便于对数据库的维护。高效的数据读取效率有助于提高数据库系统的性能和操作体验,为今后安徽省地理国情普查成果的分发与应用提供了更好的技术支撑。本文提出的空间数据分区存储方法,亦可为其他地理信息数据库的建设提供参考。

[1] GDPJ 03-2013.地理国情普查数据规定与采集要求[S].北京:国家测绘地理信息局,2013:8

[2] 国务院第一次全国地理国情普查领导小组办公室.地理国情普查数据库建库技术方法[M].北京:测绘出版社,2015:15-20

[3] 魏雪梅,马卫春,李宝.安徽省地理国情普查数据库系统的设计与实现[J].地理空间信息,2016,14(11):14-17

[4] 孙雷刚,周可法,张楠楠,等.数据分区在地学空间数据查询中的应用[J].计算机应用,2010,30(增刊2):148-151

[5] 李璐璐.Oracle数据库优化方法分析[J].硅谷,2014(24):31-32 [6] 王佳,王智森.利用表分区的大数据库优化方法[J].大连工业大学学报,2013,32(6):465-468

[7] 蒋勇.Oracle数据库分区技术及其应用[J].科技信息, 2011(29):49-50

P208

B

1672-4623(2017)05-0039-03

10.3969/j.issn.1672-4623.2017.0051.2

胡小彭,硕士研究生,工程师,主要从事GIS开发与应用、数据库建设等方面工作。

2016-12-19。

猜你喜欢
空间数据国情入库
重磅!广东省“三旧”改造标图入库标准正式发布!
中国食品品牌库入库企业信息公示①
家国情 诗词魂
推广生物乙醇汽油:迫切且合乎国情
元数据驱动的多中心空间数据同步方法研究
身临其境探究竟 主动思考完任务——《仓储与配送实务》入库作业之“入库订单处理”教学案例
地理国情监测知识支持库初步设计
特定国情教情中的中小学校自主权
批量地籍图入库程序设计方法
基于文件系统的分布式海量空间数据高效存储与组织研究