DB2 中地理数据库内的 XML 列
XML 是一种用于在文档内部定义数据元素的开放标准。要将 XML 数据存储在 IBM DB2 数据库中,可使用 ArcSDE XML 或本机 DB2 (PureXML) XML 数据类型。
您可以将用户定义的 XML 文档存储为任一类型的 XML 格式。参数 XML_COLUMN_STORAGE DBTUNE 用于控制所采用的 XML 的类型。默认情况下,此参数设置为 DB_XML。因此,默认情况下使用 PureXML 数据类型。
您必须安装 DB2 Text Search Extender 才能使用 ArcSDE XML 数据类型。有关执行此操作的方法,请参阅配置 DB2 数据库以支持 ArcSDE XML 列。
ArcSDE XML 数据类型用于存储元数据文档集,以便支持 ArcIMS 元数据服务。因此,如果使用 ArcIMS 元数据服务,则必须将参数 XML_COLUMN_STORAGE 设置为 SDE_XML。
ArcGIS Desktop 中的 XML 列
地理数据库不完全支持 XML 列。因此,请注意以下事项:
- 您无法在 ArcCatalog 中预览表的 XML 列的内容。XML 列将显示为空白或在其中出现异常字符。
- 在表的“属性”对话框的“字段”选项卡中,不会列出任何用于 XML 列的数据类型。
- 您无法在各地理数据库之间复制和粘贴含有 XML 列的表。
- 如果使用地理处理工具对表执行导入或导出操作,则必须排除 XML 列。
- 您无法使用 ArcCatalog 将含有 XML 列的表注册为版本。
- 如果在 ArcMap 中打开含有 XML 列的表,XML 列将显示为空白。
- 要在 ArcMap 中对含有 XML 列的表进行编辑,可以使用非版本化的编辑会话。但是,您不能编辑 XML 列本身,而只能编辑表中的其他字段。
DB2 DBMS 中的 XML 列
如果使用本机 DB2 PureXML,将没有额外地理数据库系统表对其进行跟踪,而在 DB2 的系统表中对其进行跟踪。有关 DB2 的 PureXML 信息,请参阅 IBM 的 DB2 文档集。
有以下两种不同类型的 XML 列可供使用:ArcSDE XML 或 DB2 PureXML。使用 DBTUNE 表中的参数 XML_STORAGE,可以控制在数据集(创建于地理数据库中)中使用哪种 XML 类型。
对于 ArcSDE XML,有三个 ArcSDE 地理数据库系统表可用于管理 XML 列:SDE_XML_COLUMNS、SDE_XML_INDEX_TAGS 和 SDE_XML_INDEXES。这三个表的所有者是 ArcSDE 管理员用户。ArcSDE 还会为每个 XML 列额外创建两个表,分别用于存储 XML 文档和为其建立索引:SDE_XML_DOC<COLUMN_ID> 和 SDE_XML_IDX_<COLUMN_ID> 表。如果某用户是含有 XML 列的业务表的所有者,则该用户也是这两个表的所有者。
使用 ArcSDE XML 时,ArcSDE 会创建以下各个表。可使用这些表来存储 XML 文档以及为其编写索引。
请勿使用 SQL 更改以下任何表。
SDE_XML_COLUMNS
每当在业务表中添加一个 ArcSDE XML 列,就会向 SDE_XML_COLUMNS 表中添加一行。该表在每个 ArcSDE 数据库中都会出现一次。
字段名 |
字段类型 |
描述 |
是否允许为空 |
---|---|---|---|
COLUMN_ID |
INTEGER |
XML 列的标识符和表的主键 在创建 ArcSDE XML 列时由 ArcSDE 分配此值。 |
NOT NULL |
REGISTRATION_ID |
INTEGER |
包含 ArcSDE XML 列的业务表的标识符和系统表 TABLE_REGISTRY 的外键 |
NOT NULL |
COLUMN_NAME |
VARCHAR(32) |
业务表中 ArcSDE XML 列的名称 |
NOT NULL |
INDEX_ID |
INTEGER |
与 ArcSDE XML 列(如果存在)相关联的 XPath 索引的标识符和 SDE_XML_INDEXES 表的外键 | |
MINIMUM_ID |
INTEGER |
在业务表的 ArcSDE XML 列中使用的初始编号值,用于标识各 XML 文档 | |
CONFIG_KEYWORD |
VARCHAR(32) |
DBTUNE 配置关键字,它的参数可确定如何在数据库中定义 XML 文档、XML XPath 索引表以及针对这些表所创建的文本索引 有关 DBTUNE 关键字及其参数的详细信息,请参阅什么是 DBTUNE 配置关键字和参数?和 DB2 的 DBTUNE 配置参数。 | |
XFLAGS |
INTEGER |
该值用于指明 XML 文档表中的原始文档是以压缩形式存储还是以解压缩形式存储 默认情况下,文档以压缩形式存储,这是因为压缩后的文档可以提高性能。 |
SDE_XML_INDEXES
该表在每个 ArcSDE 数据库中都会出现一次。该表为具有 XPath 索引的每个 ArcSDE XML 列都提供了一行空间。
字段名 |
字段类型 |
描述 |
是否允许为空 |
---|---|---|---|
INDEX_ID |
INTEGER |
XPath 索引的标识符和表的主键 |
NOT NULL |
INDEX_NAME |
VARCHAR(32) |
XPath 索引的名称 对于与 ArcIMS 元数据服务相关联的 XPath 索引,其名称为 ims_xml#,其中 # 是元数据服务业务表中的 ArcSDE XML 列的标识符。 |
NOT NULL |
OWNER |
VARCHAR(32) |
拥有 ArcSDE XML 列的数据库用户 对于 ArcIMS 元数据服务,该字段用于指代在服务的 ArcXML 配置文件中指定的用户。 |
NOT NULL |
INDEX_TYPE |
INTEGER |
该值用于指明 XPath 索引类型 在 ArcGIS 9.1 及更高版本中,值为 2 时表示索引类型 SE_XML_INDEX_DEFINITION,值为 1 时表示索引类型 SE_XML_INDEX_TEMPLATE。对于与 ArcIMS 元数据服务相关联的 XPath 索引,只支持索引类型 SE_XML_INDEX_DEFINITION。 |
NOT NULL |
DESCRIPTION |
VARCHAR(64) |
用于标识 XPath 索引的文本 如果已使用索引定义文件创建索引,则可以在文件顶部指定索引描述。 |
SDE_XML_INDEX_TAGS
ArcSDE XML 列可以使用 XPath 索引(是否使用取决于具体需要),这使您可以对每个文档中的特定 XML 元素或属性的内容进行搜索。有关每个 XPath 索引中包含或排除哪些元素和属性都在此表中进行定义。
该表在每个 ArcSDE 数据库中都会出现一次。该表为与 ArcSDE XML 列的 XPath 索引所关联的每个 XPath 都提供一行空间。
字段名 |
字段类型 |
描述 |
是否允许为空 |
---|---|---|---|
INDEX_ID |
INTEGER |
与 ArcSDE XML 列(如果存在)相关联的 XPath 索引的标识符和 SDE_XML_INDEXES 表的外键 |
NOT NULL |
TAG_ID |
INTEGER |
XPath 或标记的标识符 |
NOT NULL |
TAG_NAME |
VARCHAR(1024) |
对 XML 文档中可能出现的 XML 元素或属性进行标识的绝对 XPath 例如,/metadata/mdDateSt 用于标识 XML 元素,/metadata/dataIdInfo/tpCat/TopicCatCd/@value 用于标识 XML 属性。 这些 XPath 不得使用星号 (*) 来指代一组 XML 元素或属性,每个元素或属性都按照此表中指定的 XPath 进行精确匹配。在有效的 XML 文档中,不能将元素命名为 *。 |
NOT NULL |
DATA_TYPE |
INTEGER |
该值用于指明 XML 元素或属性的索引形式是数字、变长字符还是文本 1 表示标记内容的索引形式是文本;2 表示标记内容的索引形式是数字;3 表示标记内容的索引形式是变长字符。 |
NOT NULL |
TAG_ALIAS |
INTEGER |
可以用来标识 XPath 的数字 例如,Z39.50 通信协议使用数字代码指代可以搜索的内容。 此列不适用于 ArcIMS Z39.50 连接器。 | |
DESCRIPTION |
VARCHAR(64) |
对 XML 元素或属性中应包含的内容进行标识的文本 | |
IS_EXCLUDED |
INTEGER |
该值用于指明 XPath 索引中是包含还是排除 XML 元素
|
NOT NULL |
SDE_XML_DOC<COLUMN_ID>
SDE_XML_DOC<COLUMN_ID> 表用于存储 XML 文档并对 XML 文档内容的全文索引进行维护。ArcSDE 数据库中针对每个 ArcSDE XML 列都有一个这样的表。表名称中的数字是 ArcSDE XML 列的标识符。该表为存储在 ArcSDE XML 列中的每个 XML 文档都提供了一行空间。
字段名 |
字段类型 |
描述 |
是否允许为空 |
---|---|---|---|
SDE_XML_ID |
INTEGER |
存储在 ArcSDE XML 列中的 XML 文档的标识符和表的主键 |
NOT NULL |
DOC_PROPERTY |
INTEGER |
该值用于指明在向 XPath 索引添加 XML 文档内容时是否发现任何冲突 1 = 发现一处冲突,例如,某个元素的索引形式本应是数字,而文档却在该元素中包含一个字符串。 NULL 值 = 为文档建立索引时未出现任何问题。 | |
XML_DOC |
BLOB |
XML 文档 |
NOT NULL |
XML_DOC_VAL |
BLOB |
删除了所有 XML 标记和其他置标的整个 XML 文档的内容 默认情况下,系统为该列建立文本索引;此索引用于响应全文查询。对于 ArcIMS 元数据服务,此索引用于响应 FULLTEXT 请求。 |
SDE_XML_IDX<COLUMN_ID>
SDE_XML_IDX<COLUMN_ID> 表是针对具有 XPath 文本索引的 XML 列而创建的。此表用于存储已建立索引的每个 XPath 的文本或数字内容。
表名称中的 ID 号是 ArcSDE XML 列的内部注册号。
字段名 |
字段类型 |
描述 |
是否允许为空 |
---|---|---|---|
XML_KEY_COLUMN |
INTEGER |
索引值的标识符以及表的主键 |
NOT NULL |
SDE_XML_ID |
INTEGER |
包含索引值的 XML 文档的标识符 |
NOT NULL |
TAG_ID |
INTEGER |
与 ArcSDE XML 列的 XPath 索引相关联的标记的标识符,用于标识值在文档中的存储位置 |
NOT NULL |
DOUBLE_TAG |
FLOAT |
在 XPath 索引定义中将标记定义为 DOUBLE 时的索引值 | |
STRING_TAG |
VARCHAR2(256) |
在 XPath 索引定义中将标记定义为 VARCHAR 时的索引值 | |
TEXT_TAG |
CLOB |
在 XPath 索引定义中将标记定义为 STRING 时的索引值 |
下图展现了一个包含 ArcSDE XML 列的表以及用于追踪 ArcSDE XML 列的几个系统表。虚线表示表之间的隐含关系;实线表示表之间明确定义的关系。
默认情况下,当 XML 文档存储在 DB2 地理数据库的 XML 列中时,与列相关的文本索引无法通过自动升级来包含新文档中的文本。只有文本索引更新完毕,任何未进行索引的 XML 文档才能通过搜索找到。
ArcSDE 不提供任何可用于手动升级到 XML 列文本索引的工具。对于与 ArcIMS 元数据服务相关的 XML 列,ArcIMS 提供了配置选项和用于更新文本索引的命令行工具。有关升级文本索引的信息,请参阅由 ArcIMS 提供的 ArcIMS 帮助以获取各选项的信息。
XML 文档中的 XML 列
您不能将包含 XML 列的表导出到 XML 工作空间文档中。可以将其导出到 XML 记录集文档中,但该文档中不存在任何可以用来区辨出 XML 列的元素。