第2章 Geodatabase体系结构2、1 Geodatabase体系结构用户通常认为geodatabase是地理信息的物理存储,但从根本来说,是使用DBMS或文件来存储的除了作为数据集集合的一个物理实例,每个geodatabase还有其他关键方面特征1、 geodatabase有一个广泛的信息模型来表达和管理地理信息这个信息模型的实现是通过一系列简单数据表,这些表是存储在要素类、栅格数据集和属性表中的另外,高级的GIS数据对象通过增加GIS行为、规则来管理空间完整性,以及增加工具来处理要素、栅格和属性表的大量的空间关系geodatabase的software logic提供了通用的application logic,贯穿整个ArcGIS,用于访问和处理各种数据格式的地理数据无疑,它是支持geodatabase的,并且支持shapefiles, CAD 文件, TIN's, grids, CAD 数据, imagery, 还有其他大量的GIS数据源geodatabase具有一个事务处理模型来管理GIS的数据工作流2、2 Geodatabase基于关系原则存储用户倾向于认为DBMS本质上是开放的,这是因为关系数据模型的简易性和灵活性,使得它能支持广泛的应用。
Geodatabase的存储模型是以DBMS原则为基础,利用了一系列简单却基本的关系数据库概念DBMS(File geodatabase 的文件系统)提供了简单而又合适的数据模型存储和操作表包括以下的关键概念:数据被组织为表表包含行表中所有的行具有相同的列每一列具有一个类型,如integer, decimal number, character, date等等关系类用于一个表中的行和另一个表中的行发生关联,这是以每个表中都有一个公共的列为基础的关系完整性规则存在于所有表中如,每一行总是有相同的列,一个域为每一列指定了有效值或者值范围等等对ArcSDE geodatabases来说,还有大量其他的DBMS功能可以应用:SQL,一系列关系函数和操作符可以用于操作表和表中的元素SQL操作符同时被设计为可以处理普通的关系数据类型,如integers, decimal numbers, dates, 和 characters例如,一个要素类以DBMS表的形式存储每一行代表一个要素,每一行中列描述了该要素的各种特征或属性,表中的某一列存储了该要素的几何形状(如point, line或polygon coordinates)。
在上面的实例中,shape字段存储了polygon形状在DBMS中大量的列类型用于shape字段可以是典型的binary large object (BLOB)类型或者是扩展的空间类型,它们能够被一些DBMS所支持如,ESRI提供了一个空间列类型用于在ArcSDE geodatabases存储要素,支持这种类型的关系数据库有Oracle, IBM DB2, 和InformixSQL操作表中的行、列这些列类型(numbers, characters, dates, BLOB's, spatial types等等)在SQL代数中被认为是对象DBMS管理这些简单的数据类型和表,同时其他应用逻辑实现更复杂的对象行为和完整性约束在关系数据库管理系统中实现更高层次的对象和行为 开发人员为了实现更高层次的具有行为和逻辑的对象,就需要写应用程序代码去实现它如,一个组织可能实现如下名为EMPLOYEES的表:上面的表是一个简单的关系数据表,包含行和列每一列的数据都隶属一个独特的数据类型,如character、date和number,DBMS就是在这个数据类型层次上操作信息的然而,简单的给一个DBMS增加这些信息,不会使DBMS变成一个payroll或employee管理信息系统。
增加一列名为“Dollars”用于存储带两位小数的数值,并不意味着将一个DBMS变为一个帐务清算系统要实现这些需要更高层次的应用逻辑实现支持雇佣行为的逻辑例子是雇用、实现薪水增长、员工辞职、晋升和奖金管理业务对象被建模为雇员和他们的姓名、薪水和雇用日期,为了实现这些对象的行为和完整性需要更复杂的和聚焦的应用逻辑相似的业务对象也普遍应用于GIS如,topologies, networks, linear referencing systems, raster catalogs, annotations, terrains, map layers等等,都是高级对象用于实现GIS的行为对于其他的DBMS应用,具有空间属性类型的表是对他们自己的GIS应用是不够的简单的DBMS列类型和geodatabase应用对象如topologies对建立地理信息系统是必须的2、3 应用逻辑属于什么?用户可以用很多方法实现这种高层次的逻辑例如,应用逻辑可以按如下被实现:DBMS中的Stored procedures和database triggers;扩展DBMS的数据类型;建立一个单独的应用逻辑层用于操作表中的行和列类型。
在过去的二十年中不计其数的DBMS实现已经证明使用应用逻辑层对于高级应用是一个明智的选择如,通用的customer information systems (CIS), enterprise resource planning (ERP) systems和帐务清算包都是在应用逻辑层实现了高级的应用,它提供了更多的开放性和可扩展性,高性能操作,丰富的工具包和大大的灵活性用户通过应用逻辑层与系统交互,执行版本管理,实现大量的操作,仅在focused activities中使用SQL分离的应用逻辑层置于数据层之上允许相同的逻辑被应用于DBMS,files或其他的数据存储格式这使得这种体系结构更开放如,在ArcGIS中geodatabase的应用逻辑层也可以用于读取和操作所有的地理数据源CAD data, shapefiles, MapInfo data, Intergraph GeoMedia files等等2、4 Geodatabase是object-relational的结构Geodatabase采用两层结构:数据存储层和应用层数据存储层是将GIS数据存储为File、XML、DBMS等多种格式,而应用层则是维护数据的高级逻辑和行为,例如Feature Classes、Raster Dataset、Topology、Network、Address Locators等等。
多层的geodatabase体系结构有时被称为object-relational模型Geodatabase管理地理数据集的功能由ArcGIS软件和DBMS共同实现管理地理数据集功能的某些方面,如disk-based存储,属性类型的定义,查询处理及多用户版本处理都被委托给了DBMSGIS应用程序保留了一些功能,如定义具体DBMS的schema,用于表达各种各样的datasets和domain-specific逻辑,以保持基本记录的完整性和有效性实际上,DBMS作为一种存储地理数据集的实现机制而被使用但是,DBMS并没有完全定义地理数据的语义因此可以认为:geodatabase采用两层体系结构,数据存储层和应用层,在数据存储层实现数据存储和检索,在应用层实现高层数据完整性和信息处理在其他高级DBMS应用中geodatabase也可以通过这种两层应用结构而实现Geodatabase对象在DBMS表中以行的形式存储,要素行为由geodatabase应用逻辑提供所有的ArcGIS应用与geodatabase的这种通用的GIS对象模型通信,而不是实际的基于SQL的DBMS instanceGeodatabase软件组件实现了这种通用模型的行为和完整性规则,并转换数据请求到合适的物理数据库设计。
ArcSDE软件提供了ArcGIS和DBMS之间的一个通用网关2、5 Geodatabase在关系数据库存储 在geodatabase的核心是标准的关系数据库模式(一系列DBMS表、列类型、索引等等)这种简易的物理存储与宿主在应用逻辑层的高层应用相协调,并受它们的控制,应用层可以是ArcGIS Desktop、嵌入式ArcGIS engine logic、或者ArcGIS server这些应用中都包含用于定义通用GIS信息模型的geodatabase对象,并且为所有的GIS应用程序和用户所共享Geodatabase对象的目的就是暴露高层GIS应用模型给客户端,选择合适的存储模型存储应用模型的具体实现细节,如存储在标准的DBMS表中、file geodatabases, 和 XML Geodatabase的存储包括基于每个地理数据集的schema和rule,还有简单的空间数据和属性数据的表存储Geodatabase的schema包含定义、完整性规则和地理数据集的行为这些具体包括要素的properties、topologies, networks, raster catalogs, relationships, domains等等。
Schema保存在DBMS的geodatabase元数据表集合中,这些元数据定义了地理信息的完整性和行为空间表达要么以矢量要素或栅格数据集的形式用传统的二维表来存储例如,一个DBMS表可以存储一个要素类,表中每一行代表一个要素每一行的Shape列都保存了geometry或者是要素的shape,shape列通常保存的geometry是这两种列类型中的一种:BLOB column typespatial column type,如果DBMS支持它要素类是相同类型要素的集合,具有相同的几何类型,如点、线或多边形,具有相同的属性列集合,要素类通常可以由一个独立的表管理栅格和影像数据集同样也由关系表存储和管理栅格数据通常比较大,存储的时候需要一个Side Table来存储,将栅格数据集切为小片,或者Blocks,存储在Raster表中,通过Side表的每一行记录去记录栅格中的每一个Block列类型存储矢量和栅格的geometry随着数据库的不同而不同当一个DBMS支持空间类型扩展时,geodatabase可以使用这些类型来存储空间几何形状ESRI也参与了很多扩展空间SQL,如作为SQL 3 MM Spatial和OGC Simple Features SQL specifications的主要创作者。
ESRI不仅关注支持独立的Oracle Spatial types,同时也支持这些类型,使用DBMS的标准来存储geodatabase目前,支持geodatabase的含有空间类型的DBMS有三种:使用ESRI 的spatial type的Oracle或Oracle Spatial type使用Spatial Extender Geometry Object的IBM DB2使用Spatial DataBlade Geometry Object 的Informix2、6 Geodatabase的事务管理事务是对数据库变动的记录块GIS 数据库, 像其它数据库应用一样, 必须支持执行数据完整性和应用行为的更新事务在很多情况下,用户可以使用DBMS的事务处理框架来管理数据编辑和geodatabase的更新但是,GIS用户普遍有具体的专业事务处理要求,其中最重要的就是这些事务要跨越很长的时间(有时是几天和几个月)另外,大多数GIS编辑包括协调(orchestrating)多个表中的多行变化和以单独的统一的事务管理这些。