|
DBS-II Projekte WS03/04
|
|
1. Projekt
Aufgabenstellung
In diesem Projekt soll eine kleine Beispielanwendung entwickelt werden,
in der mit Hilfe verschiedener objektorientierter Zugriffsschichten auf
eine relationale Datenbank zugegriffen wird.
- Beschreibung des Anwendungsszenarios und detailierte
Aufgabenbeschreibung (html),(ps),(pdf)
- In der Übung haben wir kurz über das Klassendesign des
Szenarios gesprochen und eine entsprechende Hierarchie festgelegt (png),(ps),(pdf).
- Vorhandenes Schema und Daten. (MySQL Dump, HSQLDB Dump).
Gruppen
OJB
(OQL)
|
OJB
(JDO)
|
Hiberante
|
Gruppe A
|
Gruppe B
|
- Artin Avanes
- Nils Barnickel
- Deepak Chavan
- Boris Tsarev
|
- Jürgen Broß
- David Martens
- Arkadi Omeltchenko
- Maren Settekorn
|
erfolgreich
bearbeitet :-)
|
erfolgreich
bearbeitet :-) |
|
Gruppe C
|
Gruppe D
|
- Wjatscheslaw Belousow
- Maria Bezverhy
- Jan Kretzchmar
|
- Sebastian Münch
- Holger Rösch
- Thorsten Weiberg
- Jing Zhao
|
erfolgreich
bearbeitet :-) |
erfolgrreich
bearbeitet :-)
|
|
Gruppe E
|
- Daniel Weichert
- Jasmin Opitz
- Sürec Öczan
- M. Yahya Akil
|
|
Links und Materialien
ObJectRelationalBridge (OJB)
|
|
Hibernate
|
|
JDO
|
|
2. Projekt
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 :
- Beliebige XML Dokumente lassen sich abspeichern.
- Beliebig viele XML Dokumente können gespeichert werden.
- 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
auswerten kann. Dabei ist ein
Prädikat der Form ,
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 !!
- Einlesen von XML Daten (ps)
- Wiederherstellen von XML Daten (ps)
- Auswerten von XPath Ausdrücken (ps)
Gruppen
Gruppe A
|
Gruppe B
|
- Artin Avanes
- Nils Barnickel
- Deepak Chavan
- Jing Zhao
|
- Jürgen Broß
- David Martens
- Maren Settekorn
|
erfolgreich
bearbeitet :-)
|
erfolgreich
bearbeitet :-)
|
|
Gruppe C
|
- Wjatscheslaw Belousow
- Maria Bezverhy
- Sebastian Münch
- Jan Kretzchmar
|
erfolgreich bearbeitet :-)
|
|
Links und Materialien
- Zum Testen von einfachen XML Dokumenten ohne Processing
Instructions, Namespaces etc. könnt ihr z.B. Shakespeares
Stücke (zip) verwenden.
- Zum Testen von XML Dokumenten mit vielen Attributen eignen sich
SVG Grafiken wie z.B. der Picasso
aus der 5. Übung
3. Projekt
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:
- Konto(AccountNr, ClientName, CreditLine, Balance)
- Transfer(TransferNr, SourceBank, SourceAccount,
DestAccount,
Amount)
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
|
- Artin Avanes
- Nils Barnickel
- Deepak Chavan
- Jing Zhao
- Jürgen Broß
|
- David Martens
- Wjatscheslaw Belousow
- Sebastian Münch
- Jan Kretzchmar
- Maria Bezverhy
|
|
|
|
Links und Materialien