GML数据存储技术的研究与实现

来源:互联网 发布:linux node.js 安装 编辑:程序博客网 时间:2024/05/18 20:13
1、引言
随着GML(Geography Markup Language,地理标记语言)技术的日臻成熟,GML技术在GIS领域的应用得到广泛的推广,并且很多GIS软件商开始在他们设计的软件产品中增加了对GML数据的支持,这使的不同的GIS数据实现信息共享和互操作成为可能,同时也给WebGIS技术的发展开辟了一条光明的道路。在GML技术给我们带来如此多的便利的同时,也给我们带来了一个重大的问题,就是面对不断涌现的GML数据我们如何去管理、如何去操纵。目前,在欧洲有的国家开始给用户发布GML数据,已不再直接提供传统的数据形式,这就迫使我们不得不研制一种能够具有传统数据库的功能,但有与传统数据库有区别的基于GML数据的新型数据库。在解决GML数据存储问题之前我们必须首先考虑如何存储GML文档,因为只有对GML应用模式的分析才能确定GML数据库的存储模型。本文将结合现有的关系数据库和面向对象的数据库技术以及刚兴起的XML数据库技术,提出一套针对GML数据的存储方案。
 
2、XML 存储技术
1998年2月W3C(万维网协会)组织公布了XML(extensible markup language, 可扩展的标识语言)第一版本的标准,将它作为一种互联网进行数据表示和交换的标准,从此Internet技术进入了一个新的革命。XML的基础思想是非常简单的,它用标记来表示所被标记元素的含义,而不是像在HTML中那样用标记来格式化数据,并且XML用简单的嵌套和索引来表示各个数据元素之间的关系。XML使用用户定义标记描述了数据的含义,从而很容易用自动代理从XML标记的数据中抽取出有用的信息,因此XML被应用在搜索引擎、电子商务、电子数据变换等很多方面。XML技术出现的时间虽然不是很长,它的发展速度非常的快,已经有了比较成熟的技术基础,目前已经成为Internet数据交换的主流格式。
 
2.1、XML数据存储管理技术的定义
 
XML存储管理被定义为[1]:1)是一个XML文档及其部分的集合,它被一个能够管理和控制这些文档集合信息系统维持;2)不是一个单独的存储结构化和半结构化数据的仓库。它应当具有各种管理XML数据的能力,象关系数据库一样,例如:数据的独立性、完整性、入口权限、冗余,等等。目前已经有很多公司和单位开始研究对XML数据的存储管理,并且已发布了专门用来存储XML数据的数据库。
 
2.2、现有的XML存储技术的分类
 
2.2.1、XML DB:initiative的分类方法
 
XML DB:initiative将基于XML的数据库分为三类:
 
(1)Native XML Database
 
 NXD是专门为存储XML文档而设计的,也兼有一般数据库的特性,例如支持事务,并发控制,查询语言,安全机制,二次开发接口等。唯一的不同之处在于其内部存储模型是基于XML文档树形结构,而非关系模型。Ronald Bourret在其"XML and Databases"一文中,将NXD定义为:“NXD的逻辑模型建立在XML文档之上,而非文档中的数据之上,并根据它来存取数据。该模型至少包括元素(element)、属性(Attribute)、PCDATA和文档顺序,例如XPath的数据模型……NXD的最小存储单位是XML文档,……”
 
(2)XML-Enabled Database
 
它被设计是为了存储和取回“以数据为中心”的XML文档,同时提供了其它数据形式的接口,并包含了XML文档与其本身的数据传输。XED是在原有数据库基础上扩展了XML支持模块,完成XML数据和数据库之间的格式转换和传输。其存储粒度可以把整个XML文档作为RDBMS表中一行,或把XML文档进行解析后,存储到相应的表格中。
 
(3)Hybird Database
 
从某种意义上讲,它是Native XML Database和XML-Enabled Database的一种混合,可以粗略的看成是XML和其他数据库的接口。
 
2.2.2、基于现有数据库分类
 
(1)基于文件系统的存储管理技术
 
这种技术是将XML数据存储到文件系统中。目前HTML的存储管理都是基于这种平面的文件系统。但XML和HTML有着很大的区别,XML是层次结构的,而HTML不是。一种方法是将XML数据以BLOB(二进制大对象)的形式进行存储,然后在每一次使用时将它进行解析。由于反复的解析,破坏了XML的结构,所以这种方法存在着很大缺陷。
 
(2)基于层次数据库的存储管理技术
 
由于XML本身是层次结构的,所以可以将xML数据存储在层次数据库中。在层次数据库中,可以利用一种pseudo query的语法来编写查询语句对数据进行查询[2]。但层次数据库技术非常的不成熟而且操作非常复杂。因此这不是一种很有效的方法。
 
(3)基于关系数据库的存储管理技术
 
关系数据库是目前最成熟的数据库技术,我们可以将XML的模式映射到关系数据库中,例如:将DTD(文本类型定义)映射到关系数据库中[3]。它是?种高效的基于关系的存储取回技术,将XML文档分成一些语义相同、灵活的小单元进行处理,并提出了一种查询算法。因此,这种基于关系数据库的存储管理技术被应用的非常广泛。
 
(4)基于面向对象数据库的存储管理技术
 
面向对象数据库用自身的方法、关系和语义来管理分层XML树,同时提供了强大的导航和链接的功能。文献[2]采用这种技术存储XML数据。虽然面向对象数据库的体系结构非常适合存储XML数据,但它本身技术还不成熟限制了它的应用。
 
3、GML数据存储技术
3.1、 GML 简介
 
GML是一种用于建模、传输和存储地理及与地理相关信息的XML编码语言,它包括了地理要素(Feature)与层(Coverage)的空间与非空间特征[5]。GML建立在W3C系列标准之上,以一种互联网上容易共享的方式来描述、表达地理信息,是第一个被GIS界广泛接受的元标记语言。在这之前开发的各种用于存储和交换地理信息的文件格式或标准,由于缺少相应的支持工具,而没有被广泛接受。GML一个重要优势就是它能够让开发者或用户非常灵活地使用已被广泛接受的XML技术,它建立在XML、XML Schema、XLink和XPointer基础之上,GML数据能够很容易地与非空间数据集成使用。GML 使用XML对地理数据进行编码,为开发商和用户提供了一种开放的、中立于任何厂商的地理数据建模框架,使地理信息能够在不同领域、不同部门进行语义共享。
 
GML 采用要素(Feature)来描述地理实体和地理现象,GML要素是通过其属性(property) 来描述的,这些属性包括:空间属性、时态属性及其它非空间时态属性,例如,我们可以用GML的动态要素(dynamic feature)来描述洪灾的演变过程,其属性包括不同时刻洪水淹没的位置、范围、形状、水温及洪水扩散的速度等。
 
OGC 先后推出了3个版本的GML,GML 1.0 版本于2000年4月正式推出,GML 2.0 版本于2001年2月推出,GML 2.12 版本于2002年9月推出,2003 年1月推出GML 3.0 版本。3.0版增加了对复杂的几何实体、拓扑、空间参照系统、元数据、时间特征和动态要素等的支持,使其更加适合描述现实世界问题。GML作为一个空间数据编码规范,它并没有强制采用它的用户使用规定的XML标识,而是提供了一套基本的标签、公共的数据模型,以及用户构建应用模式(GML Application Schemas)的机制。
 
3.2、基于NXD技术策略存储GML数据
 
由于GML是基于XML编码的空间数据,所以对GML空间数据的存储、查询语言的研究,基本上是对XML数据存储、查询语言的扩展。基于上述对XML数据的存储分析,我们发现基于传统的数据库技术的存储方式在数据操纵方面非常方便,充分利用了传统数据库现有技术,但是这种方式都是基于某种映射关系,在很大程度上不能保持XML文档的层次结构,映射过程中可能会损失某些信息。这种方式对结构化的XML文档存取速度较快,但对半结构化和非结构化的XML文档就比较困难,需要借助特定的技术手段寻找它的模式文档原形。综合上述对XML数据的存储方式特点和GML本身的特性,本文提出了对GML数据的存储策略,即采用NXD(Native XML Database,原生XML数据库)技术对GML数据进行存储,这种数据库可以同时存储结构化、半结构化和非结构化的XML数据。
 
3.3、NXD(Native XML Database,原生XML数据库)定义
 
    "native XML database" 这个术语首先在 Software AG 为 Tamino 所做的营销宣传中露面。也许由于它的成功,后来这个术语在同类产品的开发商那里成了通用叫法。它是一个营销术语,从来没有正式的技术定义,这是它的一个缺陷。有一个接近的定义(出自XML:DB mailing list的一个成员)这样定义原生XML数据库(native XML database): 
 
1)它为 XML 文档(而不是文档中的数据)定义了一个(逻辑)模型,并根据该模型存取文件。这个模型至少应包括元素、属性、PCDATA 和文件顺序。这种模型的例子有XPath数据模型、XML Infoset 以及 DOM 所用的模型和SAX 1.0的事件。
 
2)它以 XML 文件作为其基本(逻辑)存储单位,正如关系数据库以表中的行作为基本(逻辑)存储单位。 
 
3)它对底层的物理存储模型没有特殊要求。例如,它可以建在关系型、层次型或面向对象的数据库之上,或者使用专用的存储格式,比如索引或压缩文件。 
 
该定义的第一部分与其他类型数据库的定义相似,都是关于数据库所用的模型的。不过,原生 XML 数据库所能存储的信息比模型中定义的多。例如,它可支持基于XPath 数据模型的查询,但所用的存储格式是纯文本。CDATA 部分和实体用法也可存储在数据库中,但是模型中没有包括。
 
定义的第二个部分是说原生数据库的基本存储单位是 XML 文件。看起来似乎也可存储 XML 文件片断,但几乎所有的原生 XML 数据库都是以文件方式存储的。(基本存储单位就是可以容纳一份数据的最低级的上下文 (context),相当于关系数据库中的行。它的存在并不妨碍以更小的数据单位来读取数据,比如文件片断或个别元素,同样也不影响将不同文件中的片断进行组合。从关系数据库的术语来讲,相当于数据虽然以行的形式存放,并不意味着无法读取某个字段的值,或从现有的数据行创建新一行数据。
 
该定义的第三部分讲的是底层的数据存储格式并不重要。确实如此,正如关系数据库所使用的物理存储格式与数据库是不是关系型之间毫无关系。 
 
3.4、DOM简介
 
W3C已于2000年11月13日推出了规范DOM level 2,DOM(Document Object odel,文档对象模型)是HTML和XML文档的编程接口规范,它与平台和语言是无关的,因而可以用各种语言在各种平台上实现。该模型定义了THML和XML文件在内存中的逻辑结构(即为文档),提供了访问、存取THML和XML文件的方法。利用DOM规范,可以实现DOM 文档和XML之间的相互转换,遍历、操作相应DOM文档的内容。可以说,要自由的操纵XML文件,就要用到DOM规范。
 
DOM文档中的逻辑结构可以用节点树的形式进行表述。通过对XML文件的解析处理,XML文件中的元素便转化为DOM文档中的节点对象。DOM的文档节点有Document、Element、Comment、Type等等节点类型,其中每一个DOM文档必须有一个Document节点,并且为节点树的根节点。它可以有子节点,或者叶子节点如Text节点、Comment节点等。任何的格式良好的XML文件中的每一个元素均有DOM文档中的一个节点类型与之对应。利用DOM接口将XML文件转化成DOM文档后,我们就可以自由的处理XML文件了。
 
3.5、SAX简介
 
SAX是Simple API for XML的缩写,它并不是由W3C官方所提出的标准,可以说是“民间”的事实标准。实际上,它是一种社区性质的讨论产物。虽然如此,在XML中对SAX的应用丝毫不比DOM少,几乎所有的XML解析器都会支持它。 
    与DOM比较而言,SAX是一种轻量型的方法。我们知道,在处理DOM的时候,我们需要读入整个的XML文档,然后在内存中创建DOM树,如果文档较大将会耗费大部分计算机内存。这时候,一个较好的替代解决方法就是SAX,因为它是事件驱动的,也就是说,它并不需要读入整个文档,而文档的读入过程也就是SAX的解析过程。所谓事件驱动,是指一种基于回调(callback)机制的程序运行方法。
 
3.6、GML数据存储实现
 
3.6.1、GML存储模型设计
 
对XML数据模型进行扩展,设计一个适合GML空间数据存储、表达、查询的数据模型。一个GML文档可以表示为一棵有向图,由节点和有向边组成。节点V有三种类型:表示数值的节点(Vtype)、表示几何元素的节点(Vgeometry)和表示非几何元素的节点(Velement)。有向边也有三种类型:指向子元素的边(E)、指向属性的边(A)、链接边(R)。除了节点和有向边外,还要存储属于同一父节点的子元素的顺序。一个GML文档可以模型化为:G = (V, E, A, R, O)。
 
3.6.2、GML 模式映射和解析器设计
 
GML模式映射研究如何将GML的基本模式、应用模式映射为GML数据库模式,即GML存储模型。GML解析器利用DOM或SAX模型,借助GML模式映射,对GML文档进行解析,并将GML空间数据存入GML数据库。
 
3.6.3、研究进展
 
GML数据数据库引擎的功能设计包括存储、查询、更新、删除和数据安全策略等。目前主要的工作是数据存储功能的设计,我们在现有的原生XML数据库基础进行扩充,使之适用于GML数据的存储管理,目前的一部分原生XML数据库引擎提供源码开放,它提供的一些软件包可以直接利用。开发环境采用JBuilder X,它提供了丰富的控件资源和数据结构软件包,同时Java是一种跨平台语言,使我们的数据库设计可以达到易用性的原则。下面是我们初步实现的操作界面。
 
 
4、结束语
 
由于GML数据的存储研究还属于一个崭新的领域,目前还没有一个比较完毕的技术实现,目前国内外有不少GIS界的学者正在致力于这方面的研究,相信在不久的将来将会出现具有如同传统的关系数据库功能的GML数据库系统。  
原创粉丝点击