Paper - Institut für Informatik

Werbung
OPM Object-Protocol Model
Daniel Konrad
Seminararbeit im Rahmen des Seminars
„Datenintegration am Beispiel der Bioinformatik“
Institut für Informatik
Humboldt Universität zu Berlin
Februar 2003
Inhalt
1 Einführung
2 Das Object-Protocol Model
2.1 Objektklassen und Attribute
2.2 Die Protokollklasse
2.3 Die OPM Anfragesprache OPM_QL
2.4 Die OPM Data Management Tool
2.5 Der OPM Schema Translator
3 Das OPM Multidatenbank System
3.1 Motivation
3.2 Die OPM Multidatenbank Anfragesprache OPM*QL
3.3 Die OPM Multidatenbank Anfrage Strategie
3.4 Das Multidatenbank Verzeichnis
4 Ein Beispiel
4.1 Das GDB-GSDB Multidatenbank System
4.2 Beziehungen zwischen GDB und GSDB
4.3 Typische Anfragen über GDB und GSDB
3
4
4
5
5
5
7
8
8
9
9
11
12
12
12
12
5 Zusammenfassung
14
6 Anhang
15
7 Referenzen
16
1 Einführung
Die enormen Datenmengen die von wissenschaftlichen Experimenten und Simulationen
generiert werden, benötigen Datenbank Management Systeme (DBMS). Wissenschaftler
verwenden hierfür oft kommerzielle Systeme die sich im Einsatz bewährt haben und dies sind
im allgemeinen relationale DBMS. Gerade die molekularbiologischen Datenbanken greifen
auf diese DBMS zurück um ihre Daten zu organisieren. Als Beispiel seien hier die Genome
Data Base (GDB) an der John Hopkins School of Medicine, die Genome Sequence Data Base
(GSDB) am National Center for Genome Resources und die Protein Data Bank (PDB) am
Brookhaven National Laboratory genannt, welche alle unter Verwendung des Sybase DBMS
entwickelt wurden.
Die relationalen Datenbanksprachen, welche den relationalen DBMS zugrunde liegen,
eigenen sich nicht um komplexe wissenschaftliche Experimente zu modellieren. Die Daten
dieser Experimente werden meist über unzusammenhängende Tupel, welche darüber hinaus
noch über mehrere Tabellen verstreut sind repräsentiert. Dies macht Beschreibung,
Entwicklung und Wartung dieser Datenbanken sehr aufwendig und fehleranfällig.
Objektorientierte DBMS sind besser geeignet, um Objekt Strukturen darzustellen, welche von
wissenschaftlichen Experimenten erzeugt werden. Die von ihnen bereitgestellten Konstrukte
wie Objekte, Attribute und Vererbung werden auch häufig von Wissenschaftlern verwendet
um ihre Experimente und die daraus entstandenen Daten zu beschreiben. Kommerzielle
objektorientierte DBMS sind dennoch sehr aufwendig bei der Entwicklung und stellen meist
nur unzureichende Mechanismen zur Generierung von Anfragen bereit. Weiterhin sind sie
nicht geeignet um verschieden Sichten auf ein und dieselbe Anwendung (Experiment) zu
ermöglichen und auch die Modellierung solcher Experimente ist meist nur unzureichend
möglich.
Das Object-Protocol Model (OPM) ist ein Ansatz um die Unzulänglichkeiten dieser bisher
existierenden Datenmodelle zu beheben.
Um die Probleme bei der Integration heterogener Datenbestände zu bewältigen wurde
weiterhin ein auf OPM basierendes Multidatenbank Anfrage System entwickelt. Dieses
Object-Protocol Model Multidatabase Query System (OPM*QS) wird im Abschnitt 3
ausführlich besprochen.
2 Das Object-Protocol Model
Das Object-Protocol Model (OPM) ist eine objektorientiertes Datenmodel und unterstützt
spezielle objektorientierte Konstrukte wie Objekte und Vererbung. Auf die einzelnen
Konstrukte und ihr Darstellung im OPM wird im folgenden eingegangen.
2.1 Objektklassen und Attribute
Objekte im OPM werden eindeutig identifiziert über object identifiers (oids). Sie werden mit
Hilfe eines oder mehrerer Attribute beschrieben und sind in Klassen unterteilt. Eine
Teilmenge der Attribute einer Klasse repräsentiert den externen object identifier (ID) dieser
Klasse. Eine Klasse kann weiterhin als Spezialisierung (Unterklasse) einer anderen Klasse
definiert werden, wobei die Subklasse die Attribute der Superklasse vererbt bekommt.
Attribute haben einen Namen und besitzen einen Wert. Sie könne einfach sein oder aus einem
Tupel von mehreren Attributen bestehen. Die Adresse einer Person kann z.B. als Tupel
Adresse modelliert werden, welches aus den einfachen Attributen Straße, Stadt und
Postleitzahl besteht. Ein Attribute kann einen einzelnen Wert haben, eine Liste von Werten
oder einen Satz/Set von Werten. Diese Werten können primitiv, d.h. von einem vom System
bereitgestellten Datentyp (integer, char, ...) sein oder abstrakt wenn sie mit einer anderen
Objektklasse verbunden sind. Ein Beispiel für den Aufbau eines OPM Schemas kann man im
Anhang sehen.
Die Attribute einer Objektklasse können weiterhin in versionierte und nicht-versionierte
Attribute unterteilt werden. Nicht-versionierte Attribute repräsentieren unveränderbare
Objekteigenschaften, z.B. das Geburtsdatum einer Person, während versionierte Attribute
veränderliche Eigenschaften darstellen, z.B. die Adresse einer Person.
Weiterhin unterstützt OPM die Beschreibung von abgeleiteten Attributen. Abgeleitete
Attribute sind einfache Attribute deren Werten von Werten anderer Attribute abgeleitet
wurden und zwar mit Hilfe folgende Möglichkeiten: arithmetische Ausdrücke,
Aggregatfunktionen (min, max, sum, avg, count) und Attributzusammensetzungen.
Die Struktur einer Instanz eines Objekts ist folgendermaßen definiert (nach [1]):
Sei Oi eine Objektklasse und x eine Instanz dieser Klasse (x∈ Oi). Dann wird x dargestellt als
x = (oid(x), val(x)), wobei oid(x) der object identifier und val(x) der Wert von x ist. val(x) hat
die folgende Form: A1:A1(x), ..., An:An(x) , Aj ist der Name des Attributs und Aj(x) der
jeweilige Wert. Der Definition des Wertes sieht folgendermaßen aus.
1. wenn Aj eine einfaches Attribut mit einem primitiven Wert ist, dann besteht Aj(x)
aus einem Element, aus einer Liste oder aus einem Satz von Elementen
2. wenn Aj ein einfaches abstraktes Attribut mit Werten der Objektklasse O1 oder ...
oder Om ist, dann besteht Aj(x) aus einem Element, aus einer Liste oder aus einem
Set von Elementen von {oid(y) | y∈ Ok , 1 ≤ k ≤ m}
3. wenn Aj = (Aj1, ..., Ajn), dann besteht Aj(x) aus einem Tupel, aus einer Liste oder
aus einem Set von Tupeln der Form Aj1:Aj1(x), ..., Ajn:Ajn(x), wobei jede
Komponente Ajk(x), 1 ≤ k ≤ m aus einem Element besteht welches in Punkt 1 oder
2 definiert wurde
2.2 Die Protokollklasse
Um wissenschaftliche Experimente besser modellieren zu können, besitzt OPM
Protokollklassen. Diese Klassen sind ähnlich wie Objekte definiert, d.h. sie besitzen einen
Namen, eine Beschreibung, einen identifier und Attribute. Diese Protokollklassen können
ebenfalls mit den in 2.1 genannten Attributen spezifiziert werden. Darüber hinaus werden
auch sogenannte input und output Attribute unterstützt, mit deren Hilfe man die Eingabebzw. Ausgabedaten der entsprechenden Experimente repräsentieren kann. Es ergeben sich
hierbei auch Verbindungen zwischen einzelnen Protokollen (Experimenten): die output
Attribute eines Protokolls sind (zum Teil) die input Attribute eines anderen.
2.3 Die OPM Anfragesprache OPM_QL
Die OPM Anfragesprache hat eine an SQL angelehnte Struktur. Sie unterstützt spezielle
objektorientierte Konstrukte wie vererbte Klassen und abgeleitete Attribute. Es werden
grundsätzlich nur Anfragen über eine Klasse unterstützt, doch lässt sich dies durch die
Verwendung abstrakten Attributen oder abgeleiteten Klasse umgehen. Um die Komplexität
bei der Implementierung von OPM auf einem relationalen DBMS so gering wie möglich zu
halten, wurde auf weiterführende objektorientierte Konstrukte in OPM_QL verzichtet.
OPM_QL unterstützt vier Befehle zur Datenmanipulation: SELECT, INSERT, DELETE und
UPDATE, wobei im folgenden nur SELECT Statements erörtert werden.
Eine einfache OPM Anfrage könnte wie folgt aussehen (Quelle [2]):
Die Klasse Chromosome hat ein Attribut number und die Klasse Gene hat die
Attribute name und chromosome, wobei das Attribut chromosome Werte von der
Klasse Chromosome nimmt.
Die folgende Anfrage liefert alle Gene die auf Chromosom 13 liegen:
SELECT
FROM
WHERE
name
gene
chromosome.number = „13“;
2.4 Die OPM Data Management Tools
Um das erstellen, warten und arbeiten mit OPM bzw. den zugehörigen relationalen DBSM zu
erleichtern haben die Entwickler von OPM eine Reihe von OPM Data Management Tools zur
Verfügung gestellt, die hier im einzelnen erläutert werden sollen.
OPM wird zur Zeit nur auf relationale DBMS „aufgesetzt“, d.h. die Datenbanken selbst
werden mit einem herkömmlichen DBMS wie Sybase oder Oracle erstellt. OPM bietet dann
eine objektorientierte Sicht auf die Daten. Das OPM Schema muss somit auf das DBMS
spezifische relationale Schema gemappt werden. Dies geschieht mit Hilfe des OPM Schema
Translators, der in 2.5 näher erläutert wird.
Um ein solches OPM Schema zu erstellen, bieten sich mit den Data Management Tools zwei
Möglichkeiten:
Mit dem „relational to OPM schema conversion tool“ (Rel2OPM) kann eine
OPM Sicht (view) auf die Daten generiert werden. Die speziellen
objektorientierten Konstrukte von OPM werden hierbei natürlich nicht
berücksichtigt. Man kann mit dem „OPM Schema Editor“ diese Sicht aber ggf.
anpassen.
-
Alternativ kann erst ein OPM Schema erzeugt werden und dann entsprechend
auf die relationalen Konstrukte gemappt werden (OPM Schema Translator)
Die weiteren Data Management Tools sind in Abbildung 1 dargestellt:
OPM Schema
Editor
OPM Browsing
& Querying
OPM Schema
OPM Data
Rel2OPM
Database
Definition
Database
Procedures
OPM Schema
Translator
OPM-DBMS
Mapping File
Add Ref
Construct
SQL
Convert
Data
SQL Queries /
Transactions
SQL
Query Result
Exec
SQL
relationales DBMS
Abbildung 1: OPM Data Management Tools (Quelle [1])
2.5 Der OPM Schema Translator
Der OPM Schema Translator besteht im wesentlichen aus vier Teilen (Abbildung 2).
1. Überprüfung der Korrektheit des OPM Schemas
2. OPM Systemklassen und werden generiert und dem OPM Schema hinzugefügt
3. Mapping des OPM Schemas in eine abstraktes, DBMS unabhängiges relationales
Schema
4. Mapping des abstrakten Schema in eine DBMS spezifisches Schema
OPM Schema
Generierung von
System Attributen
OPM Schema mit
System Attributen
opm_to_rel
Mapping
Dictionary
Abstraktes
relationales Schema
to_sybase
to_oracle
to_...
Sybase Database
Defintions & Procedures
Oracle Database
Defintions & Procedures
... Database
Defintions & Procedures
Abbildung 2: Die Struktur des OPM Schema Translators (Quelle [5])
Eine kurze Übersicht über die Abfolge der einzelnen Schritte während des Mapping Vorgangs
soll im folgenden gegeben werden.
Bevor das eigentliche Mapping stattfindet, müssen noch einige Voraussetzungen geschaffen
werden. Zum einen müssen die Meta- und Systemklassen erzeugt werden. Zu diesen Klassen
gehört eine Klasse DATABASE mit drei Attributen: eine Identifikation _dbid, eine
Beschreibung _dbDescr und eine Name _dbName. Des weiteren wird ein Metaklasse
CLASSES erzeugt, in welcher alle Klassen u.a. mit einem Namen, einem Typ und einer ID
spezifiziert werden. Die Abhängigkeitsbeziehungen zwischen den Klasse und Protokollen
bezüglich Vererbung werden in den Metaklassen SCLASSES und SPROTOCOLS
gespeichert. Weitere Preprocessing Schritte sind u.a. die Festlegung der Reihenfolge in
welcher die einzelnen Objekte in relationale Konstrukte gemappt werden und spezielle
Verfahrensweisen für versionierte Attribute.
Beim eigentlichen Mapping werden alle Instanzen der Objekte durch eine sogenannte
Primärrelation Rp dargestellt. In dieser Primärrelation sind alle Attribute der Objektinstanz
gespeichert sowie die Objekt ID oid, welche zugleich der Primärschlüssel der Relation ist.
Falls es sich bei dieser Instanz um eine Unterklasse eines anderen Objekts handelt, ist die
Objekt ID ein Fremdschlüssel zu diesem Objekt. Auf dieselbe Art werden abstrakte Attribute
ebenfalls als Fremdschlüssel zum jeweiligen Objekt modelliert. Die versionierten Attribute
werden in einer eigenen Relation Rv gespeichert, die eine ähnliche Struktur wie Rp aufweist.
Um Attribute die als Liste oder Set modelliert sind darzustellen, benötigt man eine weitere
Relation Ra. Falls diese Attribute zusätzlich noch versioniert sind, werden sie über eine
Relation Rav gespeichert. Eine ausführlichere Beschreibung des gesamten Vorgangs und
Einzelheiten in Bezug auf die Modellierung der spezifischen objektorientierten Konstrukte
findet man in [4].
Das folgende kurze Beispiel soll den Prozeß veranschaulichen.
Im OPM Schema (angelehnt an GDB) soll die Klasse Chromosome als Unterklasse von
GenomicSegment modelliert sein. Des weiteren besitzt Chromosome ein abstraktes Attribut
cellularCompartment welches von der Klasse CompartmentDict abgeleitet ist.
OBJECT CLASS
ATTRIBUTE
Chromosome isa* GenomicSegment
cellularCompartement: [1,1] CompartmentDict
Das Mapping sieht dann wie folgt aus: Eine Primärrelation Rp mit dem Name Chromosome
und dem Primärschlüssel oid und dem Attribut cellularCompartment wird erzeugt. Da
Chromosome eine Unterklasse von GenomicSegment ist, ist das Attribut oid eine
Fremdschlüssel zu GenomicSegment. Das abstrakte Attribut cellularCompartment wird
ebenfalls als Fremdschlüssel auf CompartmentDict modelliert.
Chromosome (oid, cellularCompartment)
FOREIGN KEY (oid) TO GenomicSegment NOT NULL
FOREIGN KEY (cellularCompartment) TO CompartmentDict NOT NULL
3 Das OPM Multidatenbank System
3.1 Motivation
Molekularbiologische Daten sind meist über eine Vielzahl heterogener Datenbanken verteilt.
Diese Heterogenität äußert sich in mehreren Aspekte, welche hier nicht näher erläutert
werden.
Es stellt sich hierbei eines der größten Probleme für die Bioinformatik: die Datenintegration.
Die Strategien um dieses Problem zu lösen kann man in zwei Kategorien einteilen (nach [7]):
Konsolidierung:
o die einzelnen heterogenen Datenbanken werden in eine homogene Datenbank
integriert und durch diese ersetzt
o die einzelnen heterogenen Datenbanken werden mit einer gemeinsamen DDL
(Data Definition Language) oder DBMS reorganisiert
Föderation: es wird Zugriff auf mehrere heterogen Datenbanken ermöglicht, wobei
die einzelnen Datenbanken ihre Autonomie (Definition, Anwendung, ...) behalten
o Datenbanken werden mit Referenzen (Links) auf andere Datenbanken
erweitert
o Data Warehouses
o Datenbanken werden in einem Multidatenbank System organisiert
OPM verfolgt die Strategie der Multidatenbank Systeme und versucht mit den in 2.4
vorgestellten Tools das Arbeiten mit diesen Systemen zu erleichtern. Vor allem die
semantischen Probleme bei der Generierung von Schemen, Sichten und bei der Suche nach
Daten sollen somit teilweise gelöst werden.
3.2 Die OPM Multidatenbank Anfragesprache OPM*QL
OPM*QL ist ähnlich aufgebaut wie OPM_QL (siehe Abschnitt 2.3), verfügt aber nur über den
SELECT Befehl. Die weitere Unterstützung von INSERT, DELETE und UPDATE Befehlen
würde erheblich mehr Informationen über die einzelnen Datenbanken voraussetzen und somit
auch die Implementierung erschweren. Um die Funktionalität auch beim Zugriff auf mehrere
Datenbanken zu gewährleisten ist OPM*QL mit einigen Erweiterungen (im Vergleich zu
OPM_QL) versehen. Diese Erweiterungen ermöglichen Anfragen über mehrere Klassen von
verschiedene Datenbanken, erlauben die Navigation zwischen Klassen aus mehreren
Datenbanken und die Umbenennung von Anfragevariablen um mögliche Namenskonflikte zu
vermeiden.
Eine einfache OPM Anfrage könnte wie folgt aussehen (nach [2]):
SELECT
FROM
WHERE
AND
ID = GSDB:Gene, GSDBRef = GSDB.Gene.gdb_xref
GSDB:Gene
GSDB:Gene.gdb_xref IS NOT NULL
GSDb:Gene.name = „ACHE“;
GSDB:Gene bezieht sich hierbei auf die Klasse Gene aus der Datenbank GSDB. Wenn ein
Klassenname einzigartig ist, d.h. nur einmal und auch nur ein einer Datenbank vorkommt,
kann man die Bestimmung der Datenbank weglassen (z.B. nur Gene statt GSDB:Gene)
Im Multidatenbank System kann eine ähnliche Anfrage gestellt werden, diesmal aber unter
Einbeziehung einer zweiten Datenbank. Eventuell benötigte Bedingungen können im
Multidatenbank System auch Klassen aus verschiedene Datenbanken umfassen, wie folgendes
Beispiel zeigt (aus [2]).
SELECT
FROM
WHERE
AND
Name = GSDB:Gene.nem, Reason = HGD:Gene.reason,
Annotation = HGD:Gene.annotation
GSDB:Gene, HGD:Gene
HGD:Gene.accessionID = GSDB.Gene.gdb_xref
GSDB.Gene.name = „ACHE“
Der Join der beiden Gen Klassen von HGD und GSDB erfordert in der Praxis noch einfache
Stringmatching Operationen.
3.3 Die Multidatenbank Anfrage Strategie
Die Multidatenbank Anfrage Strategie besteht aus zwei Schritten (siehe auch Abbildung 3):
1. die Multidatenbank Anfrage wird in einzelne Anfragen für die entsprechenden
Datenbanken im Multidatenbanksystem zerlegt, wobei die einzelnen Anfragen mit
Hilfe des OPM Query Translators ausgewertet werden [3]
2. aus den Ergebnisse der einzelnen Anfragen wird das Ergebnis der Multidatenbank
Anfrage zusammengesetzt
OPM Multidatabase Query
Multidatabase
Directory
OPM Multidatabase
Query Processor
Single Database
Queries
Single Database
Queries
OPM Query
Translator
OPM Query
Translator
Database X
Database Y
Abbildung 3: Abarbeitung einer Multidatenbank Anfrage
In der aktuellen Version 4.1 wird die Multidatenbank Anfrage nach einem einfachem Schema
ausgewertet: die einzelnen Anfragen werden parallel abgearbeitet und die einzelnen
Ergebnisse werden lokal zusammengefasst (join). Dies ist im Hinblick auf die
Geschwindigkeit mit der die Anfrage abgearbeitet wird (Performance) natürlich äußerst
ineffizient. Deshalb haben die Entwickler eine alternativen Ansatz beschrieben. Die einzelnen
Anfragen werden hierbei sequentiell, d.h. nacheinander ausgeführt, wobei die Ergebnisse
jeder Anfrage die jeweils nächste Anfrage in der Sequenz beschränken. Dies kann je nach Art
der Anfrage viel effizienter sein.
Dieser Ansatz ist aber viel schwerer zu implementieren, da er z.B. einen bidirektionalen
Datenfluss zwischen dem OPM Multidatenbank System und den enthaltenen Datenbanken
beinhalten müsste und somit auch mehr Kooperation von den einzelnen Datenbaken erfordert.
Dies ist nötig um z.B. die Größe einzelner Tabellen (Relationen) in den jeweiligen
Datenbanken zu bestimmen und somit die beste Abarbeitungssequenz für die Anfragen zu
generieren.
Eine weitere Methode um die Performance zu erhöhen ist die Erweiterung des Query
Processors, also des Moduls welche die einzelnen Anfragen erstellt und die Ergebnisse
zusammensetzt. Der bisherige Query Processor kann nur Joins und einfache Bedingungen
(größer, kleiner, ...) auswerten. Er kann jedoch erweitert werden und somit auch Projektionen
(projections), komplexere Bedingungen und Aggregatfunktionen unterstützen.
Als letztes sei hier noch die Möglichkeit genannt sogenannte „distributed-join tools“ zu
verwenden, also Software Module die Multidatenbank SQL Anfragen über mehrere
relationale DBMS ermöglichen (Sybase Enterprise CONNECT). Dies gelingt natürlich nur
wenn die einzelnen Datenbanken homogen zueinander sind, d.h. im Idealfall alle mit
demselben DBMS erstellt. Diese Module können als Ergänzung zum aktuellen OPM
Multidatenbank Anfrage System gesehen werden. Da sie speziell auf ein bestimmtes DBMS
optimiert sind, können Anfragen hiermit erheblich schneller ausgewertet werden.
Eine OPM*QL Anfrage müsste dann nur noch in eine Multidatenbank SQL Anfrage übersetzt
und das Ergebnis wieder zurück in das OPM Datenformat konvertiert werden.
3.4 Das Multidatenbank Verzeichnis
Um eine heterogene Datenbank in eine OPM Multidatenbank System zu integrieren werden
diverse Informationen über diese Datenbank benötigt. Sie werden im Multidatenbank
Verzeichnis (Multidatabase Directory) gespeichert, welches aus folgenden drei Teilen besteht:
1. Allgemeine Informationen
o Name und Beschreibung der einzelnen Datenbank
o Ort und Geschichte der Datenbank
o Informationen über die DDL und die Implementierung
o Kontaktinformationen
o Zugangsinformationen
o Stichwörter (meist Klassennamen)
2. Schema Bibliothek (Schema Library)
o semantische Beschreibung der von der Datenbank dargestellten Konzepte
o Motivationen für bestimmte Designentscheidungen
o Synonyme und Stichwörter um Unterschiede in den einzelnen Datenbanken zu
erkennen
o Beispieldaten
o Mapping Verzeichnis OPM-DBMS
3. Link Bibliothek (Link Library)
o Informationen über bekannte Links zwischen Klassen in unterschiedlichen
Datenbanken, darunter Beschreibung der Semantik, Art des Zusammenhangs
(surjektiv, bijektiv, ...) und evtl. Informationen über Stringmatching
Operationen die ausgeführt werden müssen um den Link zu verfolgen
DATABASE GSDB
DESCRIPTION: „GSDB 2.0“
SERVER: GSDB
USERID: (user id)
PASSWORD: (password)
USERDB: gsdb
METADATAFILE: gsdb.so
CLASSES:
Feature
Gene
Product
...
DATABASE HGD
DESCRIPTION: „GDB 6.0 HGD“
SERVER: gdb60
USERID: (user id)
PASSWORD: (password)
USERDB: hgd
METADATAFILE: hgd.so
CLASSES:
Amplimer
Chromosome
Gene
...
LINK GSD-GDB-GENES
DESCRIPTION: „External reference from GSDB.Gene to HGD.Gene“
FROM: GSDB.Gene
TO: HGD.Gene
CODE: HGD:Gene.accessionID = GSDB:Gene.gdb_xref;
Abbildung 4: vereinfachtes Beispiel für den Inhalt eines Multidatenbank Verzeichnisses
(Quelle [2])
4 Ein Beispiel
4.1 Das GDB-GSDB Multidatenbank System
Die Genome Database (GDB) ist eine Molekulardatenbank für Gen-Mapping Daten an der
John Hopkins School of Medicine, Baltimore. Die Version 6.0 wurde mit einem Sybase
DBMS unter Verwendung des OPM Toolkits entwickelt. GDB besteht aus drei
unterschiedlichen Datenbanken: der Human Genome Database (HGD), der Citation Database
und der Registry Database.
Ein Überblick über die wichtigsten Klassen findet man im Anhang
Die Genome Sequence Database (GSDB) ist eine Datenbank für Gensequenz Daten und wird
am National Center for Genome Resources betrieben. Sie wurde ebenfalls mit einem Sybase
DBMS entwickelt, aber diesmal ohne Zuhilfenahme des OPM Toolkits. Um den Zugriff über
OPM zu ermöglichen, wurde nachträglich eine OPM Sicht generiert.
4.2 Beziehungen zwischen GDB und GSDB
Bei Betrachtung des OPM Schemas beider Datenbanken finden sich einige Gemeinsamkeiten
als auch Unterschiede in der Art wie bestimmte Daten modelliert werden. Dies soll am
Beispiel der Klasse Gene erläutert werden.
Beide Datenbanken haben eine Klasse Gene. In GDB ist die Klasse Gene eine Unterklasse
von GenomicSegment. Informationen über das jeweilige Gen enthalten u.a. eine Begründung
warum diese Genregion als Gen angesehen wird (Gene.evidence) und Links zu Gen-Familien
denen dieses Gen angehört (Gene.families). Ein Gen in GDB kann über seine GDB accession
ID auch von externen Datenbanken referenziert werden.
In GSDB sind Gene ein Feature einer Gensequenz, wobei hierbei nicht von einer
Spezialisierung gesprochen werden kann, da ein Gen in mehreren Features erwähnt sein kann.
Weiterhin wird der Name des Gens und Referenzen auf externe Datenbanken über z.b.
gdb_xref oder mousedb_xref gespeichert.
Weitere Informationen über Beziehungen zwischen GDB und GSDB finden sich in [2].
4.3 Typische Anfragen über GDB und GSDB
Die folgenden Anfragen stammen aus [3].
Anfrage 1: Finde Gene auf Chromosom X die für die Produktion des Proteins kinase sorgen.
Um solche Gene zu finden, müssen zuerst in der Klasse GSDB:Feature.products
entsprechende Produkte (Proteine) dieses Namens gesucht werden um dann Gene zu finden
die mit demselben Produkt assoziiert sind. Auf das entsprechende Gen in der GDB Human
Genome Database (HGD) kann dann über gdb_xref zugegriffen werden. (Eventuell sind
dabei noch einfache Stringmatching Operationen durchzuführen). Letztlich wird dann in HGD
getestet, ob das entsprechende Gen auf dem Chromosom X liegt.
SELECT
FROM
WHERE
AND
AND
HGD:Gene.displayName, HGD:Gene.accessionID
GSDB:Feature, HGD:Gene
Feature.products.name MATCH „%kinase%“
Feature.genes.gdb_xref = HGD:Gene.accessionID
HGD:Gene.mapElements.map.chromosome.displayName = „X“;
Diese OPM*QL Anfrage generiert folgende OPM_QL Anfrage an HGD
SELECT
FROM
WHERE
displayName, accessionID, mapElements.map.chromosome.displayName
Gene
mapElements.map.chromosome.displayName = „X“;
... und an GSDB
SELECT
FROM
WHERE
products.name, genes.gdb_xref
Feature
products.name MATCH „%kinase%“;
Die Bedingung Feature.genes.gdb_xref = HGD:Gene.accessionID wird lokal überprüft.
Anfrage 2: Finde sequenzierte Regionen auf Chromosom 17 mit einer Läge größer als 10000.
Über die Klasse MapElement werden Elemente auf Chromosom 17 gesucht. Links zwischen
diese Elementen und GSDB werden über die HGD Klasse SequenceLink gefunden. In GSDB
wird dann getestet ob die Sequenz länger als 10000 ist.
SELECT
FROM
WHERE
AND
AND
AND
AND
Entry.accession_number, Entry.sequence.length
HGD:MapElement, HGD:SequenceLink, GSDB:Entry
MapElement.map.chromosome = „17“
SequenceLink.dBObject = MapElement.segment
SequenceLink.externalDB.displayName = „GSDB“
SequenceLink.accessionID = Entry.accession_number
Entry.sequences.length > 10000;
Diese OPM*QL Anfrage generiert folgende OPM_QL Anfragen an HGD
SELECT
FROM
WHERE
map.chromosome, segment
MapElement
map.chromosome = „17“;
Und
SELECT
FROM
WHERE
dBObject, externalDB.displayName, accessionID
SequenceLink
externalDB.displayName = „GSDB“;
... sowie ein Anfrage an GSDB
SELECT
FROM
WHERE
accession_number, sequences.length
Entry
sequences.length > 10000;
Bei dieser zweiten Anfrage wird ein großes Problem von OPM deutlich: die ineffiziente
Abarbeitung und Auswertung von Anfragen. Die Aufspaltung einer Anfrage an HGD in Zwei
mag zunächst nicht sehr aufwendig erscheinen, doch wenn man das anschließende Joinen der
Ergebnisse hinzunimmt kann sich dies schnell ändern. Des weiteren ist zu bedenken, dass es
sich hierbei um eine sehr einfache Anfrage handelt: in der Praxis sind Anfragen mit mehreren
hundert Bedingungen keine Seltenheit und wenn dann die Auswertung auf ähnliche Art und
Weise erfolgt, steht man sehr schnell vor einem großen Performance Problem.
5 Abschließende Bemerkungen
OPM bietet mit seinen objektorientierten Konstrukten und den Data Management Tools sehr
praxisnahe und effiziente Möglichkeiten zur Modellierung und Speicherung
wissenschaftlicher Experimente und Daten. In der Praxis hat sich OPM bis auf die
Verwendung in einigen wenigen Datenbanken allerdings nicht durchgesetzt. Vor allem die
Geschwindigkeit mit welcher die einzelnen Anfragen abgearbeitet werden, ist im Vergleich
mit anderen (relationalen) DBMS zu langsam. Interessante Ideen wie z.B. die sequenzielle
Abarbeitung der Anfragen, die Verwendung von Inter-Database Links und ein erweiterter
Query Processor wurden leider nicht umgesetzt. Auch die Protokollklasse, eigentlich als
Arbeitserleichterung bei der Modellierung von Experimenten gedacht, wurde in der Praxis
kaum verwendet und selbst von den OPM Entwicklern wurde dieses Konzept in späteren
Veröffentlichungen nicht mehr erwähnt.
Abschließend gesehen war OPM ein, wenn auch gescheiterter, Versuch die Vorzüge von
objektorientierten Datenmodellen bei der Lösung der Problematik der Datenintegration zum
Tragen kommen zu lasen.
Nach einem DBMS welches genauso effizient ist wie herkömmliche relationale DBMS
,darüber hinaus noch eine praxisnähere Modellierung der Daten (z.B. objektorientiert) erlaubt
und (wenigstens teilweise) die Probleme der Datenintegration löst, muss also weiterhin
geforscht werden.
6 Anhang
Teil des GDB OPM Schemas (aus [2])
OBJECT CLASS Amplimer isa* GenomicSegment
ATTRIBUTE isExpressed: [1,1] YesNoUnknown_UnkDict
ATTRIBUTE sequence: list-of [0,] VARCHAR(255)
OBJECT CLASS Chromosome isa* GenomicSegment
ATTRIBUTE cellularCompartment: [1,1] CompartmentDict
OBJECT CLASS CitationLink isa* ExternalLink
ATTRIBUTE dBObjects: set-of [1,] DBObject
OBJECT CLASS DBObjects
ID: accessionID
ATTRIBUTE accessionID: [1,1] VARCHAR(50)
ATTRIBUTE displayName: [1,1] VARCHAR(255)
ATTRIBUTE objectClass: [1,1] VARCHAR(30)
ATTRIBUTE searchName: [1,1] VARCHAR(255)
OBJECT CLASS ExternalLink
ATTRIBUTE displayName: [1,1] VARCHAR(255)
ATTRIBUTE searchName: [1,1] VARCHAR(255)
ATTRIBUTE objectClass: [1,1] VARCHAR(255)
ATTRIBUTE externalDB: [1,1] ExternalDB
ATTRIBUTE accessionID: [1,1] VARCHAR(255)
ATTRIBUTE externalVersion: [0,1] VARCHAR(20)
OBJECT CLASS Gene isa* GenomicSegment
ATTRIBUTE evidence (reason, annotation): set-of [1,]
([1,1] GeneEvidenceDict, [1,1] VARCHAR(255))
ATTRIBUTE families
DERIVATION: ! genes [GeneFamily]
OBJECT CLASS GeneProduct isa* BiologicalObject
ATTRIBUTE sequences
DERIVATION: ! dBObject [SequenceLink]
ATTRIBUTE genes (gene, subunit, nCopies): set-of [0,]
([1,1] Gene, [0,1] VARCHAR(20), [0,1] SMALLINT)
OBJECT CLASS GenomicSegment isa* MappingObject
ATTRIBUTE mapsOf
DERIVATION: ! mapOf [Map]
ATTRIBUTE sequences
DERIVATION: ! dBObject [SequenceLink]
OBJECT CLASS Map isa* MappingObject
ATTRIBUTE chromosome: [1,1] Chromosome
OBJECT CLASS MapElement isa* MappingObject
ATTRIBUTE segment: [1,1] GenomicSegment
ATTRIBUTE map: [1,1] Map
OBJECT CLASS Organism isa* BiologicalObject
ATTRIBUTE taxonomicDescriptions (externalDB, externalAccessionID,
externalVersion): set-of [0,]
([0,1] ExternalDB, [0,1] VARCHAR(255), [0,1] VARCHAR(20))
7 Referenzen
[1]
Chen, I.A. and Markowitz, V.M., An Overview of the Object-Protocol Model (OPM)
and the OPM ata Management Tools. Information Systems, 20(5), pp. 393-418, 1995
[2]
Chen, I.A.; Kosky, A., Markowitz, V.M. and Szeto E., OPM*QS: The Object-Protocol
Model Multidatabase Query System, Technical Report LBL-38181, 1996
[3]
Chen, I.A.; Kosky, A., Markowitz, V.M. and Szeto E., The OPM Query Translator,
Technical Report LBL-38180, 1996
[4]
Chen, I.A. and Markowitz, V.M., Mapping Object-Protocol Schema into Relational
Database Scheams and Queries, Technical Report LBL-33048, 1996
[5]
Chen, I.A. and Markowitz, V.M., OPM Schema Translator 4.1,Technical Report LBL35582, 1996
[6]
Chen, I.A.; Kosky, A., Markowitz, V.M. and Szeto E., Constructing and Maintaining
Scientific Database Views in the Framework of the Object-Protocol Model, Technical
Report LBL-358359, 1997
[7]
Chen, I.A.; Kosky, A. and Markowitz, V.M., Exploring Heterogeneous Molecular
Biology Databases in the Context of the Object-Protocol Model, Theoretical and
Computational Genome Research, Plenum, 1996
Herunterladen