DBS Logo

DBS-II Projekte WS03/04

1. Projekt
2. Projekt
3. Projekt



1. Projekt

Aufgabenstellung
Gruppen
Links und Materialien

Aufgabenstellung

In diesem Projekt soll eine kleine Beispielanwendung entwickelt werden, in der mit Hilfe verschiedener objektorientierter Zugriffsschichten auf eine relationale Datenbank zugegriffen wird.

Gruppen

OJB (OQL)
OJB (JDO)
Hiberante
Gruppe A
Gruppe B
  1. Artin Avanes
  2. Nils Barnickel
  3. Deepak Chavan
  4. Boris Tsarev
  1. Jürgen Broß
  2. David Martens
  3. Arkadi Omeltchenko
  4. Maren Settekorn
erfolgreich bearbeitet :-)
erfolgreich bearbeitet :-)

Gruppe C
Gruppe D
  1. Wjatscheslaw Belousow
  2. Maria Bezverhy
  3. Jan Kretzchmar
  1. Sebastian Münch
  2. Holger Rösch
  3. Thorsten Weiberg
  4. Jing Zhao
erfolgreich bearbeitet :-)  erfolgrreich bearbeitet :-)

Gruppe E
  1. Daniel Weichert
  2. Jasmin Opitz
  3. Sürec Öczan
  4. M. Yahya Akil

Links und Materialien

ObJectRelationalBridge (OJB)
Hibernate
JDO


2. Projekt

Aufgabenstellung
Termine
Gruppen
Links und Materialien

Aufgabenstellung (pdf,ps)

Implementieren Sie ein generisches Mapping, um XML Dokumente in relationalen Datenbanksystemen abzulegen. Bilden Sie dazu die DOM Struktur eines XML Dokumentes in einem relationalen Schema ab.

Ihre Implementierung muß dabei folgende Anforderungen erfüllen :

  1. Beliebige XML Dokumente lassen sich abspeichern.
  2. Beliebig viele XML Dokumente können gespeichert werden.
  3. Die Ordnung zwischen den Elementen auf der gleichen Ebene bleibt erhalten.
Programmieren Sie eine update Methode, mit deren Hilfe ein neuer Knoten in ein beliebiges gespeichertes XML Dokument eingefügt oder entfernt werden kann. Gewährleisten Sie dabei das das gespeicherte Dokument zu jeder Zeit gültig ist, beachten Sie dabei insbesondere Referenzen innerhalb des zu manipulierenden XML Dokumentes.

Implementieren Sie eine query Methode, die ein XPath Ausdruck der Form


\begin{displaymath}
/Absolute\, Location\, Path/(Predicate)\end{displaymath}

auswerten kann. Dabei ist $Predicate$ ein Prädikat der Form $(@Attribute=value)$, andere Operatoren als $'='$ müssen nicht unterstützt werden.

Stellen Sie eine kleine graphische Benutzerschnittstelle bereit, mit der sich XML Dokumente einlesen, abspeichern, wiederherstellen sowie die update und query Methoden testen läßt.

Denken Sie über eine sinnvolle Indexierung der einzelnen Tabellen nach, um die Wiederherstellung eines Dokumentes zu beschleunigen.

Termine

19.01.2004
Abgabe des Quellcodes sowie einer kurzen Dokumentation, in der die wichtigsten Aspekte der Implementierung kurz beschrieben sind (ca. zwei DIN A4 Seiten).
21.01.2004
Testing Event bei Chips und Bier: Testläufe aller Programme. Welche Gruppe hat das schnellste Mapping programmiert ?

Vorläufige Ergebnisse vom Testingevent !!

  1. Einlesen von XML Daten (ps)
  2. Wiederherstellen von XML Daten (ps)
  3. Auswerten von XPath Ausdrücken (ps)

Gruppen

Gruppe A
Gruppe B
  1. Artin Avanes
  2. Nils Barnickel
  3. Deepak Chavan
  4. Jing Zhao
  1. Jürgen Broß
  2. David Martens
  3. Maren Settekorn
erfolgreich bearbeitet :-)
erfolgreich bearbeitet :-)

Gruppe C
  1. Wjatscheslaw Belousow
  2. Maria Bezverhy
  3. Sebastian Münch
  4. Jan Kretzchmar
erfolgreich bearbeitet :-)


Links und Materialien




3. Projekt

Aufgabenstellung
Termine
Gruppen
Links und Materialien

Aufgabenstellung ( pdf | ps )

Implementieren Sie einen Transaktionsmanger der die Überweisungen zwischen zwei Banken A und B mit Hilfe des 2PC Protokolls koordiniert.

Jede Bank verfügt dabei über eine eigene Datenbank, in der die Salden der Konten ihrer Kunden verwaltet werden. Die Datenbanken enthalten jeweils folgende Relationen:

Programmieren Sie den Transaktionsmanager (TM) und einen Client der die lokalen Transaktionen der einzelnen Banken kontrolliert und mit dem TM über eine Socket Verbindung kommuniziert. Die Kommunikation zwischen der Bank und der Bank DB soll über JDBC realisiert werden.

Der Transaktionsmanager soll eine Liste mit Transaktionen in folgendem Format aus einer Datei einlesen können:

<!DOCTYPE Batch [
<!ELEMENT Batch (Transfer*)>
<!ELEMENT Transfer (SourceAccount, DestAccount, Amount)>
<!ELEMENT SourceAccount (#PDATA)>
<!ELEMENT DestAccount (#PCDATA)>
<!ELEMENT Amount (#PCDATA)>
<!ATTLIST Transfer
id ID #REQUIRED>
<!ATTLIST SourceAccount
bank CDATA #REQUIRED>
<!ATTLIST DestAccount
bank CDATA #REQUIRED>
]>

Lokale Transaktionen scheitern, wenn z.B. die Kreditlinie für einen Kunden nicht ausreicht oder ein Konto zu einer bestimmten Kontonummer nicht existert. Weiterhin soll der Ausfall eines Knotens simuliert werden. Bauen Sie dazu in jeder Phase des 2PC Protokolls im Clientprozess einen zufallsbasierten Abbruch ein, der den Ausfall des Clients simulieren soll. Die Wahrscheinlichkeit für einen Ausfall soll bei 0,03 liegen.

Der Inhalt der Nachrichten, die über Sockets zwischen TM und Client ausgetauscht werden, ist frei zu definieren. Sie können hier entweder die einzelnen Kommandos im XML-Format verschicken oder eine eigene Syntax definieren.

Um aufzuzeigen, was in dem verteilten System passiert, benutzen Sie bitte Log4j (http://logging.apache.org/log4j/docs/index.html) und protokollieren Sie jede Aktion der Clients und des TMs. Konfigurieren Sie Log4j so, dass alle Ihre Meldungen an einen zentralen Logserver geschickt werden und dort mit Hilfe eines Loganalyzer wie z.B. LogFactor5 aufbereitet werden.

Termine

23.2.2004 : Abgabe und kurze Demonstration der Lösung

Gruppen

Gruppe A
Gruppe B
  1. Artin Avanes
  2. Nils Barnickel
  3. Deepak Chavan
  4. Jing Zhao
  5. Jürgen Broß
  1. David Martens
  2. Wjatscheslaw Belousow
  3. Sebastian Münch
  4. Jan Kretzchmar
  5. Maria Bezverhy



Links und Materialien