-
In
der Vergangenheit wurde die Unterstützung für komplexe Datenmodelle, für die eine
Integration erforderlich war, innerhalb jeder Datenquelle oder durch
Code bereitgestellt, der vom Kunden oder Berater geschrieben wurde.
Beispielsweise ist die komplexe Datenhierarchie, die in Beilstein-Datenbanken
verwendet wird, in Beilstein selbst installiert. Relationale Datenbanken,
wie beispielsweise Oracle, besitzen diese Fähigkeit nicht und erfordern
Fachwissen über
die zu Grunde liegende Tabellenstruktur, die strukturierte Abfragesprache
SQL und Programmierung, um die Daten auf eine Weise zu integrieren,
dass auf sie durch Endbenutzer zugegriffen werden kann.
-
Ein
bestehendes Integrationssystem ist ISIS ("Integrated Scientific Information System"), ein Produkt von
MDL Information Systems, Inc. in San Leandro, Kalifornien. ISIS
ist ein führendes
Informatiksystem in der Biowissenschafts- und Chemie-Branche. Die
ISIS/Host-API ist eine C-Schnittstelle, die eine Integration von Datenquellen
und Struktursuche bereitstellt. Die Hview ist eine bearbeitbare
Textdatei, die ISIS/Host darüber informiert,
wie der Endbenutzer diese Integration sehen wird. Unter Verwendung
von Hview kann ISIS/Host ähnliche
Datenbanken öffnen,
die sich auf einem oder mehreren Host-Rechnern befinden, und für die ISIS-Benutzer
vereinheitlichte Datensichten darstellen.
-
Obwohl
die Hview eine leistungsstarke Möglichkeit
zum Beschreiben von Datenmodellen bereitstellt, weist sie einige
beträchtliche
Einschränkungen
auf. Erstens ist sie zu starr. Zum Beispiel kann ein vorgegebenes
Datenmodell als viele verschiedene Hierarchien betrachtet werden;
manchmal ist es sogar sinnvoll, eine Hierarchie abzufragen und eine
andere abzurufen. In der ISIS-Domäne ist das Betrachten von Daten über verschiedene
Hviews problematisch, und es kann erforderlich werden, dass ein
Programmierer einen kundenspezifischen Code schreiben muss. Zweitens
unterstützen
Hviews eine begrenzte Gruppe von Datenbeziehungen. Das Drehen von
Daten ist eine Funktionalität,
die fast jeder Kunde braucht, die aber von ISIS/Host nicht direkt
unterstützt
wird. Selbst im einfachsten Fall einer Drehung ist das Suchen und
Abrufen von Daten ein zweistufiger Prozess; in den meisten Fällen ist
er viel komplexer. Schließlich
ist die Syntax von Hviews obskur; einige Firmen haben Experten,
die sich nur um das Schreiben und Verwalten von Hviews kümmern. Obwohl der
zu Grunde liegende Prozess des Beschreibens von komplexen Datenmodellen
immer Fachleute erfordern kann, sollte die verwendete Syntax den
Prozess einfacher und nicht schwieriger machen.
-
Ziele
einer bevorzugten Ausführungsform
der vorliegenden Erfindung umfassen Folgendes. Erstens sollte das
System flexibel sein und es einfacher machen, mehrere hierarchische
Datensichten des gleichen Datenmodells bereitzustellen. Zweitens
sollte das System erweiterbar sein, um die Definition neuer, unvorhergesehener
Datenbeziehungen zu gestatten. Drittens sollte der Prozess des Beschreibens
eines Datenmodells durch eine obskure Syntax nicht noch schwieriger
gemacht werden.
-
Kurzdarstellung
der Erfindung
-
In
einer bevorzugten Ausführungsform
der vorliegenden Erfindung wird die Integration über eine Integrationsdatenquelle
(Integrated Data Source – IDS)
bereitgestellt. Auf diese Datenquelle kann zugegriffen werden, und
sie lässt
sich unter Verwendung von Standardschnittstellen manipulieren; Abfragen
können
unter Verwendung hierarchischer SQL- (UQL) Erweiterungen vorgenommen
werden, und die Daten können
in hierarchischen Datensatzgruppen wieder zurückgegeben werden. (Die vereinheitlichte
Abfragesprache UQL (Unified Query Language) wird im Folgenden ausführlicher
erläutert.)
-
Die
IDS stellt ein Verfahren bereit, um hierarchische Abfragen über mehrere
Datenquellen übergreifend über ein
vordefiniertes Datennetzwerk vorzunehmen. In der IDS sind die Datennetzwerke
aus "Knoten" und "Verknüpfungen" aufgebaut. Ein Datennetzwerk
ersetzt mehrere Hviews. Jeder Knoten in dem Netzwerk ist eine relationale
Tabelle oder eine andere Datenquelle. Jede Kante in dem Netzwerk
ist eine XML-definierte Verknüpfung,
welche die Beziehung zwischen den zwei Knoten beschreibt. Die Verknüpfungen
können
in statischen Dateien definiert oder in einfachem Java-Code während der
Laufzeit erstellt werden.
-
Im
Gegensatz zu dem Hview-Modell sind die durch die IDS assemblierten
Datensichten nicht statisch. Es können viele verschiedene Hierarchien
dynamisch aus einem einzigen Datennetzwerk aufgebaut werden, abhängig von
dem Pfad, der durch das Netzwerk genommen wird. Der Anfangspunkt
in dem Netzwerk wird der Stamm der aufgebauten Hierarchie. Ausgehend
von einer einzelnen Abfrage gibt es viele Wege, wie die Abfrage
auf das Netzwerk angewendet werden kann, was zu verschiedenen Hierarchien
führt.
Diese Hierarchien spiegeln verschiedene Beziehungen der Daten wider,
die in die Abfrage einbezogen sind.
-
Jede
Kante in dem Netzwerk wird durch eine Verknüpfung definiert, welche die
Datenbeziehung zwischen den zwei Knoten beschreibt. Diese Datenbeziehung
kann eine Vielfachheit von Eins-zu-Eins oder Eins-zu-Viele aufweisen
und in eine Umwandlung der sich daraus ergebenden Daten (z.B. Drehen)
einbezogen sein. Verknüpfungen
sind richtungsbestimmt; um eine Verknüpfung in zwei Richtungen zu
haben, werden zwei Verknüpfungen
definiert.
-
Eine
vorgegebene Verknüpfung
kapselt die Implementierung einer bestimmten Datenbeziehung ein, und
umfasst das Übersetzen
der Abfrage- und Abrufdaten. Die meisten Verknüpfungen werden aufgebaut, indem
eine aus einer kleinen Gruppe von Basisverknüpfungen erweitert wird, und
anschließend
einige Methoden unwirksam gemacht werden. Allgemeine Einzelheiten
zu Verknüpfungen
umfassen:
- 1. Verknüpfungen beschreiben eine Beziehung
zwischen zwei Datengruppen.
- 2. Eine vorgegebene Datengruppe kann eine relationale Tabelle,
SQL-Anweisung, Berechnung,
Datenquelle usw. sein.
- 3. Beziehungen können
Eins-zu-Eins, Eins-zu-Viele, Viele-zu-Viele sein.
- 4. Verknüpfungen
sind zuständig
für das
Generieren von SQL zum Suchen und Abrufen der mit ihnen verbundenen
Daten.
- 5. Verknüpfungen
rufen Daten entweder sofort ab oder stellen den Abruf bis zur Anforderung
zurück.
- 6. Verknüpfungen
können
Daten transparent umwandeln (z.B. Drehen).
- 7. Verknüpfungen
werden problemlos erweitert, um neue Beziehungen oder eine neue
Funktionalität
zu unterstützen.
-
Eine
bevorzugte Verfahrens-Ausführungsform
des Erfindungsgegenstands umfasst ein Verfahren zum dynamischen
Erstellen von Hierarchien, die in Datenbanksuchen verwendet werden,
umfassend die folgenden Schritte: (a) Definieren eines Datennetzwerks;
(b) Empfangen einer Abfrage in Bezug auf Daten, die in einer oder
mehreren Datenbanken gespeichert sind; und (c), wenigstens basierend
auf der Abfrage und dem Datennetzwerk, dynamisches Aufbauen einer
Hierarchie. Zugehörige
Ausführungsformen
enthalten Folgendes: (1) das Datennetzwerk umfasst Knoten und Verknüpfungen;
(2) der Schritt des Definierens eines Datennetzwerks umfasst das
Verknüpfen
von einem oder mehreren Ursprungsknoten zu einem oder mehreren über Verknüpfungen
verbundene Knoten; (3) die Verknüpfungen
umfassen Ausgabefeld-Elemente
und definieren Beziehungen zwischen den Knoten; (4) eine Hierarchie
wird basierend auf Ausgabefeldern und Beziehungen aufgebaut; (5)
es gibt einen Schritt zum Identifizieren einer Stammverknüpfung in
einem Datennetzwerk auf der Basis einer Abfrage; (6) das Datennetzwerk
wird auf der Basis eines relationalen Datenmodells definiert; (7)
der Schritt des Definierens eines Datennetzwerks umfasst das Analysieren
eines Datenmodells, um Objekte zu identifizieren, die herausgestellt
werden sollen; (8) der Schritt des Definierens eines Datennetzwerks
umfasst das Analysieren eines Vererbungsbaums von identifizierten
Objekten; (9) der Schritt des Definierens eines Datennetzwerks umfasst
das Analysieren von Beziehungen zwischen Objekten; (10) Beziehungen
zwischen Objekten umfassen eine Vielfachheit von Beziehungen und
wechselseitigen Beziehungen; (11) der Schritt des Definierens eines
Datennetzwerks umfasst das Definieren von Verknüpfungen für jedes der Objekte; (12) der Schritt
des Definierens von Verknüpfungen
für jedes
der Objekte resultiert in der Herausstellung relevanter Daten in
einer Hierarchie, die für
das Objekt geeignet ist; (13) die Verknüpfungen bilden untergeordnete
Netzwerke aus; (14) für
jedes untergeordnete Netzwerk werden die darin befindlichen Verknüpfungen
modifiziert, um ihre Beziehungen zwischen Objekten in dem Netzwerk
widerzuspiegeln; (15) die Verknüpfungen
umfassen Verknüpfungen,
die Daten umwandeln; und (16) die Verknüpfungen umfassen Verknüpfungen,
die Daten aus externen Quellen integrieren.
-
Eine
weitere bevorzugte Verfahrens-Ausführungsform des Erfindungsgegenstands
umfasst ein Verfahren zum Abfragen eines Datennetzwerks, umfassend
die folgenden Schritte: (a) Auswählen
gewünschter Felder;
(b) Angeben eines Stamms; (c) Angeben einer Suchbedingung; und (d)
Angeben eines Pfads für
jedes von einem oder mehreren der gewünschten Felder. Zugehörige Ausführungsformen
enthalten Folgendes: (1) der Schritt des Angebens eines Stamms umfasst
das Angeben einer FROM-Klausel; (2) jeder Pfad entspricht einer
Gruppe von Verknüpfungen;
und (3) die Gruppe von Verknüpfungen
umfasst eine oder mehrere der folgenden Eins-zu-Viele-Verknüpfung, Eins-zu-Eins-Verknüpfung, Dreh-Verknüpfung.
-
Eine
bevorzugte System-Ausführungsform
des Erfindungsgegenstands umfasst ein System zum dynamischen Erstellen
von Hierarchien, die in Datenbanksuchen verwendet werden, umfassend:
(a) Mittel zum Definieren eines Datennetzwerks; (b) Mittel zum Empfangen
einer Abfrage in Bezug auf Daten, die in einer oder mehreren Datenbanken
gespeichert sind; und (c) Mittel, die wenigstens teilweise auf der
Abfrage basieren, zum dynamischen Aufbauen einer Hierarchie aus
dem Datennetzwerk.
-
Eine
weitere bevorzugte System-Ausführungsform
des Erfindungsgegenstands umfasst ein System zum Abfragen eines
Datennetzwerks, umfassend: (a) Mittel zum Auswählen gewünschter Felder; (b) Mittel zum
Angeben eines Stamms; und (c) Mittel zum Angeben einer Suchbedingung.
-
Eine
weitere bevorzugte System-Ausführungsform
des Erfindungsgegenstands umfasst ein System zum Abfragen von Datenbanken,
umfassend: (a) einen elektronischen Abfrage-Server, der betriebsfähig ist zum
Empfangen von elektronischen Datenübertragungen von und zum Senden
von elektronischen Datenübertragungen
zu einem Benutzer-Datenendgerät über ein
elektronisches Datenübertragungs-Netzwerk;
und (b) einen oder mehrere Datenbank-Server, die mit dem Abfrage-Server
in elektronischer Datenverbindung stehen und betriebsfähig sind,
um eine oder mehrere Datenbanken zu suchen; wobei der Abfrage-Server
betriebsfähig
ist, um eine elektronische Abfrage über ein elektronisches Datenübertragungs-Netzwerk
von dem Benutzer-Datenendgerät
zu empfangen und, basierend auf dieser Abfrage, eine oder mehrere
Hierarchien dynamisch zu erstellen. Zugehörige Ausführungsformen enthalten Folgendes:
(1) eine oder mehrere Hierarchien werden basierend auf Datennetzwerken
erstellt; und (2) die Datennetzwerke umfassen Knoten, die durch
Verknüpfungen
verbunden sind, und jeder Knoten entspricht einer Gruppe von Daten.
-
Kurze Beschreibungen
der Zeichnungen
-
1 veranschaulicht
ein einfaches beispielhaftes Datennetzwerk einer bevorzugten Ausführungsform.
-
2 zeigt
eine grafische Darstellung eines beispielhaften Netzwerks.
-
3 ist
eine grafische Darstellung des in Anhang A beschriebenen Netzwerks.
-
4 zeigt
grundlegende Abschnitte einer bevorzugten Verknüpfungs-Beschreibung.
-
5 zeigt
beispielhafte Verknüpfungs-Definitionen
für einen
Ursprungsknoten und einen verbundenen Knoten und das Netzwerk, das
sie ausbilden.
-
6 zeigt
eine Stammverknüpfung,
die zu dem Netzwerk von 5 hinzugefügt wurde.
-
7 zeigt
zwei zusätzliche
Verknüpfungen,
die zu dem Netzwerk von 6 hinzugefügt wurden.
-
8 zeigt
ein Entitäts-Beziehungsdiagramm,
das ein einfaches Reaktions-Datenmodell
veranschaulicht.
-
9 zeigt
Verknüpfungen
für das
Datenmodell von 8.
-
10 zeigt zwei zusätzliche Verknüpfungen,
die zu denjenigen von 9 hinzugefügt wurden.
-
11 zeigt eine grafische Darstellung eines Datennetzwerks.
-
12 veranschaulicht eine Abfrage, die auf das Netzwerk
von 11 angewendet wird.
-
13–17 veranschaulichen
Ablaufdiagramme, die detailliert angeben, wie eine UQL-Abfrage in Standard-SQL übersetzt
wird.
-
18 zeigt ein System zum Abfragen von einer oder
mehreren Datenbanken.
-
Detaillierte
Beschreibung von bevorzugten Ausführungsformen
-
In
einer bevorzugten Ausführungsform
ist eine Integrationsdatenquelle (IDS) eine Datenquelle, die mit einer
oder mehreren anderen Datenquellen, (die typischerweise eine relationale
Datenquelle aufweisen), kombiniert ist, um ein Datennetzwerk auszubilden.
Basierend auf einem bereitgestellten Datenmodell kann ein Fachmann
für Datenmodelle
ein Datennetzwerk erstellen. Damit werden die Daten in eine oder
mehrere hierarchische Datensichten umgewandelt, und die Fähigkeit
wird bereitgestellt, über
diese Datenquellen übergreifend
zu suchen und Gruppen von integrierten Ergebnissen zurückzugeben.
Verknüpfungen
geben die Datenbeziehungen zwischen den Datenquellen an. 1 veranschaulicht
ein einfaches Datennetzwerk.
-
Verknüpfungen
mit Eins-zu-Eins- oder Eins-zu-Viele-Beziehungen können verwendet
werden, um ein Netzwerk auszubilden. Verknüpfungen generieren SQL- Anweisungen für die Suche
nach und den Abruf von den mit den Verknüpfungen verbundenen Daten.
-
Datenquellen
in dem Datennetzwerk können
eine einzelne relationale Tabelle, eine Berechnung, die Ergebnisse
einer SELECT-Anweisung, eine externe Datenquelle sein – potenziell
alles, was Daten liefert.
-
Das
Datennetz kann einfach sein – Verknüpfungen
zwischen mehreren Datenquellen. Oder es kann sehr viel komplexer
sein – Tausende
von Datenquellen mit Verknüpfungen,
die sie miteinander verbinden. Ein Datennetzwerk, das IDS-Verknüpfungen
verwendet, stellt eine maßgeschneiderte
Gruppe von Datensichten bereit, die auf den Arbeitsablauf und die
Anforderungen eines bestimmten Verwendungszwecks zugeschnitten sind.
Im Gegensatz zu dem Hview-Modell kann ein Datennetzwerk mehrere
Hviews ersetzen, und ein vorgegebenes Datenmodell kann als viele
verschiedene Hierarchien betrachtet werden. Die durch die IDS assemblierten
hierarchischen Datensichten sind nicht statisch. Flexibilität ist äußerst erwünscht und
ist ein integriertes IDS-Merkmal. Ein gut ausgelegten Datennetzwerk
gestattet es, Hierarchien aufzubauen, die der Entwickler nicht vorhergesehen
hat. Es ist beispielsweise manchmal von Vorteil, eine Hierarchie
abzufragen, aber Daten von einer anderen abzurufen.
-
Ein
weiterer Vorteil der Verwendung von IDS besteht darin, dass sie
gestattet, dass Datenumwandlungen, wie beispielsweise Drehen, dynamisch
auftreten. Dies ist nur ein Beispiel für die Fähigkeit, Daten aus der Form,
in der sie in einer Datenbank gespeichert sind, in eine Form umzuwandeln,
an die der Endbenutzer gewöhnt
ist. Außerdem
können
mit IDS mehrere Anfangspunkte bzw. Stämme für eine vorgegebene Suche angegeben
werden.
-
Abfragen
werden vorzugsweise unter Verwendung der hierarchischen Erweiterungen
der Unified Query Language (UQL) vorgenommen, und Daten werden in
hierarchischen Datensatzgruppen zurückgegeben.
-
Die
folgenden Schritte erläutern
den bevorzugten IDS-Arbeitsablauf im Detail.
- 1.
Der Datenbank-Administrator analysiert den Bedarf eines Einsatzorts.
- 2. Der Datenbank-Administrator installiert Datenbanken und richtet
Accounts für
Systemadministratoren ein.
- 3. Der Systemadministrator fügt
Datenbank-Kontexte hinzu und weist Benutzer zu diesen Kontexten
zu.
- 4. Der Systemadministrator erstellt Datenquellen-Definitionen.
Aus diesen Definitionen werden XML-Dateien erstellt.
- 5. Ein Fachmann für
Datenmodelle (mit Systemadministrator-Privilegien) baut das Netzwerk
auf.
- 6. Sobald der Fachmann für
Datenmodelle das Datennetzwerk aufgebaut und getestet hat, veröffentlicht der
Systemadministrator das Datennetzwerk für den Server.
- 7. Ein Wissenschaftler (zum Beispiel) fragt die Datenbanken
unter Verwendung des Datennetzwerks ab. Der Wissenschaftler erstellt
die Abfragen unter Verwendung der hierarchischen UQL-Erweiterungen,
und die Daten werden in hierarchischen Datensatzgruppen zurückgegeben.
-
In
einigen Fällen
kann es notwendig sein, neue, unvorhergesehene Datenbeziehungen
zu definieren, die durch die standardmäßigen IDS-Verknüpfungen
nicht unterstützt
werden. Ist dies der Fall, gibt der Fachmann für Datenmodelle nach Bedarf
neue Verknüpfungen
an und leitet die Spezifikationen an einen Entwickler weiter. Der
Entwickler baut die erforderlichen Verknüpfungen auf.
-
Über Verknüpfungen
-
Eine
Verknüpfung
ist der grundlegende Aufbaublock eines Datennetzwerks in einer Integrationsdatenquelle.
Eine Verknüpfung
ist eine XML-Beschreibung der Beziehung zwischen Knoten von Daten
in einem Datennetzwerk. Diese Beziehung wird durch die Verknüpfung genutzt,
wenn sie die systemspezifische Abfrage für die Suche nach und den Abruf
von den verknüpften
Daten generiert. Die Beziehung kann Eins-zu-Eins oder Eins-zu-Viele sein. Die Beziehung
gibt auch an, ob der Datenabruf sofort durchgeführt oder bis zu seiner Anforderung
verschoben wird.
-
4 zeigt
grundlegende Abschnitte einer Verknüpfungsbeschreibung. Die meisten
Verknüpfungen weisen
wenigstens die Elemente Connector (Verknüpfung), LinkFields (Verknüpfungsfelder)
und OutputFields (Ausgabefelder) auf.
-
Wie Verknüpfungen
ein Datennetzwerk aufbauen
-
Obwohl
eine Verknüpfung
die Verknüpfung
zwischen dem Ursprungsknoten und dem verbundenen Knoten herstellt,
definiert sie vorzugsweise den Zugang nur zu den Daten in dem verbundenen
Knoten. Der Zugang zu den Daten in dem Ursprungsknoten wird vorzugsweise
durch eine andere Verknüpfung
definiert. Für
den Zugang zu den Daten sowohl im Urspungsknoten und dem verknüpften Knoten
benötigt
man vorzugsweise eine Verknüpfung
für jeden
Knoten. 5 zeigt zwei Verknüpfungsdefinitionen
für den
Ursprungsknoten und den verknüpften
Knoten und zeigt, wie sie ein sehr einfaches Datennetzwerk ausbilden.
-
Die
Daten in diesem Netzwerk werden durch die Ausgabefelder in jeder
Verknüpfung
definiert. Die aus einer Abfrage abgerufene Hierarchie wird aus
den angegebenen Ausgabefeldern und den Beziehungen abgeleitet, die
durch ihre Verknüpfungen
definiert werden. Die Vielfachheit der Beziehungen zwischen zwei
Knoten wirkt sich auf die Form der Hierarchie aus. Bei einer Eins-zu-Eins-Beziehung
werden die Ausgabefelder des verknüpften Knotens mit den Ausgabefeldern
des Ursprungsknotens zusammengeführt.
Bei einer Eins-zu-Viele-Beziehung wird in den Quelldaten ein übergeordnetes
Feld erstellt. Wenn beispielsweise die Beziehung zwischen ConnectorA
und ConnectorB in dem Beispiel Eins-zu-Eins ist, sieht die abgeleitete
Hierarchie wie folgt aus:
FieldA1
FieldA2
FieldB1
FieldB2
-
Wenn
die Beziehung zwischen ConnectorA und ConnectorB in dem Beispiel
Eins-zu-Viele ist, sieht die abgeleitete Hierarchie wie folgt aus:
-
Das
soeben beschriebene Datennetzwerk ist einfach eine Reihe von Verknüpfungen,
ohne Eingangspunkt zum Netzwerk. Damit eine Abfrage auf diesem Datennetzwerk
weitergeleitet werden kann, muss eine Stammverknüpfung vorhanden sein. Die Stammverknüpfung stellt
dar, welcher Datentyp auf diesem Datennetzwerk abgefragt werden
kann. Die Stammverknüpfung
ist das, was in der FROM-Klausel der Abfrage angegeben werden muss.
-
6 zeigt
eine weitere Verknüpfung
ConnectorX, die zu dem Datennetzwerk hinzugefügt wurde.
-
ConnectorX
ist die Stammverknüpfung
in diesem Datennetzwerk. Wie dargestellt, muss ConnectorX ebenfalls
seine eigene Connector-Elementdefinition aufweisen. Zum Angeben
von ConnectorX als Stammverknüpfung
muss sie in dem Stamm-Abschnitt des Verknüpfungselements hinzugefügt werden:
-
Wenn
die Beziehungen zwischen ConnectorX, ConnectorA und ConnectorB Eins-zu-Eins
ist, sieht die abgeleitete Hierarchie wie folgt aus:
FieldX
FieldA1
FieldA2
FieldB1
FieldB2
-
Wenn
die Beziehungen zwischen ConnectorX, ConnectorA und ConnectorB Eins-zu-Viele
ist, sieht die abgeleitete Hierarchie wie folgt aus:
-
Unter
Verwendung der Eins-zu-Viele-Beziehung als Beispiel kann die folgende
Abfrage weitergeleitet werden:
-
Dabei
ist zu beachten, dass die ConnectorX-Definition kein FROMTABLE-Attribut aufweist
und keine LinkFields definiert, weil sie nicht von einem Urspungsknoten
aus verbunden ist. Es ist jedoch auch möglich, eine Verknüpfung zu
definieren, die zwei Knoten (wie beispielsweise ConnectorA oder
ConnectorB) als eine Stammverknüpfung
verbindet.
-
Es
können
auch mehrere Verknüpfungen
definiert werden, die von dem gleichen Ursprungsknoten aus verbinden,
und mehrere Verknüpfungen,
die mit dem gleichen verbundenen Knoten verbinden. In 7 werden
neue Verknüpfungen
ConnectorC und ConnectorD zu dem Datennetzwerk hinzugefügt, das
in den vorherigen Beispielen verwendet wurde. ConnectorB und ConnectorC
werden beide von TableA aus verbunden, und ConnectorB und ConnectorB
sind beide mit TableB verbunden.
-
Unter
Verwendung des dargestellten Datennetzwerks wählt die folgende Abfrage alle
der Ausgabefelder aus allen der Verknüpfungen:
-
Im
Folgenden wird die abgeleitete Hierarchie gezeigt:
-
Die
Art von ConnectorA, ConnectorC und ConnectorD ist OneToManyDataConnector;
die Eins-zu-Viele-Beziehung erstellte die entsprechenden Felder
der übergeordneten
und unteren Ebene. Die Art von ConnectorB ist OneToOneDataConnector;
die Eins-zu-Eins-Beziehung fügte
die Felder in das übergeordnete
(Ursprungsknoten) Feld von ConnectorA ein. Dabei ist zu beachten,
dass das Auswählen
von "*" in der Abfrage die
Felder der unteren Ebene nicht abruft. Zum Abrufen der Felder unter
einem übergeordneten
Feld wird die Verknüpfungsbezeichnung
als ein Pfad zu den Feldern angegeben. Beispielsweise wählt "select * from ConnectorX" nur die Ausgabefelder
von ConnectorX. Zum Auswählen
der Felder von ConnectorX und ConnectorD wird "select *, ConnectorA.ConnectorC.ConnectorD.*
from ConnectorX" angegeben.
-
In
vielen Fällen
gibt es Anwendungsbenutzer, die sich nur für die Daten in bestimmten Ebenen
der Hierarchie interessieren. Unter Verwendung des vorhergehenden
Beispiels gibt die folgende Abfrage ein Feld der unteren Ebene (ConnectorC)
zurück,
das auf einem anderen Feld der unteren Ebene (ConnectorD) basiert:
-
Um
den Zugang zu diesen Knoten in dem Datennetzwerk einfacher zu machen,
kann ConnectorC als ein Stamm hinzugefügt werden:
-
Dies
macht ConnectorC zu einem weiteren Eingangspunkt in das Datennetzwerk.
Das Definieren von ConnectorC als eine Stammverknüpfung zieht
ihre Daten in die Stammebene einer Hierarchie hinauf, ohne das darunterliegende Datenmodell
zu verändern.
Das Folgende wird dann zu einer weiteren Hierarchie, die in dem Datennetzwerk
zur Verfügung
steht:
-
Unter
Verwendung des neuen Stamms kann die folgende einfachere Abfrage
weitergeleitet werden:
-
Ein Beispiel: Verknüpfungen
für ein
Reaktions-Datennetzwerk
-
8 zeigt
ein Entitäts-Beziehungsdiagramm,
das ein einfaches Reaktions-Datenmodell
zeigt, das aus drei Tabellen Rxn, RxnMols und Mols besteht. 8 zeigt
auch, wie diese Tabellen durch ihre Primär- und Fremdschlüssel verbunden
sind. Von diesem Datenmodell aus könnten Benutzer daran interessiert
sein, auf die folgenden Daten zuzugreifen: Reaktionen, Reaktanten,
Produkte, Reaktantmoleküle
und Produktmoleküle. Jedes
davon kann als Knoten in einem Datennetzwerk definiert werden, auf
die durch die Verknüpfungen
zugegriffen wird, wie in 9 gezeigt.
-
Indem
Reactions (Reaktionen) als die Stammverknüpfung definiert wird, kann
die folgende Hierarchie von dem Datennetzwerk abgeleitet werden:
-
Es
ist zu beachten, dass, weil die Art der RctMol- und PrdMol-Verknüpfungen
OneToOneDataConnector ist, ihre Ausgabefelder mit ihren entsprechenden
Ursprungsknoten zusammengeführt
werden. Die Ausgabefelder von Reactants und Products werden nur
zum Verbinden verwendet, so dass sie verborgen werden und nicht
in der Hierarchie erscheinen. Es ist ebenfalls zu beachten, dass
die Reactants- und
Products-Verknüpfungen
beide mit der RxnMols-Tabelle verbunden sind. Die Verwendung TOTABLEALIAS
in diesen Verknüpfungen
ermöglichte
das Verbinden mehrerer Verknüpfungen
(RctMol und PrdMol) von der gleiche Tabelle aus.
-
Das
soeben beschriebene Datennetzwerk definiert eine einzelne Hierarchie.
Die Leistung eines Datennetzwerk-Verfahrens wird offenkundig, wenn
es gestattet, dass sich Verknüpfungen
von Astknoten aus zurück
zum übergeordneten
Knoten definieren lassen. Beispielsweise lassen sich zwei neue Verknüpfungen
erstellen, welche die Reactants- und Products-Knoten zu Rxn zurück verbinden
(siehe 10)
-
Es
ist zu beachten, dass die zwei neuen Verknüpfungen die gleiche Bezeichnung
aufweisen (Rxn) und gleich aussehen. Der einzige Unterschied ist
der FROMTABLE-Wert.
Einer ist von der Reactants-Verknüpfung und der andere von der
Product-Verknüpfung aus
verbunden.
-
Unter
Verwendung der ersten Rxn-Verknüpfung,
(deren FROMTABLE="Rcts"), kann die folgende
alternative Hierarchie abgeleitet werden:
-
Unter
Verwendung der anderen Rxn-Verknüpfung,
(deren FROMTABLE="Prds"), kann die folgende Hierarchie
abgeleitet werden:
-
11 zeigt eine grafische Darstellung des soeben
erstellten Datennetzwerks, einschließlich Rxn, Reactants und Products
als mögliche
Stämme
von mehrfachen, nicht-statischen Hierarchien.
-
Abfragen des Datennetzwerks
-
Ein
Datennetzwerk kann unter Verwendung von einheitlichen Abfragen abgefragt
werden – Abfragen, die
in Unified Query Language (UQL) geschrieben wurden. UQL stellt eine
allgemeine Syntax zum Suchen von Datenquellen bereit. UQL ist SQL ähnlich.
-
Zum
Abfragen eines Datennetzwerks wählen
Sie mit SELECT die Felder, die in der Hierarchie gewünscht werden,
geben den Stamm des Datennetzwerks in der FROM-Klausel an und geben
die Suchbedingung in der WHERE-Klausel an. Da das Datennetzwerk
mehrere Hierarchien haben kann, bestimmen die in den SELECT- und
WHERE-Klauseln verwendeten Felder, welche Hierarchie verwendet werden
soll. Ausgehend von dem in der FROM-Klausel angegebenen Stamm werden
die Verknüpfungen
durch das Netzwerk verfolgt, um einen Pfad zu den angegebenen Feldern
zu bestimmen. In den meisten Fällen
ist der kürzeste,
der zuerst gefunden wird, der richtige. In dem Fall, in dem der
Pfad vieldeutig ist, ist es möglich,
einen Pfad zu dem Feld anzugeben.
-
Um
zu sehen, wie Felder in einem Datennetzwerk gefunden werden, ist
das Datennetzwerk, das in Verknüpfung
mit dem in den 8 und 9 gezeigten
Beispiel verwendet wurde, zu betrachten. Die Abfrage wählt beispielsweise
Reactants.CTAB aus Rxn. Die Suche beginnt bei der Rxn-Verknüpfung. Die
Reactants-Verknüpfung
wird gefunden, und sie kann verwendet werden, weil ihr FROMTABLE-Wert
mit dem TOTABLE-Wert von Rxn übereinstimmt,
und weil ihr FROMFIELD-Wert in dem Verbindungsfeld mit einem Ausgabefeld
der Rxn-Verknüpfung übereinstimmt.
(Es ist zu beachten, dass mehrere Reactants-Verknüpfungen vorhanden
sein können.
Die erste, deren Verbindungen mit denen von Rxn übereinstimmen, wird verwendet.) Die
Reactants-Verknüpfung
weist das Feld CTAB nicht als ein Ausgabefeld aus, also wird die
Suche fortgesetzt. Danach wird die RctMol-Verknüpfung überprüft; ihr FROMTABLE-Wert und
Verbindungsfeld stimmen mit der Reactants-Verknüpfung überein, und sie weist das CTAB-Ausgabefeld
auf, so dass die Suche beendet wird.. 12 zeigt
den Abschnitt des Datennetzwerks, der soeben beschrieben wurde.
-
In
diesem Beispiel wird das CTAB-Feld gefunden, indem alle Verknüpfungen
von Reactants geprüft werden,
bis eine gefunden wird, die das CTAB-Feld aufweist. Es gibt jedoch
Fälle,
in denen es nützlich
ist, dass Verknüpfungspfade
explizit angegeben werden können,
indem das PATH-Attribut des OutputField-Elements verwendet wird.
Das PATH-Attribut ermöglicht
die Angabe eines bestimmten Pfads, der für ein einzelnes Ausgabefeld
verwendet werden soll.
-
Sobald
ein Datennetzwerk beschrieben ist, kann es abgefragt werden, und
Daten können
durch die Verwendung der Unified Query Language (UQL) abgefragt
werden. UQL basiert auf SQL mit Erweiterungen, um hierarchische
Bezeichnungen und chemische Suchfunktionen zu unterstützen. Die
SELECT-Liste des SQL-Ausdrucks bestimmt die Form der Hierarchie,
die zurückgegeben
wird, wobei die WHERE-Klausel bestimmt, welche Daten zurückgegeben
werden. Da eine Hierarchie einen Stamm erfordert, wird dieser als
der Wert der FROM-Klausel angegeben. Bei objektorientierter Terminologie
ist das Ziel der FROM-Klausel das Objekt, zu dem Fragen gestellt
werden. Die WHERE-Klausel ist die Frage, die gestellt werden soll,
und die SELECT-Liste
definiert die Informationen, die zurückgegeben werden sollen.
-
Im
Allgemeinen lautet der Algorithmus, der vorzugsweise verwendet wird,
um die Gruppe von Verknüpfungen
für einen
bestimmten hierarchischen Pfad, wie beispielsweise A.B.C.leaf, auszuwählen, wie
folgt:
- 1. Das übergeordnete Feld des Stammes
und seine Verknüpfung
müssen
sich in der Liste von zulässigen Stämmen befinden.
- 2. Alle übergeordneten
Werte in dem Pfad müssen
eine Bezeichnung aufweisen, die mit der Bezeichnung einer Verknüpfung übereinstimmt.
Für eine
Verknüpfung
mit der Bezeichnung "B", die von der Verknüpfung "A" aus verwendet werden soll, muss das
FromTable-Attribut von "B" mit dem ToTable-Attribut
von "A" übereinstimmen. Außerdem müssen alle
FromLink-Felder in "B" als Ausgabefelder
in "A" gefunden werden.
- 3. Wenn das Ast-Feld in den Ausgabefeldern in dem endgültigen übergeordneten
Feld gefunden wird, ist die Suche abgeschlossen. (Wenn dieses Feld
ein PATH-Attribut aufweist, sind die angegebenen Verknüpfungen
ebenfalls notwendig.) Wenn das Ast-Feld nicht gefunden wird, werden
die in dem PreferredPaths-Element angegebenen Verknüpfungen
geprüft,
ob dort das Ast-Feld zu finden ist. Falls nicht, wird eine umfassende
Suche ausgeführt,
um festzustellen, ob es irgendwelche Eins-zu-Eins-Verknüpfungen gibt, die das Ast-Feld
ausgeben und eine Verknüpfung
zu dem endgültigen übergeordneten
Feld herstellen können.
-
Im
Folgenden sind einige beispielhafte Abfragen und ihre daraus resultierenden
Hierarchien zu finden:
-
Abfrage-Übersetzungsstrategien
-
Die
IDS unterstützt
wenigstens zwei verschiedene Strategien zum Übersetzen von Abfragen in SQL: eine
verwendet nur Joins, und die andere verwendet Joins für Eins-zu-Eins-Beziehungen
und IN-Klauseln für Eins-zu-Viele-Beziehungen.
Die Join-Strategie
ist der Standard, wenn keine Strategie angegeben ist. Die Strategie
kann angegebenen werden, indem eine Eigenschaft in der Eigenschafts-Gruppe
angegeben wird, die an IDBStatement.setUnifiedQuery übergeben
wird:
-
Aufbau eines IDS-Datennetzwerks
aus einem relationalen Datenmodell
-
Obwohl
eine IDS in einer bevorzugten Ausführungsform keine objektorientierte
Datenbank ist, ist es nützlich,
ein Datenmodell beim Aufbau eines Netzwerks von IDS-Verknüpfungen
aus einer Objektperspektive zu analysieren, um dieses Datenmodell
darzulegen.
-
Bevorzugte
Schritte beim Aufbauen eines derartigen Netzwerks umfassen Folgendes:
- 1. Analysieren des Datenmodells, um zu bestimmen,
welche "Objekte" dargelegt werden
sollen. Objekte sind typischerweise gut definierte Entitäten, die
einfach beschrieben werden können,
(z.B. Angestellter, chemische Struktur, Stapelinformationen usw.).
Sie sind normalerweise in einer oder mehreren Tabellen eingebettet,
wobei eine die primären
Daten oder wenigstens den Primärschlüssel für jedes
Objekt enthält. Diese
Objekte werden oft zu den Stämmen
von Hierarchien, die aus dem Netzwerk abgeleitet werden.
- 2. Analysieren des Vererbungsbaums dieser Objekte. Einige Datenmodelle
machen umfangreichen Gebrauch von generischen Beschreibungen, die
sich durch den Dateninhalt unterscheiden. IDS lässt die Bearbeitung derartiger
Modelle zu, indem ein Objekt der unteren Ebene definiert wird, das
dann erweitert wird, um bestimmte Objekttypen getrennt zu identifizieren.
Ein typisches Beispiel stammt von Reaktions-Datenmodellen, in denen Reaktanten,
Produkte, Katalysatoren usw. alle spezifische Instances einer chemischen Strukturdefinition
einer unteren Ebene sind. In der IDS kann eine Definition dieser
chemischen Struktur leicht erweitert werden, um die spezifischen
Definitionen jeder der Komponenten zu unterstützen.
- 3. Analysieren der Beziehungen von jedem dieser Objekte zueinander.
Diese Analyse umfasst Vielfachheits- (Eins-zu-Eins, Eins-zu-Viele)
und wechselseitige Beziehungen (Angestellter zu Manager, Manager zu
Angestellter).
- 4. Definieren von Verknüpfungen
für jedes
dieser Objekte, so dass alle relevanten Daten in einer Hierarchie dargelegt
werden, die für
das Objekt logisch ist. Es ist zu versuchen, jede Gruppe von Verknüpfungen
als ein unabhängiges,
in sich geschlossenes untergeordnetes Netzwerk zu erstellen. Jedes
Objekt sollte eine einzelne Stammverknüpfung aufweisen, die einen
Eingangspunkt zu dem untergeordneten Netzwerk bereitstellt. Weitere
Verknüpfungen
verbinden mit dieser Verknüpfung
durch entsprechende Werte für
die FromTable- und ToTable-Attribute und LinkFields.
- 5. Modifizieren der Verknüpfungen
für jedes
der untergeordneten Netzwerke, um die Beziehungen zwischen den Objekten
und dem Netzwerk widerzuspiegeln. Dies erfolgt über die Spezifizierung der
FromTable- und ToTable-Attribute und LinkFields. Wenn ein Objekt
Beziehungen mit mehr als einem anderen Objekt aufweist, kann eine
einzelne Stammverknüpfung
mehrmals erweitert werden, um diese Beziehungen widerzuspiegeln.
- 6. Optimieren und Abstimmen des Netzwerks durch Hinzufügen von
Verknüpfungen,
die Daten umwandeln (PivotConnector), und die Daten aus externen
Quellen (DataSourceConnector) integrieren. Bei Bedarf, basierend
auf dem Leistungsverhalten, sind einige Verknüpfungen zu ändern, um einen zurückgestellten
Abruf zu verwenden.
-
Die 13–17 veranschaulichen
Ablaufdiagramme, die im Detail beschreiben, wie eine UQL-Abfrage
in Standard-SQL übersetzt
wird. Der grundlegende Ansatz ist, dass die Abfrage in ihre grundlegenden Komponenten
zerlegt wird, und jede dieser Komponenten wird analysiert, um zu
bestimmen, welche Verknüpfungen
erforderlich sind. Diese Verknüpfungen
werden dann verwendet, um hierarchische Metadaten zu erstellen,
wie durch die Abfrage definiert. Diese Metadaten werden verwendet,
um die Komponenten der UQL zu übersetzen.
Die Verknüpfungen
selbst stellen die Tabellen und Joins bereit, die für die Ausführung der
Abfrage notwendig sind.
-
Weitere Ausführungsformen
-
Eine
alternative Ausführungsform
konzentriert sich primär
auf relationale Daten. Daten aus nicht-relationalen Quellen (Hview,
XML usw.) können
mit einigen Einschränkungen
in das Datennetzwerk integriert werden.
-
Erstens
ist die Verknüpfung
zu der nicht-relationalen Datenquelle der Stamm ihrer Hierarchie.
Beispielsweise können
Beilstein-Daten aufgenommen, aber nur über den Stamm der Beilstein-Hierarchie
verknüpft
werden.
-
Zweitens
müssen
nicht-relationale Daten ein Endknoten in dem Datennetzwerk sein.
Dies folgt aus dem ersten Punkt, da Verknüpfungen nur zu dem Stamm hergestellt
werden können.
Damit nicht-relationale Daten in der Mitte einer Hierarchie funktionieren
können,
wäre eine
Verknüpfung
von Daten einer unteren Ebene erforderlich.
-
Drittens
können
nicht-relationale Daten nicht als der Stamm von irgendeiner abgeleiteten
Hierarchie funktionieren. Dies folgt aus der zweiten Bedingung.
-
Trotz
dieser Einschränkungen
ist die Integration von nicht-relationalen Daten ganz brauchbar.
Beispielsweise konnte Beilstein, (ein Informationssystem für organische
Chemie mit Millionen von chemischen Datensätzen und Reaktionen), unter
Verwendung von ACD-(Available Chemicals Directory) Software verknüpft werden,
um einen transparenten Abruf von Beilstein-Daten für jede ACD-Eingabe
zu ermöglichen.
Es ist des Weiteren zu beachten, dass die IDS selbst als eine nicht-relationale Quelle
behandelt werden kann, so dass alle bestehenden IDS-Netzwerke über einen
einzelnen Punkt miteinander verknüpft werden können
-
Zugreifen
auf die IDS
-
Auf
die IDS wird vorzugsweise wie auf jede andere Datenquelle zugegriffen.
-
Sie
kann als ein neuer Typ von Datenquelle definiert und entweder als
eine bezeichnete, initialisierte Instance oder eine nicht bezeichnete
Instance erstellt werden, die mit Initialisierungs-XML bereitgestellt
werden muss.
-
Initialisierungs-XML
-
Die
Verknüpfungen,
die ein Datennetzwerk beschreiben, werden vorzugsweise unter Verwendung
von XML definiert, das in der Initialisierungs-XML für die IDS
enthalten ist. Das Skelett der IDS-Initialisierung sieht aus wie
folgt:
-
Das
ConnectionAttributes-Element gibt die Bezeichnung einer relationalen
Datenquelle an, welche die Verknüpfung
zu den Daten bereitstellt, mit denen die IDS arbeitet. Das Roots-Element
enthält
eine Liste von Root-Elementen, von denen jedes die Bezeichnung eines
zulässigen
Stamms in der Hierarchie angibt. Das Properties-Element ermöglicht es, dass globale Eigenschaften
der Datenquelle eingerichtet werden können.
-
-
-
Das ConnectionAttributes-Element
-
Das
ConnectionAttributes-Element gibt die Bezeichnung einer relationalen
Datenquelle an, welche die Verknüpfung
zu den Daten bereitstellt, mit denen die IDS arbeitet..
-
-
Das Roots-Element
-
Das
Roots-Element gibt an, welche Verknüpfungen als der Stamm einer
abgeleiteten Hierarchie zulässig
sind. (Man kann sich dies auch als die Angabe der Arten von Objekten
vorstellen, die abgerufen werden können.) Es enthält eine
Sammlung von Root-Elementen, von denen jedes eine einzelne Verknüpfung angibt. Als
Annehmlichkeit beim Abfragen kann jede Stammverknüpfung auch
eine oder mehrere bezeichnete vordefinierte Hierarchien angeben.
Auf diese Hierarchien kann dann durch ihre Bezeichnungen in der
FROM-Klausel einer UQL-Anweisung Bezug genommen werden. Zum Beispiel
würde die
XML über
die UQL:
select * from RxnRoot where...
erweitert werden
zu:
select *,reactants.,products.* from Rxn where ...
-
Es
ist zu beachten, dass, wenn eine vordefinierte Hierarchie verwendet
wird, das einzige Element in der SELECT-Liste sein darf.
-
-
Es
wird bevorzugt, nicht beides, NAME und ID, für das Stammelement anzugeben.
-
Das Initializer-Element
-
Das
Initializer-Element gibt die Bezeichnung einer Java-Klasse an, welche
die (im Folgenden erläuterte)
IIDSInitializer-Schnittstelle angibt. Nachdem alle anderen Konfigurationsinformationen
verarbeitet und spezifizierte Verknüpfungen erstellt worden sind,
wird diese Klasse instanziiert, und die Schnittstelle wird zum Abrufen
von zusätzlicher
Konfigurations-XML verwendet.
-
-
Das Connectors-Element
-
Verknüpfungen
können
durch die Art von Daten, die sie verknüpfen (Tabellen, Datenquellen,
Berechnungen usw.), ihre Vielfachheit (Eins-zu-Eins, Eins-zu-Viele),
ob sie Daten sofort oder nur auf Anforderung abrufen, wie sie verbunden
sind (durch Feld-Werte
oder SQL-Anweisungen), und ob sie ein übergeordnetes Feld in der sich
daraus ergebenden Hierarchie erstellen, klassifiziert werden. Gleichgültig, welche
Besonderheiten eine bestimmte Verknüpfung aufweist, alle weisen
vorzugsweise die gleiche grundlegende XML-Struktur auf:
-
Bemerkungen zur Verknüpfungs-XML:
-
- 1) Wenn eine Verknüpfung durch Erweitern einer
anderen erstellt wird, können
alle Attribute und untergeordneten Elemente unwirksam gemacht werden,
ausgenommen die tatsächliche
Verknüpfungsart.
Wenn ein untergeordnetes Element, wie beispielsweise LinkFields,
unwirksam gemacht wird, wird der vererbte Wert vollständig ersetzt.
Eine Ausnahme bildet das Properties-Element, bei dem die Eigenschaften
zusammengeführt
werden.
- 2) Die Verwendung von TOTABLEALIAS ermöglicht es, mehrere Verknüpfungen
zu der gleichen Tabelle herzustellen, wie beispielsweise bei den
Reactants- und Products-Verknüpfungen
in dem obigen Beispiel.
- 3) Auf eine Tabelle in einer anderen Instance von Oracle kann
(vorzugsweise) durch die Verwendung von Datenbank-Verbindungen und
Synonymen verwiesen werden.
- 4) Verweise auf Felder in der generierten SQL werden auf die
enthaltende Tabelle (oder das Tabellen-Alias) eingeschränkt
- 5) Wenn Verknüpfungen
mit dem gleichen TOTABLE-Eintrag in zwei getrennten Verzweigungen
unter einem übergeordneten
Wert verwendet werden, ist für
jede Verzweigung eine getrennte Verknüpfungsdefinition mit einem
unterschiedlichen TOTABLEALIAS-Eintrag vorhanden. Dies geschieht,
um Abfragen darzustellen, die beide Verknüpfungen gleichzeitig einbeziehen.
(Ohne verschiedene Alias-Bezeichnungen
könnte
es mehrdeutige Verweise auf Felder geben.)
- 6) Wenn mehrere Verknüpfungen
mit der gleichen Bezeichnung vorhanden sind, kann nur eine von ihnen ein
Stamm sein und muss in dem Roots-Abschnitt durch ihre ID identifiziert
werden.
-
Das LinkField-Element
-
Das
LinkField-Element enthält
eine Liste von Verbindungsfeldern. Jedes LinkField-Element weist
zwei Attribute auf, welche die Bezeichnungen der From- und To-Felder
angeben.
-
-
Bemerkungen zur LinkField-XML:
-
- 1) Die Bezeichnung des FROMFIELD wird als das
linke Feld in einem Join verwendet, der entweder durch die FROMTABLE
oder FROMTABLEALIAS eingeschränkt
wird.
- 2) Die Bezeichnung des TOFIELD wird als das rechte Feld in einem
Join verwendet, der entweder durch die TOTABLE oder TOTABLEALIAS
eingeschränkt
wird.
-
-
Das FilterValues-Element
-
Das
FilterValues-Element enthält
eine Liste von Filterwerten. Jedes FilterValue-Element muss wenigstens
ein TOFIELD-Attribut aufweisen, welches das Feld in den verbundenen
Daten angibt, das abgefragt werden soll. Für einen einzelnen Filterwert
weist jedes FilterValue-Element auch ein Value-Attribut auf. Alternativ können mehrere
Werte durch mehrere Value-Elemente angegeben werden, von denen jedes
einen einzelnen Wert enthält.
-
-
-
-
Das OutputField-Element
-
Das
OutputFields-Element enthält
eine Liste von OutputField-Elementen, von denen jedes ein einzelnes
Feld angibt, das ausgegeben werden soll. Als Kurzbefehl kann das
SELECT ALL-Attribut für
das OutputFields-Element eingerichtet werden; damit wird veranlasst,
dass alle Felder in der verknüpften
Tabelle ausgegeben werden. (Diese Liste kann unter Verwendung der
im Folgenden beschriebenen REMOVED/HIDDEN-Attribute bearbeitet werden.)
-
Bemerkungen zur OutputField-XML:
-
- 1) Ein Feld mit einem PATH-Attribut muss eine
Eins-zu-Eins-Datenbeziehung aufweisen. Abhängig von der oder den Verknüpfungen,
die zum Zugreifen auf das Feld verwendet werden, kann sein Abruf
entweder sofort oder zurückgestellt
erfolgen. Der Vorteil, ein Feld mit einem PATH-Attribut anzugeben,
besteht darin, dass es automatisch in die Ausgabefelder der Verknüpfung aufgenommen
wird. Beispielsweise befindet sich das CTAB-Feld in dem obigen Reaktionsdatenmodell
in der MOL-Tabelle.
Wenn das CTAB-Feld in den Reactants/Products-Verknüpfungen
mit einem PATH-Attribut angegeben wird, wird durch die Angabe von Reactants.*
oder Products.* das CTAB-Feld automatisch in die abgeleitete Hierarchie
aufgenommen. Ohne das PATH-Attribut müsste das CTAB-Feld in die SELECT-Liste
unter Verwendung von Reactants.CTAB aufgenommen werden.
- 2) Der Wert des PATH-Attributs kann ein durch Punkt getrennter
Pfad von mehreren Verknüpfungen
sein.
- 3) Ein einfacher Kurzbefehl, wenn die meisten, wenn auch nicht
alle Felder in einer Tabelle ausgegeben werden sollen, besteht darin,
das SELECT ALL-Attribut in Verbindung mit den REMOVE- und HIDDEN-Attributen
zu verwenden. Siehe die folgenden Beispiele.
- 4) Der Wert von NAME wird in dem SELECT-Abschnitt der SQL-Anweisung
verwendet, die durch TOTABLEALIAS oder TOTABLE eingeschränkt wird,
wenn kein Alias angegeben ist.
- 5) Wenn eine Funktion für
NAME verwendet wird, müssen
die Funktionsargumente bereits in Bezug auf die dazugehörigen Tabellen-Verweise
eingeschränkt
sein.
- 6) Weitere Eigenschaften, die in dem OutputField-Element angegeben
sind, würden
in dem entsprechenden Feld in den sich daraus ergebenen Metadaten
wiedergegeben werden.
-
-
-
Das OrderByClause-Element
-
Das
OrderByClause-Element enthält
eine Liste von OrderByClause-Elementen,
von denen jedes ein einzelnes Feld angibt, das beim Sortieren verwendet
werden soll, wenn Daten unter Verwendung dieser Verknüpfung als
eine untergeordnet übergeordnete
Verknüpfung
abgerufen werden. (Das Sortieren auf der Stammebene muss unter Angabe
der "Sortieren nach"-Klausel in der Abfrage
erfolgen.)
Beispiele:
-
Das Property-Element
-
Das
Property-Element enthält
eine Liste von Property-Elementen, die sich auf die Funktion der
Verknüpfung
auswirken. Einige Eigenschaften können auch für die Datenquelle eingerichtet
werden, um einen globalen Wert einzurichten. (Dieser globale Wert
wird durch jeden verknüpfungsspezifischen
Wert unwirksam gemacht.)
-
-
-
-
Angeben von Verknüpfungen
-
Verknüpfungen
treten in einer Reihe verschiedener Arten auf. In einigen Fällen führt eine
Verknüpfung zu
mehrfachen Datensätzen,
die eine Hierarchie erstellen. In anderen werden Felder aus mehreren
Quellen in einen einzelnen Datensatz integriert. Manchmal wird ein
Feld nur selten abgefragt, so dass es am besten ist, einen Abruf
zurückzustellen,
bis ein Wert angefordert wird. Jedes dieser Szenarios kann durch
eine spezifische Verknüpfung
bearbeitet werden. Im Folgenden ist eine Tabelle von bevorzugten
Verknüpfungen
und ihren grundlegenden Merkmalen zu finden:
-
Verknüpfungsbesonderheiten
-
Für die Beispiele
in der folgenden Beschreibung wird ein Datenmodell angenommen, das
wie folgt aussieht:
und eine
Verknüpfung
für Table1,
die wie folgt aussieht:
-
Es
wird angenommen, dass Root ein zulässiger Stamm der Hierarchie
und ein Eingangspunkt in das Datennetzwerk ist. (Diese Verknüpfung definiert
den nur den Zugriff auf Table1.)
-
OneToManyDataConnector
-
Diese
Verknüpfung
verbindet zwei relationale Tabellen mit einer Eins-zu-Viele-Beziehung mit den
verbundenen Daten unter einem übergeordneten
Feld. Der Abruf wird zurückgestellt,
bis er angefordert wird. Die Verknüpfungsdefinition würde wie
folgt aussehen:
-
Die
sich daraus ergebenden Metadaten würden wie folgt aussehen:
-
OneToOneDataConnector
-
Diese
Verknüpfung
verbindet zwei relationale Tabellen mit einer Eins-zu-Eins-Beziehung mit den
verbundenen Daten, die auf die gleiche Ebene der Hierarchie egalisiert
wurden wie die Quelldaten. Der Abruf erfolgt zum gleichen Zeitpunkt,
zu dem Daten für
die Quelldaten abgerufen werden. Die Verknüpfungsdefinition würde wie
folgt aussehen:
-
Nach
dem Kombinieren dieser Verknüpfung
mit den Root- und Table2Parent-Verknüpfungen würden die sich daraus ergebenden
Metadaten wie folgt aussehen:
-
Es
ist zu beachten, dass die Table2_3Link-Verknüpfung keinen übergeordneten
Wert erstellt.
-
OneToOneDeferredConnector
-
Diese
Verknüpfung
ist identisch mit der Verknüpfung
OneToOneDataConnector, mit Ausnahme dessen, dass die Daten erst
abgerufen werden, wenn sie angefordert werden. Die sich daraus ergebenden
Metadaten sind identisch.
-
OneToOneParentConnector
-
Diese
Verknüpfung
ist identisch mit der Verknüpfung
OneToOneDataConnector, mit Ausnahme dessen, dass sie ein übergeordnetes
Feld erstellt, obwohl die Vielfachheit Ein-zu-Eins lautet. Dies
kann nützlich sein,
um Datenbeziehungen zu klären.
In der Datensatzgruppe von dem übergeordneten
Feld befindet sich höchstens
ein einzelner Datensatz. Die Bezeichnung des übergeordneten Felds ist die
Bezeichnung der Verknüpfung.
-
PivotConnector
-
Diese
Verknüpfung
erweitert die Funktionalität
der Verknüpfung
OneToManyDataConnector, indem gestattet wird, die Daten transparent
zu drehen. Wenn die gedrehten Spalten in dem XML-PivotedFields-Element
angegeben werden, kann die Abfrage über die gedrehte Struktur erfolgen
und automatisch durch die Verknüpfung übersetzt
werden. Die Konfiguration dieser Verknüpfung gibt alle Informationen
an, die erforderlich sind, um die einmal gedrehte Datensatzgruppe
in einer Form zu erstellen, die mit der Verknüpfung OneToManyDataConnector
identisch ist, und fügt
zusätzliche
Informationen unter dem PivotParams-Element hinzu, das angibt, wie
die Drehung erfolgen soll. Der Inhalt des PivotParams- Elements ist identisch
mit demjenigen des PivotRecordset zuzüglich des PivotedFields-Elements.
-
Der
Inhalt des PivotedFields-Elements liegt im standardmäßigen Metadaten-XDfile-Format vor.
Die Felder müssen
die Spalten definieren, die sich aus dem Drehvorgang ergeben. Jede
Feld-Spezifikation muss einen Typ enthalten, der mit ihren gedrehten
Daten konsistent ist. Felder mit Aliasbezeichnung werden mit dem Alias
als der Wert der NAME-Eigenschaft und der tatsächlichen Spaltenbezeichnung
in der NATIVENAME-Eigenschaft angegeben.
-
-
-
CalculatorConnector
-
Diese
Verknüpfung
gestattet die Verwendung von kundenspezifischen Rechenprogrammen
in einem Datennetzwerk. Die Verknüpfung OneToOneDeferredConnector
wird damit so erweitert, dass, wenn eine Berechnung mehrere Werte
zurückgibt,
sie in mehreren Feldern übergeben
werden müssen.
(Es ist zu beachten, dass einfache Berechnungen mit der UQL selbst
ausgeführt
werden können.)
Die tatsächliche
Berechnung wird durch eine Java-Klasse ausgeführt, welche die (im Folgenden
erläuterte)
IIDSCalculator-Schnittstelle implementiert. Beispielsweise:
-
Es
ist zu beachten, dass die Verbindungsfelder alle Felder in der übergeordneten
Verknüpfung
angeben sollten, die von der Berechnung verwendet werden, da dadurch
gewährleistet
wird, dass sie abgerufen werden. Alle für die Berechnung abgerufenen
Felder werden nicht verborgen, da sie für die Berechnungs-Implementierung
zugänglich
sein müssen.
Da eigentlich keine Verbindung durchgeführt wird, ist kein TOFIELD-Attribut erforderlich.
Jedes OutputField-Element sollte den durch die Berechnung zurückgegebenen Datentyp
angeben. Es ist zu beachten, dass eine einzige Rechenprogramm-Implementierung
mehrere Werte in mehreren Feldern zurückgeben kann. Die Klasse, welche
die Rechenprogramm-Schnittstelle (IIDSCalculator) implementiert,
wird in der CALCULATORCLASS-Eigenschaft angegeben.
-
DataSourceConnector
-
Diese
Verknüpfung
gestattet es, Hierarchien aus anderen Datenquellen in eine abgeleitete
Hierarchie aufzunehmen. UQL-Suchbegriffe können verwendet werden, um übergreifend
Felder sowohl der externen Hierarchie als auch der IDS-Hierarchie
zu durchsuchen. Auf die externe Datenquelle wird als eine einzige
feste Hierarchie zugegriffen. Da die Suchvorgänge dieser externen Datenquellen
bis zum Abschluss durchgeführt werden
müssen,
können
bei der Verwendung dieser Verknüpfung
leistungsbezogene Kosten entstehen. Die Initialisierung von XML
für DataSourceConnector
verläuft
ziemlich unterschiedlich von den anderen:
-
Bemerkungen zu DataSourceConnector
-
- 1) Nur eine feste Hierarchie kann über die
Datenquellenverknüpfung
integriert werden. Die Werte von RootName oder des CatalogProperties-Elements
werden verwendet, um anzugeben, welche Hierarchie zu verwenden ist.
- 2) Der Wert des bzw. der LinkField-Elemente gibt an, wie die
Felder in der übergeordneten
Datenquelle und der externen Datenquelle zueinander in Beziehung
stehen.
-
Glossar
-
Dieses
Glossar enthält
Begriffe, die in dieser Beschreibung verwendet wurden.
-
-
-
-
-
IDS-spezifische
Schnittstelle
-
Schnittstelle
IIDSCalculator
-
Öffentliche Schnittstelle IIDSCalculator
-
Kundenspezifische
Rechenprogramme müssen
diese Schnittstelle implementieren.
-
-
-
Schnittstelle IIDSInitializer
-
Öffentliche Schnittstelle IIDSInitializer
-
Diese
Schnittstelle wird zur kundenspezifischen Initialisierung verwendet.
-
-
-
Verwendungs-Szenarios
-
Dieser
Abschnitt stellt Szenarios bereit, welche die Vorteile der Verwendung
der IDS in verschiedenen Ausführungsformen
veranschaulichen.
- 1. Ein Wissenschaftler kann
eine beliebige IDS-Abfrage unter Verwendung einer Integrationsdatenquelle assemblieren.
Sie können
eine Liste von Rückgabedatenfeldern
unter Verwendung der gleichen Definition der Integrationsdatenquelle
erstellen. Die sich daraus ergebenden Daten gestatten den Datenabruf
in einer Reihe von Anzeigeformaten, die von den Datenquellen unabhängig sind.
Die Integrationsdatenquelle wickelt Abfrage und Datenabruf-Optimierung
ab, verbirgt die internen Komplexitäten und stellt die grundlegende
Funktionalität
für eine
benutzerfreundliche Arbeitsumgebung bereit. Sobald die IDS-Abfrage
aufgebaut ist, kann die IDS eine Rückmeldung zur Abfragegültigkeit
bereitstellen. Die Abfrage kann dann für eine optimale Leistung zur
Abfrage-Ausführung
und zum Daten-Abruf konstruiert werden. Dem Benutzer kann dann mit
Indikatoren angezeigt werden, dass die Abfrage sachgemäß ausgeführt wird.
Der Wissenschaftler kann die Abfrage/Ergebnis-Ausführung während der
Abfragephase und während
der Ergebnis-Abrufphase unterbrechen.
In idealer Weise wird die Suchvorgang-Unterbrechung von Oracle abgewickelt.
Auf Anwendungsebene kann der Wissenschaftler eine Pause einlegen
und die Ergebnis-Abrufphase fortsetzen oder beenden.
-
Das
Ergebnis dieser Fähigkeit
ist, dass ein Chemiker, der sich hauptsächlich für die Chemie-Aspekte in der
Arzneimittelforschung interessiert, seine Abfragen in einer mehr "auf Chemie konzentrierten" Ausrichtung entwickeln
kann, während
ein Biologie seine Abfragen in einer mehr "auf Biologie konzentrierten" Ausrichtung entwickeln
könnte.
Die Gewichtung jeder Ausführung
von Abfragen/Ergebnissen würde
von zwei Faktoren abhängen:
dem Abfrage-Begriff und der Konfiguration der IDS. Die gleiche IDS
könnte
sowohl chemisch als auch biologisch ausgerichtete Abfragen unterstützen. Ein
Wissenschaftler kann eine Voreinstellung für die Rückgabe von chemisch oder biologisch
ausgerichteten Ergebnissen einrichten, ungeachtet der Art der ausgeführten Abfrage,
und Listen-Operationen an den sich daraus ergebenden Datensatzgruppen
durchführen.
- 2. Ein Administrator hat vorher eine IDS für Abfrage/Ergebnis-Abruf
von biologischen, chemischen und bestandsbezogenen Informationen
vorbereitet, sie getestet und angewendet. Er erstellte eine einzige IDS-XML-Konfigurationsdatei
für die
Zugänglichkeit
durch Biologen, Chemiker und Lager-Mitarbeiter. Sie müssen dann
jedoch diese Datenquellen in eine neue Lösung integrieren, ohne die
laufenden Abfrage-/Abruf-Operationen zu unterbrechen, die unabhängig voneinander
von jeder Gruppe durchgeführt
werden.
-
Der
Administrator kann neue Entitäts-Hierarchien
zu den bestehenden hinzufügen,
ohne gezwungen zu sein, den Verknüpfungs-XML-Code zwischen den
bestehenden biologischen, chemischen und bestandsbezogenen Tags
zu kopieren. Er kann eine biologisch-chemische, chemisch-biologische
und jede andere Kombination von Entitäts-Hierarchien in jeder Reihenfolge
erstellen, ohne den bestehenden XML-Code zu replizieren. Typische Entitäts-Arten
umfassen chemische, biologische und bestandsbezogene, könnten aber
viele andere umfassen, wie vom Fachmann erkannt wird.
-
Der
Administrator kann diese Operation durchführen, indem er bestehende Entitäts-Hierarchien
in ihren verschiedenen Kombinationen einfach verknüpft, um
ein diversifizierteres integriertes Abfrage-/Ergebnisabruf-System
bereitzustellen. Danach können
Chemiker über
andere wissenschaftliche Bereiche übergreifend suchen, wobei die
neuen Entitäts-Hierarchien
verwendet werden. Wenn ein Chemiker nur einen Suchvorgang/Ergebnisabruf
in Bezug auf die chemischen Daten ausführt, wird die alte chemische
Entitäts-Hierarchie automatisch
wie vorher verwendet, und er erhält
die gleichen Ergebnisse auf Stammebene.
- 3.
Ein Benutzer oder Entwickler öffnet
eine Integrationsdatenquelle und führt eine Suche über eine
Stammhierarchie aus. Der Benutzer gibt die daraus resultierenden
Treffer in ein großes
Dokument zurück
und zeigt die Daten in einem kleinen Fenster auf dem großen Dokument
an. Beim Durchblättern
der ursprünglichen Daten
hat der Benutzer eine zündende
Idee in Bezug auf einige zugehörige
Daten und möchte
dann eine weitere Abfrage über
eine zweite Datenquelle ausführen,
ohne den Inhalt der ursprünglichen
Suche zu verlieren. Sie können
eine zweite Suche auf Stammebene durchführen und die Daten anzeigen,
ohne dass sich dies auf den Inhalt der ursprünglichen Suche auswirkt. Die
Wirkung besteht darin, dass verschiedene IDS-Stämme
unabhängig
voneinander durchsucht werden können,
ohne sich gegenseitig zu beschädigen oder
zurückzusetzen.
Der einzige Zeitpunkt, zu dem der ursprüngliche Inhalt der Suche ersetzt
oder ungültig
gemacht werden würde,
ist derjenige, zu dem der ursprüngliche
Stamm erneut verwendet wird, um eine Suche auszuführen.
-
Diese
Fähigkeit,
mehrere Suchvorgänge über verschiedene
IDS-Stämme
gleichzeitig auszuführen und
anzuzeigen, weist bedeutende Vorteile in der Anwendungsauslegung
und -nutzbarkeit auf.
- 4. Ein Endbenutzer versucht,
eine Suche nach einer Reihe von Reagenzien durchzuführen. Der
Benutzer verwendet eine Reihe von Datenbanken (ACD, Aldrich und
eine interne Lagerraum-Datenbank). Die Suche war eine einfache SSS
nach der Grundstruktur. Der Benutzer gibt eine Struktur in ein Feld
in der Maske ein. Die Suche wird ausgeführt, und die Ergebnisse werden
als der erste Datensatz und die Gesamtanzahl der Treffer aus allen
Datenquellen und die Anzahl der Treffer in jeder der Datenbanken
angezeigt. Der Benutzer blättert
dann durch jeden Datensatz und wählt
aus, welche Datensätze
von dem Anbieter angefordert werden sollten.
- 5. Ein Endbenutzer sucht nach einer Struktur, die auf einer
Struktur und Kriterien aus einer Gruppe von Regelungstabellen basiert.
Die Regelungstabellen sind Listen von IDs und der Art der Substanz
und der Berechtigung des Benutzers, die ausgewählte Struktur anzufordern und
mit ihr zu arbeiten. Eine Liste mit Strukturen wird von der Abfrage
zurückgegeben
und auf dem Bildschirm angezeigt. Der Benutzer wählt eine Verbindung und zeigt
die Struktur und alle relevanten Verbindungsdaten an. Der Benutzer
wählt eine Registerkarte,
welche die Struktur, ID und alle regulatorischen Daten für diese
Struktur anzeigt.
- 6. Ein Administrator empfängt
eine Datei mit allen neuen geregelten Substanzen, die nach CAS-Nummer und
Bezeichnung aufgelistet sind. Der Administrator muss nun alle CAS-Nummern
durchsuchen und eine Liste mit Strukturen generieren, die diesen
Nummern entsprechen. Dann müssen
für alle
Instances dieser Strukturen ihre Primärschlüssel in einer Querverweistabelle
für geregelte
Daten registriert werden.
- 7. Ein Biologe hat einen Einfall für eine Verbindungsart für eine neue
Rezeptorenstelle. Der Biologe möchte nach
allen historischen Verbindungen, die gute ADME-Nummern haben, in
dem Test-Probenraum suchen und sie anzeigen. Der Biologe möchte sehen,
welche Tests vorher mit diesen Verbindungen durchgeführt worden
sind. Die Biologiedaten sind in einer Gruppe von langen, schmalen
Tabellen gespeichert. Der Biologie gibt die untergeordnete Struktur
und den ADME-Schwellenwert
ein, der eine akzeptable Ebene bereitstellt, um die Verbindung in
das System zu laden. Der Biologe kennt den Test, aber nicht die
Datenbanken und braucht Hilfe bei der Abfrage, da die Daten systembedingt
in keiner durchsuchbaren Form vorliegen. Die Suche wird durchgeführt, und
die Strukturen und alle vorher an den Verbindungen durchgeführten Tests werden
dann auf dem Bildschirm angezeigt.
- 8. Hierarchien während
einer Reihe von eingrenzenden Suchen ändern Argument: Einer der Hauptkritikpunkte
bei den HVIEWS war die Tatsache, dass jede "Datenbank" eine vordefinierte Hierarchie aufwies. Wenn
der Stamm geändert
werden musste, musste eine andere Datenbank geöffnet werden, selbst wenn sie
auf die gleichen Daten zugriff.
-
Beschreibung:
Durchsuchen von Reaktionen und der Ergebnisgruppe; Eingrenzen der
Suche mit Produkt-Molekül-bezogenen
Kriterien.
-
Schritte:
-
- i) Eine IDS mit Reaktion, Molekülrolle (1:n),
Molekül
(1:1) und Molekül-Eigenschaften
(1:n) öffnen
- ii) Reaktionssuche (RSS) durchführen
- iii) Reaktionsbasierten Datensatz durchsuchen und zu verschiedenen
Molekülen
zugehörige
Daten anzeigen
- iv) Liste in Produktmoleküle
umwandeln
- v) Suche in den Produktmolekülen
durchführen
(z.B. nicht-strukturell, vielleicht eigenschaftsbezogen)
- vi) Produkt-Molekül-basierte
Datensatzgruppe durchsuchen und zu Reaktionen sowie Moleküleigenschaften
zugehörige
Daten anzeigen
-
- 9. Ein Benutzer führt eine Suche auf der unteren
Ebene in einer IDS durch und erhält
eine hierarchische Datensatzgruppe. Der Benutzer möchte dann
eine zweite Suche in dieser gleichen Hierarchie durchführen, indem
die Suchdomäne
auf die untere Ebene eingerichtet wird, in der er die vorherige
Suche durchgeführt hatte.
Der Benutzer kann die Domäne
der unteren Ebene einrichten, um den Inhalt seiner nachfolgenden Suchvorgänge weiter
einzugrenzen..
-
Er
kann auch Suchvorgänge
auf jeder Ebene in der IDS-Hierarchie durchführen und dann die aktuelle Such-/Anzeige-Domäne für diese
oder jede andere Ebene in der Hierarchie einrichten. Die Alternative
dazu ist, dass der Benutzer gezwungen wäre, viel komplexere Abfragen
auszuführen,
um die Treffer seiner Suche weiter einzugrenzen, und dies würde wahrscheinlich
zu beträchtlichen
Leistungsproblemen führen.
- 10. Ein Biologe zeigt fünf Assays (als den Stamm) an,
die Ergebnisse mit Molekülinformationen
enthalten. Die Datensatzgruppe stellt insgesamt 100 Moleküle dar.
Der Biologie würde
die Ergebnisse gerne umdrehen und mit dem Molekül als Stamm anzeigen. Er kann
die Abfrage erneut ausführen
und den Stamm so einrichten, dass er Molekül lautet, und die Molekül-IDs aus
der Datensatzgruppe verwenden, um die vorherige Datensatzgruppe
nach Molekül
geordnet anzuzeigen, d.h. der Benutzer bekommt 100 Datensätze zu sehen
und sieht alle Assay-Ergebnisse, die zu jeder Struktur gehören.
- 11. Verknüpfungen
unterstützen
die Verwendung der Oracle Text- und Oracle XMLDB-Funktionalität. Beispielweise
werden SELECT-Anweisungen wie die Folgenden unterstützt:
-
Dies
ermöglicht
die Integration von Suchvorgängen
in Dokumente, Datensätze
usw..
-
Obwohl
die hierin gezeigten und beschriebenen Ausführungsformen völlig in
der Lage sind, die Aufgaben der Erfindung zu erfüllen, muss klar sein, dass
diese Ausführungsformen
nur zum Zweck der Veranschaulichung und nicht zum Zweck der Einschränkung gezeigt
werden, und dass für
den Fachmann unter Berücksichtigung
der vorhergehenden Beschreibung Variationen offenkundig sind.
-
Anhang A: Ein vollständiges Beispiel
-
Das
folgende ist eine vollständige
Definition von Verknüpfungen
für den
Zugriff auf ein bevorzugtes Datenmodell. Es gestattet, dass Moleküle, CAS-Nummern,
Produkte, Pakete oder Kataloge der Stamm der abgeleiteten Hierarchie
sein können. 3 ist
eine grafische Ansicht des Netzwerks.
-
-
-
-
-
-
-
-
Anhang
B: Beispielhafte IDS-Muster
-
-
Anmerkungen:
-
- 1. Das Feld CorpID wird nicht abgerufen, wenn
ein Ausdruck Alle auswählen,
z.B. select * from Mol verwendet wird, weil es nicht als ein Ausgabefeld
der Mol-Verknüpfung
angegeben ist. Damit CorpID in diesem Fall abgerufen wird, muss
explizit darauf verwiesen werden, wie in select *, corpID from Mol.
Damit wird die Abfrage-Analyseroutine informiert, dass nach einer
Verknüpfung
gesucht werden soll, die das Feld CorpID bereitstellen kann.
- 2. Dieses Muster wird wahrscheinlich nicht sehr oft verwendet,
weil es erfordert, dass direkt auf ein Feld verwiesen wird, und
dann die Kosten des unmittelbaren Abrufs entstehen. Diese Art von
Beziehung wird wahrscheinlicher eine explizite Verbindung mit oder
ohne zurückgestelltem
Abruf verwenden.
- 3. Es ist zu beachten, dass, wenn CorpID in der SELECT-Liste
angegeben wird, jeder Abruf von Daten aus der Mol-Verknüpfung die
Joins und den Abruf von Werten der CorpID-Tabelle umfasst. (Dies
ist der unmittelbare Abruf.) Zum Zurückstellen des Abrufs, siehe
das zugehörige
Muster, das angibt, wie der Abruf zurückgestellt wird.
- 4. Dieses Muster ist nützlich,
wenn ein Feld nur selten abgerufen wird. Das Feld CTAB ist ein Beispiel
dafür. Es
kann für
den Client nicht abgerufen werden, weil es in nichts Nützliches
umgewandelt werden kann. Es wird jedoch manchmal durch untergeordnete
Abfragen abgerufen. Zum Beispiel select from mol where sss (ctab,
select ctab from Mol where cdbregno=1) = 1. Dieses Muster macht
das Feld für
den Abruf verfügbar, aber
nur, wenn explizit darauf verwiesen wird.
-
-
Anmerkungen:
-
- 1. Eine explizite Verbindung zwischen Verknüpfungen,
angegeben durch das PATH-Attribut, gestattet es, dass die Verbindung
vor dem Benutzer vollständig
verborgen wird. In diesem Fall ruft eine Abfrage Alle auswählen, z.B.
select * from Mol, CorpID ab, weil es als ein Ausgabefeld von der
mol-Verknüpfung angegeben worden
ist.
- 2. Es ist zu beachten, dass jeder Abruf von Daten aus der Mol-Verknüpfung die
Joins und den Abruf von Werten der CorpID-Tabelle umfasst. (Dies
ist der unmittelbare Abruf.) Zum Zurückstellen des Abrufs, siehe das
zugehörige
Muster, das angibt, wie der Abruf zurückgestellt wird.
-
-
-
Anmerkungen:
-
- 1. Dieses Muster ist mit dem vorherigen identisch
mit Ausnahme dessen, dass die Verknüpfung OneToOneDataConnector
durch eine Verknüpfung
OneToOneDeferredConnector ersetzt wird. Diese Änderung bewirkt, dass der Abruf
des CorpID-Werts zurückgestellt
wird, bis er tatsächlich
angefordert wird. Für
den Abruf muss eine zusätzliche
SQL-Anweisung ausgeführt
werden.
- 2. Dieses Muster wird typischerweise für Daten verwendet, deren Abruf
entweder teuer ist oder deren Datentyp mit SQL-Abfragen inkompatibel
ist. (Beispielsweise können
BLOBS nicht in einer SQL-Anweisung abgerufen werden, die den eindeutigen
Operator enthält.)
- 3. Dies zeigt auch, dass mehr als ein Feld von einer Eins-zu-Eins-Verknüpfung bearbeitet
werden kann.
-
-
-
Anmerkungen:
-
- 1. Dieses Muster ist identisch mit dem vorherigen
mit Ausnahme dessen, dass die verbundenen Daten das Ergebnis eines
Funktionsaufrufs sind
- 2. Dieses Muster wird aus dem gleichen Grund verwendet wie das
vorherige: zum Zurückstellen
teurer oder inkompatibler Abrufe. Es verbirgt auch die Komplexitäten von
Funktionsaufrufen vor dem Benutzer.
- 3. Es ist zu beachten, dass die Verknüpfungen mit der gleichen Tabelle
verbunden sind.
-
-
-
Anmerkungen:
-
- 1. Dieses Muster ist dem vorhergehenden ähnlich mit
Ausnahme dessen, dass es zeigt, wie das explizite PATH-Attribut
einen Mehrfach-Verknüpfungspfad
angeben kann.
- 2. Wenn eine andere Verknüpfung
vorhanden ist, die den CorpID-Wert zum Verbinden der Mol-Verknüpfung verwendet,
kann sie CorpID als das FROMFIELD angeben, und die Verweistabellen
werden transparent bearbeitet. Dies wird in einem folgenden Eins-zu-Viele-Muster
gezeigt.
-
-
-
Anmerkungen:
-
- 1. Eine untergeordnete Muster-Beziehung ist
manchmal nützlich
zum logischen Gruppieren von Daten, auch wenn die Datenbeziehung
Eins-zu-Eins ist.
- 2. Dieses gleiche Muster kann verwendet und das gleiche Ergebnis
erhalten werden, auch wenn sich die Adressdaten in der gleichen
Tabelle befinden wie der Rest der Firmendaten. In diesem Fall wäre das TOTABLE-Attribut der Adressen-Verknüpfung nur
die gleiche Firmen-Tabelle.
-
-
-
Anmerkungen:
-
- 1. Wenn strukturierte Daten als BLOBS in einer
RDBMS gespeichert sind, kann eine Wrapper-Klasse zum Bearbeiten
dieser Daten erforderlich sein. Dieses Muster stellt eine Möglichkeit
bereit, mit dieser Situation umzugehen. Wenn das FIELDWRAPPER-Attribut
angegeben ist, gibt die IDS die Daten automatisch als eine Instance
der angegebenen Klasse zurück.
Weitere Informationen sind den Angaben zur FieldWrapper-Klasse zu
entnehmen.
-
-
-
-
Anmerkungen:
-
- 1. Dieses Muster gestattet die Aufnahme von
externen Berechnungen in eine Verknüpfungsausgabe. Die Berechnung
wird durch die angegebene Berechnungs-Klasse ausgeführt, welche
die IIDSCalculator-Schnittstelle implementieren muss, die in der
CALCULATORCLASS-Eigenschaft angegeben wird.
- 2. Die Felder, welche die Eingabedaten für die Berechnung bereitstellen,
sollten als Verbindungsfelder in der Verknüpfung CalculatorConnector angegeben
werden.
- 3. Berechnete Felder werden automatisch als nicht durchsuchbar
gekennzeichnet.
- 4. Die Rechenprogramme werden ohne eine explizite Verbindung
definiert, aber eines hätte über das PATH-Attribut
angegeben werden können.
-
-
-
Anmerkungen:
-
- 1. Dies ist das Standardmuster, das für fast alle
Eins-zu-Viele-Beziehungen
verwendet wird. Der Abruf wird immer zurückgestellt.
-
-
-
-
-
Anmerkungen:
-
- 1. Tabellen-Aliasbezeichnungen müssen verwendet
werden, weil die gleichen Tabellen in verschiedenen Joins verwendet
werden können.
Wenn keine Aliasbezeichnungen verwendet werden, stellen Abfragen nicht
die korrekten Ergebnisse bereit.
- 2. Andere Komponenten (Katalysatoren, Lösungsmittel usw.) können durch
weitere Erweiterungen zur ComponentBase-Verknüpfung ausgesplittet werden.
-
-
-
-
Anmerkungen:
-
- 1. Dieses Muster verwendet die Verknüpfung DataSourceConnector,
welche die Verknüpfung
OneToManyDataConnector erweitert, um nicht- relationale Datenquellen zu bearbeiten.
Die Verwendung der Verbindungsfelder bleibt jedoch die gleiche.
- 2. ACD-MDL-Nummern stehen mit Beilstein-BRNs in Beziehung unter
Verwendung der CTB5-Verweistabelle. Die Art dieser Tabelle erfordert
2 unabhängige
Verweistabellen, von denen jede die Verwendung von verschiedenen
Filtern erfordert. Dies erfolgt über
die 2 Verknüpfungen
und Tabellen-Aliasbezeichnungen.
- 3. Die Beilstein-Verknüpfung
verwendet das Feld Compound_ID zum Verbinden ohne Berücksichtigung, dass
ihr Abruf zurückgestellt
wird und 2 weitere Verknüpfungen
für den
Zugriff erforderlich sind. Wenn das übergeordnete Beilstein-Feld
abgerufen wird, wird die SQL, die zum Abrufen des Felds Compound_ID
erforderlich ist, ausgeführt,
und ihr Wert wird dann von der Beilstein-Verknüpfung verwendet. Diese zusätzlichen
Schritte erfolgen transparent, ohne vom Benutzer oder der Beilstein-Verknüpfung gesehen
zu werden.
-
-
-
-
Anmerkungen:
-
- 1. Dieses Muster veranschaulicht die Verwendung
des Drehens zum Umwandeln von Daten. Die Aufnahme des <MetaData>-Elements stellt eine
Möglichkeit
bereit, anzugeben, wie die gedrehten Daten aussehen werden, die
es gestatten, dass Abfragen transparent ausgeführt werden. Ohne ein <MetaData>-Element müssen Abfragen über nicht-gedrehte
Daten erfolgen, was ziemlich benutzerfeindlich ist. Es ist zu beachten,
dass diese Verknüpfung
dynamisch (on-the-fly) während
der IDS-Initialisierung konfiguriert werden kann, so dass der Inhalt
des <MetaData>-Elements während der Laufzeit bestimmt
werden kann. Details sind in den Angaben zur IIDSInitializer-Schnittstelle
zu finden..
- 2. Die Übersetzung
von Eigenschaftskennung (PropID) in Eigenschaftsbezeichnung (Name)
erfolgt über die
PropIDToName-Verknüpfung,
die automatisch aufgerufen wird, wenn festgestellt wird, dass das
Feld Name durch die Verknüpfung
PivotConnector selbst nicht definiert ist.
- 3. Abfragen über
gedrehte Daten können
komplex sein, weil jede Abfrageklausel in mindestens 2 verschiedene
Klauseln übersetzt
wird, die über
die nicht-gedrehten Daten ausgeführt
werden. Jeder dieser Ausdrücke
muss ein anderes Tabellen-Alias verwenden, um zu verhindern, dass
sich die Tabellen gegenseitig störend
beeinflussen. Die Verknüpfung
PivotConnector bearbeitet dies transparent.
-
18 zeigt ein System zum Abfragen von einer oder
mehreren Datenbanken in Übereinstimmung mit
einer bevorzugten Ausführungsform
der Erfindung. Das System 1800 umfasst ein Benutzer-Datenendgerät 1802,
das an einen Abfrage-Server 1806 über ein Datenübertragungs-Netzwerk 1804 angeschlossen
ist. Der Abfrage-Server 1806 steht
in Verbindung mit einem oder mehreren Datenbank-Servern 1808a–c. Jeder
Datenbank-Server 1808a–c
umfasst eine oder mehrere Datenbanken 1800a–c, wobei
jede Datenbank eine oder mehrere Dateien enthält, in denen Daten gespeichert
sind. Jeder Datenbank-Server 1808a–c umfasst Datenbank-Management-Software
zum Verwalten einer entsprechenden Art von Datenbank (beispielsweise
umfasst der Datenbank-Server 1810a Software zum Verwalten
einer relationalen Datenbank, während
die Datenbank-Software 1810b Software zum Verwalten einer
hierarchischen Datenbank umfasst). Alternativ oder zusätzlich umfasst
jeder Datenbank-Server eine Datenbank, die Daten enthält, die
durch einen entsprechenden Daten-Anbieter bereitgestellt werden.
Die Datenbank-Server sind betriebsfähig zum Ausführen von
Datenbank-Abfragen mittels der Datenbank-Management-Software. Der
Abfrage-Server 1806 integriert
den einen oder die mehreren Datenbank-Server 1808a–c, so dass
auf jeden der Datenbank-Server (und ihre entsprechenden Datenbanken 1810a–c) durch das
Benutzer-Datenendgerät 1802 über den
Abfrage-Server zugegriffen werden kann. Das Benutzer-Datenendgerät 1902 ist
so ausgelegt, dass es ein Computerprogramm zum Definieren eines
Datennetzwerks, (beispielsweise Software zum Bearbeiten von XML)
und Software zum Bilden einer Datenbankabfrage ausführt. Einige
oder alle der vorher genannten Funktionalitäten des Benutzer-Datenendgeräts 1802 können zusätzlich oder
alternativ durch den Abfrage-Server 1806 bereitgestellt
werden.
-
Somit
wurde ein Verfahren zum Abfragen von einer oder mehreren Datenbanken
beschrieben, wobei das Verfahren die folgenden Schritte umfasst:
(a) Definieren, (beispielsweise in den Benutzer-Datenendgeräten 1802 oder
dem Abfrage-Server 1806),
eines Datennetzwerks, das eine Vielzahl von Datenquellen umfasst, die
in einer Hierarchie durch eine oder mehrere Verknüpfungen
verbunden sind, und (b) Bilden einer Datenbank-Abfrage, (wiederum
beispielsweise in den Benutzer-Datenendgeräten 1802 oder
dem Abfrage-Server 1806), die ein Attribut einer Verknüpfung enthält. Beispielsweise
kann die Verknüpfung
ein Attribut, (wie beispielsweise ein Attribut Connector NAME) zum
Identifizieren der Verknüpfung
enthalten und/oder ein Attribut, (wie beispielsweise ein Attribut
OutputField NAME), zum Angeben von wenigstens einem Teil einer Datenquelle
(beispielsweise eine Datenbanktabelle oder eine Spalte einer Datenbanktabelle,
die in einer Datenbank 1810a–e von einem der Datenbank-Server1808a–c gespeichert
ist), die mit der Verknüpfung
verknüpft
ist (oder durch sie verbunden wird).
-
Vorzugsweise
umfasst das Verfahren des Weiteren den Schritt (c) des Ausführens der
Datenbank-Abfrage. Beispielsweise kann die Abfrage auf dem Abfrage-Server 1806 und/oder
auf einem oder mehreren der Datenbank-Server 1808a–c ausgeführt werden.
Die Abfrage kann vorzugsweise aufgespalten werden, so dass verschiedene
Teile der Abfrage auf einem entsprechenden Datenbank-Server ausgeführt werden.
Vorzugsweise umfasst das Verfahren des Weiteren den Schritt (d)
der Rückgabe
von Daten, (beispielsweise über
den Abfrage-Server 1806 an das Benutzer-Datenendgerät 1802), die sich
aus dem Schritt des Abfragens der Datenbank ergeben. Vorzugsweise
werden die Daten in einem Format zurückgegeben, das auf dem definierten
Datennetzwerk basiert.
-
Vorzugsweise
sind die Datenquellen Knoten wie die hierin beschriebenen. Vorzugsweise
ist wenigstens eine der Datenquellen eine Tabelle einer relationalen
Datenbank oder Teil einer derartigen Tabelle (beispielsweise eine
oder mehrere Zeilen und/oder eine oder mehrere Spalten, oder ein
Abschnitt von einer oder mehreren Zeilen und/oder Spalten). Zusätzlich oder
alternativ können
andere Datenquellen, (beispielsweise nicht-relationale Datenbanken,
wie beispielsweise Altdatenbanken), verwendet werden. Vorzugsweise
werden die Datenquellen in einer oder mehreren Datenbanken als Datenbanken 1810a–e gespeichert,
wobei auf jede Datenbank von einem oder mehreren Datenbank-Servern 1808a–c zugegriffen
werden kann.
-
Somit
gestattet eine bevorzugte Ausführungsform
der Erfindung die Integration von Daten aus einer Vielzahl von ungleichartigen
Datenquellen, um so zu ermöglichen,
dass Datenquellen in einer einheitlichen Weise abgefragt werden,
(beispielsweise in einer Weise, die durch eine Hierarchie der Datenquellen
definiert wird), und/oder zu ermöglichen,
dass Daten, die über
eine Datenbankabfrage an die Datenquellen zurückgegeben werden, in einem
einheitlichen Format zurückgegeben
werden (beispielsweis in einem Format, das durch eine Hierarchie
der Datenquellen definiert wird). Eine bevorzugte Ausführungsform
der Erfindung kann das leichte und dynamische Definieren von Beziehungen
zwischen Datenquellen, (entweder in einer vorab gespeicherten Konfigurationsdatei
in dem Benutzer-Datenendgerät 1802 oder
dem Abfrage-Server 1806, oder dynamisch in Echtzeit in
einer dieser Komponenten), und insbesondere die Modifizierung in
Echtzeit (zum Zeitpunkt der Ausführung
der Abfrage) durch die entsprechende Konfiguration von Verknüpfungen
ermöglichen. Die
Konfiguration von Verknüpfungen
kann beispielsweise die Angabe von geeigneten Attributen in einer XML-Definition
der Verknüpfung
umfassen. Dadurch kann die Definition neuer Beziehungen zwischen
Daten ermöglicht
werden, ohne Änderungen
an den zu Grunde liegenden Datenquellen oder der Art, in der Daten
in diesen Datenquellen gespeichert sind, erforderlich zu machen.
-
Vorzugsweise
können
Verknüpfungen
Eins-zu-Eins- und/oder Eins-zu-Viele-Beziehungen zwischen zu definierenden
Datenquellen ermöglichen.
Vorzugsweise umfasst das Datennetzwerk eine Datenquelle auf einer
unteren Ebene, (wie beispielsweise einen Ursprungsknoten oder einen
Stammknoten), die mit einer oder mehreren Ebenen von Datenquellen
auf höherer
Ebene verknüpft
sind, (wie beispielsweise verbundene Knoten oder Astknoten), wobei
jede Ebene vorzugsweise einen oder mehrere Knoten umfasst. Vorzugsweise
definiert eine Verknüpfung
eine unidirektionale Verbindung zwischen Datenquellen. Beispielsweise
definiert eine Verknüpfung
typischerweise eine Verbindung von einer Datenquelle einer unteren Ebene
zu einer Datenquelle einer höheren
Ebene. Andere Verbindungen können
Verbindungen von Datenquellen einer höheren Ebene zurück zu Datenquellen
einer unteren Ebene definieren. Unter einigen Umständen wird
bevorzugt, dass gewisse derartige Verknüpfungen alle Knoten in einer
oder mehreren dazwischenliegenden Ebenen ausschließen.
-
Es
ist klar, dass die obige Beschreibung nur als Beispiel angegeben
wurde, und dass der Umfang der Erfindung nicht auf irgendwelche
oder alle dieser Beispiele beschränkt ist.