地理数据库怎样存储在 DBMS 中?
许多地理数据库都利用关系数据库(如 Oracle、IBM DB2 或 Microsoft SQL Server)存储数据和管理地理信息。这样可以将地理数据库扩展到极大规模,并同时支持大量用户和编辑人员。而且,这类地理数据库还支持多种关键的数据管理工作流,如版本化、复制和历史存档。
地理数据库的物理存储
地理数据库的主要存储机制是表存储。表或者以文件的形式存储到磁盘上,或者直接存储到 DBMS 的内容中,具体如下:
地理数据库的类型 |
数据存储方法 |
---|---|
个人地理数据库 |
Microsoft Access |
文件地理数据库 |
包含数据文件的文件系统文件夹 |
ArcSDE for SQL Server Express(附带 ArcGIS for Desktop [标准版或高级版]、ArcGIS Engine 以及工作组级别的 ArcGIS for Server) |
Microsoft SQL Server Express Edition |
包括在企业级的 ArcGIS for Server 中的 ArcSDE 地理数据库支持。(这需要您获取自己的 DBMS。) |
|
存储和管理空间数据
表
DBMS 中的地理数据库存储包含两组表 - 数据集表(用户定义的表)和系统表。
- 数据集表 - 地理数据库中的每个数据集都存储在一个或多个表中。这些数据集表使用系统表管理数据。
- 系统表 - 地理数据库系统表用于追踪每个地理数据库的内容。它们实质上描述的是用于指定所有数据集定义、规则和关系的地理数据库方案。这些系统表包含并管理元数据,所有这些元数据均为实现地理数据库属性、数据验证规则和行为所需。
从 ArcGIS 10 开始,这些表的内部结构进行了重构。在 ArcGIS 10 之前的版本中,与地理数据库方案相关的信息存储在超过 35 个地理数据库系统表内,而在 ArcGIS 10 中则被合并为四个主表:
- GDB_Items:包含地理数据库中的所有项(例如要素类、拓扑和属性域)的列表
- GDB_ItemTypes:包含识别的项类型(例如表)的预定义列表
- GDB_ItemRelationships:包含各个项之间的方案关联,例如要素数据集中包含哪些要素类
- GDB_ItemRelationshipTypes:包含识别的关系类型(例如 DatasetInFeatureDataset)的预定义列表
例如,在 SQL Server DBMS 中,使用二进制几何存储机制存储在地理数据库中的简单要素类由业务表、关联要素 (f) 表和空间索引 (s) 表组成。这些表使用一组系统表:i 表、gdb_items、sde_table_registry、sde_layers 和 sde_spatial_references 系统表。这些表用于追踪有关要素类的信息。
每个 DBMS 中用于存储和管理地理数据库的一组表和列都会稍有不同。用于存储地理数据库的 DBMS 的类型会影响物理存储方案。
附加文件
地理数据库还使用 DBMS 中的触发器、函数、存储过程和用户定义的类型来实现功能和保持一致性。没有必要详细讨论这些内容,因为您无需与这些数据库对象中的大多数进行交互。
如果想使用 SQL 访问地理数据库中的信息,请参阅对企业级地理数据库使用 SQL 的快速浏览了解相关基本知识。
有关数据集和系统表结构的详细信息,请参阅以下主题: