XML-Spalten in einer Geodatabase in DB2
XML ist ein offener Standard zum Definieren von Datenelementen innerhalb von Dokumenten. Um XML-Daten in einer IBM DB2-Datenbank zu speichern, können Sie native DB2 (PureXML)- oder ArcSDE-XML-Spalten verwenden.
Sie können benutzerdefinierte XML-Dokumente in beiden XML-Typen speichern. Der DBTUNE-Parameter XML_COLUMN_STORAGE steuert den XML-Typ, der verwendet wird. Die Standardeinstellung ist DB_XML. Standardmäßig wird daher der PureXML-Datentyp verwendet.
Sie müssen DB2 Text Search Extender installieren, um den ArcSDE-XML-Datentyp verwenden zu können.
Wenn Sie Net Search Extender verwendet haben, müssen Sie zu Text Search Extender migrieren. Nähere Informationen erhalten Sie im DB2 Information Center unter (http://publib.boulder.ibm.com/infocenter/db2luw/v9r7/index.jsp?topic=/com.ibm.db2.luw.admin.ts.doc/doc/c0053115.html).
XML-Spalten in ArcGIS for Desktop
XML-Spalten werden in der Geodatabase nicht vollständig unterstützt. Daher gilt Folgendes:
- Sie können den Inhalt einer XML-Spalte nicht in einer Tabelle in ArcCatalog in der Vorschau anzeigen. Die Spalte ist leer oder enthält unverständliche Zeichen.
- Auf der Registerkarte "Felder" im Dialogfeld "Eigenschaften" der Tabelle sind keine Datentypen für eine XML-Spalte aufgeführt.
- Eine Tabelle, die eine XML-Spalte enthält, kann nicht von einer Geodatabase in eine andere kopiert werden.
- Wenn Sie die Tabelle mithilfe von Geoverarbeitungswerkzeugen importieren oder exportieren, müssen Sie die XML-Spalte ausschließen.
- Sie können eine Tabelle mit einer XML-Spalte mithilfe von ArcCatalog nicht als versioniert registrieren.
- Wenn Sie eine Tabelle mit einer XML-Spalte in ArcMap öffnen, wird die XML-Spalte leer angezeigt.
- Zur Bearbeitung einer Tabelle mit einer XML-Spalte in ArcMap können Sie eine nicht versionierte Editiersitzung verwenden. Die XML-Spalte selbst kann jedoch nicht bearbeitet werden, nur die anderen Felder in der Tabelle.
XML-Spalten in einem DB2-DBMS
Wenn Sie den nativen DB2 PureXML-Typ verwenden, wird dieser nicht in zusätzlichen Geodatabase-Systemtabellen, sondern nur in den Systemtabellen von DB2 verfolgt. Informationen zu PureXML von DB2 finden Sie in der IBM DB2-Dokumentation.
Es gibt zwei verschiedene Typen von XML-Spalten, die Sie verwenden können: ArcSDE-XML oder DB2 PureXML. Welchen Sie in einem Dataset verwenden, das Sie in der Geodatabase erstellen, wird vom Parameter XML_STORAGE in der DBTUNE-Tabelle gesteuert.
Für ArcSDE-XML werden drei ArcSDE-Geodatabase-Systemtabellen verwendet, um XML-Spalten zu verwalten: SDE_XML_COLUMNS, SDE_XML_INDEX_TAGS und SDE_XML_INDEXES. Diese Tabellen gehören dem Geodatabase-Administratorbenutzer. Es gibt zwei weitere Tabellen für jede XML-Spalte, die verwendet werden, um XML-Dokumente zu speichern und zu indizieren: die Tabellen "SDE_XML_DOC<COLUMN_ID>" und "SDE_XML_IDX_<COLUMN_ID>". Diese Tabellen gehören dem Benutzer, der die Business-Tabelle besitzt, die die XML-Spalte enthält.
Bei der Verwendung von ArcSDE-XML werden die folgenden Tabellen erstellt. Diese Tabellen werden zum Speichern und Indizieren von XML-Dokumenten verwendet.
Nehmen Sie per SQL keine Änderungen an diesen Tabellen vor.
SDE_XML_COLUMNS
Wenn Sie einer Business-Tabelle eine ArcSDE-XML-Spalte hinzufügen, wird der SDE_XML_COLUMNS-Tabelle eine Zeile hinzugefügt. Diese Tabelle ist in jeder ArcSDE-Datenbank einmal vorhanden.
Feldname |
Feldtyp |
Beschreibung |
Null? |
---|---|---|---|
COLUMN_ID |
INTEGER |
Die Kennung der XML-Spalte und der Primärschlüssel der Tabelle Dieser Wert wird von ArcSDE zugewiesen, wenn die ArcSDE-XML-Spalte erstellt wird. |
NOT NULL |
REGISTRATION_ID |
INTEGER |
Die Kennung der Business-Tabelle, die die ArcSDE-XML-Spalte enthält, und der Fremdschlüssel für die Systemtabelle "TABLE_REGISTRY" |
NOT NULL |
COLUMN_NAME |
VARCHAR(32) |
Der Name der ArcSDE-XML-Spalte in der Business-Tabelle |
NOT NULL |
INDEX_ID |
INTEGER |
Die Kennung des mit der ArcSDE-XML-Spalte (falls vorhanden) verknüpften XPath-Indexes und der Fremdschlüssel für die Tabelle "SDE_XML_INDEXES" |
|
MINIMUM_ID |
INTEGER |
Der Wert der ursprünglichen Zahl, die in der ArcSDE-XML-Spalte der Business-Tabelle verwendet wurde, um einzelne XML-Dokumente zu identifizieren |
|
CONFIG_KEYWORD |
VARCHAR(32) |
Das DBTUNE-Konfigurationsschlüsselwort, dessen Parameter bestimmen, wie das XML-Dokument, die XML-XPath-Indextabellen und die für diese Tabellen erstellten Textindizes in der Datenbank definiert werden Weitere Informationen zu den DBTUNE-Schlüsselwörtern und ihren Parametern finden Sie unter Was sind DBTUNE-Konfigurationsschlüsselwörter und -Parameter? sowie unter DBTUNE-Konfigurationsparameter für DB2. |
|
XFLAGS |
INTEGER |
Ein Wert, der angibt, ob die Originaldokumente in der XML-Dokument-Tabelle komprimiert oder dekomprimiert gespeichert werden Standardmäßig werden Dokumente komprimiert; komprimierte Dokumente bieten bessere Performance. |
SDE_XML_INDEXES
Diese Tabelle ist in jeder Geodatabase einmal vorhanden. Sie enthält eine Zeile für jede ArcSDE-XML-Spalte, die einen XPath-Index hat.
Feldname |
Feldtyp |
Beschreibung |
Null? |
---|---|---|---|
INDEX_ID |
INTEGER |
Die Kennung des XPath-Indexes und der Primärschlüssel der Tabelle |
NOT NULL |
INDEX_NAME |
VARCHAR(32) |
Der Name des XPath-Indexes |
NOT NULL |
OWNER |
VARCHAR(32) |
Der Datenbankbenutzer, der die ArcSDE-XML-Spalte besitzt |
NOT NULL |
INDEX_TYPE |
INTEGER |
Ein Wert, der den Typ des XPath-Indexes angibt Bei ArcSDE 9.1 und höher gilt für den Indextyp SE_XML_INDEX_DEFINITION der Wert 2 und für den Indextyp SE_XML_INDEX_TEMPLATE der Wert 1. |
NOT NULL |
DESCRIPTION |
VARCHAR(64) |
Text, der den XPath-Index identifiziert Wenn eine Indexdefinitionsdatei verwendet wurde, um den Index zu erstellen, kann die Indexbeschreibung am Anfang der Datei angegeben werden. |
SDE_XML_INDEX_TAGS
Eine ArcSDE-XML-Spalte kann optional einen XPath-Index haben, mit dem Sie den Inhalt eines bestimmten XML-Elements oder -Attributs in jedem Dokument durchsuchen können. Die Definition, welche Elemente und Attribute in jedem XPath-Index enthalten oder ausgeschlossen sind, wird in dieser Tabelle aufgezeichnet.
Diese Tabelle ist in jeder Geodatabase einmal vorhanden. Sie enthält eine Zeile für jeden XPath, der mit einem XPath-Index einer ArcSDE-XML-Spalte verknüpft ist.
Feldname |
Feldtyp |
Beschreibung |
Null? |
---|---|---|---|
INDEX_ID |
INTEGER |
Die Kennung des mit einer ArcSDE-XML-Spalte (falls vorhanden) verknüpften XPath-Indexes und der Fremdschlüssel für die Tabelle "SDE_XML_INDEXES" |
NOT NULL |
TAG_ID |
INTEGER |
Die Kennung eines XPaths oder eines Tags |
NOT NULL |
TAG_NAME |
VARCHAR(1024) |
Ein absoluter XPath, der ein XML-Element oder ein Attribut identifiziert, das möglicherweise in einem XML-Dokument vorkommt Beispiel: /metadata/mdDateSt identifiziert ein XML-Element und /metadata/dataIdInfo/tpCat/TopicCatCd/@value identifiziert ein XML-Attribut. Diese XPaths dürfen keine Sternchen (*) enthalten, um auf eine Gruppe von XML-Elementen oder Attributen zu verweisen – jedes Element oder Attribut wird mit den in dieser Tabelle angegebenen XPaths genau abgeglichen. Elemente können in einem gültigen XML-Dokument nicht * genannt werden. |
NOT NULL |
DATA_TYPE |
INTEGER |
Ein Wert, der angibt, ob das XML-Element oder das Attribut als Zahl, als VARCHAR oder als Text indiziert wird Eine 1 gibt an, dass der Inhalt des Tags als Text indiziert wird; eine 2 gibt an, dass der Inhalt des Tags als Zahl indiziert wird; eine 3 gibt an, dass der Inhalt des Tags als VARCHAR indiziert wird. |
NOT NULL |
TAG_ALIAS |
INTEGER |
Eine Zahl, die verwendet werden kann, um einen XPath zu identifizieren Beispiel: Das Z39.50-Kommunikationsprotokoll verweist mithilfe von numerischen Codes auf Inhalte, die durchsucht werden können. |
|
DESCRIPTION |
VARCHAR(64) |
Text, der den Inhalt identifiziert, der im XML-Element oder -Attribut enthalten sein sollte |
|
IS_EXCLUDED |
INTEGER |
Ein Wert, der angibt, ob das XML-Element im XPath-Index enthalten oder ausgeschlossen ist
|
NOT NULL |
SDE_XML_DOC<COLUMN_ID>
In der Tabelle "SDE_XML_DOC<COLUMN_ID>" wird das XML-Dokument gespeichert und ein Volltextindex des Dokumentinhalts verwaltet. Die Geodatabase enthält eine dieser Tabellen für jede ArcSDE-XML-Spalte. Die Zahl im Tabellennamen ist die Kennung der ArcSDE-XML-Spalte. Diese Tabelle enthält eine Zeile für jedes in der XML-Spalte gespeicherte ArcSDE-XML-Dokument.
Feldname |
Feldtyp |
Beschreibung |
Null? |
---|---|---|---|
SDE_XML_ID |
INTEGER |
Die Kennung für ein in der XML-Spalte gespeichertes ArcSDE-XML-Dokument und der Primärschlüssel für die Tabelle |
NOT NULL |
DOC_PROPERTY |
INTEGER |
Ein Wert, der angibt, ob beim Hinzufügen des Inhalts eines XML-Dokuments zum XPath-Index Konflikte festgestellt wurden 1 = ein Konflikt wurde festgestellt; beispielsweise wenn ein Element numerisch indiziert werden soll, aber das Dokument stattdessen in diesem Element eine Zeichenfolge enthält. NULL-Wert = es gab keine Probleme im Indizieren des Dokuments. |
|
XML_DOC |
BLOB |
Das XML-Dokument |
NOT NULL |
XML_DOC_VAL |
BLOB |
Der Inhalt des gesamten XML-Dokuments ohne XML-Tags und andere Markups Für diese Spalte wird standardmäßig ein Textindex erstellt; dieser Index wird verwendet, um auf Volltextabfragen zu reagieren. |
SDE_XML_IDX<COLUMN_ID>
Die Tabelle "SDE_XML_IDX<COLUMN_ID>" wird für ArcSDE-XML-Spalten erstellt, die einen XPath-Textindex haben. In dieser Tabelle wird der Inhalt (Text oder Zahlen) für jeden indizierten XPath gespeichert.
Die ID-Nummer im Tabellennamen ist die interne Registrierungsnummer für die ArcSDE-XML-Spalte.
Feldname |
Feldtyp |
Beschreibung |
Null? |
---|---|---|---|
XML_KEY_COLUMN |
INTEGER |
Die Kennung für den indizierten Wert und der Primärschlüssel für die Tabelle |
NOT NULL |
SDE_XML_ID |
INTEGER |
Die Kennung für das XML-Dokument, das den indizierten Wert enthält |
NOT NULL |
TAG_ID |
INTEGER |
Die Kennung für das Tag, das mit dem XPath-Index der ArcSDE-XML-Spalte verknüpft ist und das identifiziert, wo der Wert im Dokument gespeichert wird |
NOT NULL |
DOUBLE_TAG |
FLOAT |
Der indizierte Wert, wenn das Tag in der XPath-Indexdefinition als DOUBLE definiert ist |
|
STRING_TAG |
VARCHAR2(256) |
Der indizierte Wert, wenn das Tag in der XPath-Indexdefinition als VARCHAR definiert ist |
|
TEXT_TAG |
CLOB |
Der indizierte Wert, wenn das Tag in der XPath-Indexdefinition als STRING definiert ist |
Nachfolgend sehen Sie ein Diagramm einer Tabelle mit einer ArcSDE-XML-Spalte und die Systemtabellen, die zur Verfolgung verwendet wurden. Gestrichelte Linien geben implizite Beziehungen an; eine durchgezogene Linie bezeichnet explizit definierte Beziehungen zwischen Tabellen.
Bei der Speicherung von XML-Dokumenten in einer XML-Spalte in einer Geodatabase in DB2 werden die mit der Spalte verknüpften Textindizes standardmäßig nicht automatisch mit dem Text der neu hinzugefügten Dokumente aktualisiert. Noch nicht indizierte XML-Dokumente werden bei Suchvorgängen erst gefunden, nachdem die Indizes aktualisiert wurden.
ArcSDE stellt keine Dienstprogramme bereit, mit denen die Aktualisierung der Textindizes einer XML-Spalte manuell gestartet werden kann.
XML-Spalten in einem XML-Dokument
Sie können eine Tabelle, die eine XML-Spalte enthält, nicht in ein XML-Workspace-Dokument exportieren. Sie können sie in ein XML-Datensatzdokument exportieren, aber es ist innerhalb des Dokuments nicht möglich, die Spalte als XML zu unterscheiden.