47
WS 2009/10 Datenbanksysteme Fr 15:15 – 16:45 R 0.006 Vorlesung #12 Mehrbenutzersynchronisation

WS 2009/10 Datenbanksysteme Fr 15:15 – 16:45 R 0.006 Vorlesung #12 Mehrbenutzersynchronisation

Embed Size (px)

Citation preview

Page 1: WS 2009/10 Datenbanksysteme Fr 15:15 – 16:45 R 0.006 Vorlesung #12 Mehrbenutzersynchronisation

WS 2009/10Datenbanksysteme

Fr 15:15 – 16:45R 0.006

Vorlesung #12

Mehrbenutzersynchronisation

Page 2: WS 2009/10 Datenbanksysteme Fr 15:15 – 16:45 R 0.006 Vorlesung #12 Mehrbenutzersynchronisation

© Bojan Milijaš, 15.01.2010 Vorlesung #12 - Mehrbenutzersynchronisation 2

WS 2009/10Datenbanksysteme

Fr 15:15 – 16:45R 0.006

„Fahrplan“ Motivation Fehler bei unkontrolliertem Mehrbenutzerbetrieb

Lost Update Dirty Read (Non-Repeatable Read) Phantom

Serialisierbarkeit Transaktionshistorien, Datenbank-Scheduler Sperrbasierte Synchronisation Recovery-Fähigkeit und Verklemmungen (Deadlocks)

werden nächstes Semester behandelt

Page 3: WS 2009/10 Datenbanksysteme Fr 15:15 – 16:45 R 0.006 Vorlesung #12 Mehrbenutzersynchronisation

© Bojan Milijaš, 15.01.2010 Vorlesung #12 - Mehrbenutzersynchronisation 3

WS 2009/10Datenbanksysteme

Fr 15:15 – 16:45R 0.006

Motivation - Mehrbenutzerbetrieb

Mehrbenutzerbetrieb (Multiprogramming) – gleichzeitige (nebenläufige, parallele) Ausführung mehrerer Programme

führt zu besseren Auslastung eines Computersystems als Einzelbenutzersystem

Prinzip: während auf eine interaktive (aus „Computer“-Sicht sehr langsame) Benutzereingabe oder Freigabe einer Resource (z.B. Drucker) gewartet wird, kann der Computer rechenintensive Vorgänge anderer Programme verarbeiten

Oft geht es nur in Mehrbenutzerbetrieb Beispiel: (Online-)Bestellungen bei Versand-Handel

Page 4: WS 2009/10 Datenbanksysteme Fr 15:15 – 16:45 R 0.006 Vorlesung #12 Mehrbenutzersynchronisation

© Bojan Milijaš, 15.01.2010 Vorlesung #12 - Mehrbenutzersynchronisation 4

WS 2009/10Datenbanksysteme

Fr 15:15 – 16:45R 0.006

Motivation – Mehrbenutzerbetrieb (2) Mehrbenutzerbetrieb hat sich bereits in der Praxis überall

etabliert, nicht nur auf großen Server sondern sogar auf PCs, die als „persönliche“ Arbeitsplatzstationen ursprünglich für den Einzelbenutzerbetrieb konzipiert waren.

Beispiele: Windows2000, WindowsXP, Linux statt MS DOS und Windows3.1

Ihr Rechner (PC oder Laptop) verarbeitet bereits mehrere Tasks gleichzeitig und kann als Server im Mehrbenutzerbetrieb eingesetzt werden, sobald Sie im Netz erreichbar sind. Einzelbenutzerbetrieb ist auf der Betriebsystemebene so gut wie verschwunden!

Die meisten Programme innerhalb eines Mehrbenutzersystems arbeiten aber immer noch im Einzelbenutzerbetrieb (exklusiv) mit sehr eingeschränkten Kooperationsmöglichkeiten auf der Datei-Ebene. Wie sieht es aus bei den Datenbanken?

Page 5: WS 2009/10 Datenbanksysteme Fr 15:15 – 16:45 R 0.006 Vorlesung #12 Mehrbenutzersynchronisation

© Bojan Milijaš, 15.01.2010 Vorlesung #12 - Mehrbenutzersynchronisation 5

WS 2009/10Datenbanksysteme

Fr 15:15 – 16:45R 0.006

Page 6: WS 2009/10 Datenbanksysteme Fr 15:15 – 16:45 R 0.006 Vorlesung #12 Mehrbenutzersynchronisation

© Bojan Milijaš, 15.01.2010 Vorlesung #12 - Mehrbenutzersynchronisation 6

WS 2009/10Datenbanksysteme

Fr 15:15 – 16:45R 0.006

Fehlerklassifizierung

Es gibt drei Fehlerarten:1. „Lost Update“ – verlorengegangene Änderungen

Benutzer 1 ändert etwas in File15.xls und speichert ab. Benutzer 2 ändert etwas in File15.xls und speichert ab. Die Version des Benutzer 2 ist zuletzt gespeichert, die

Arbeit des Benutzers 1 geht verloren.

2. „Dirty Read“ – Lesen von nicht freigegebenen Änderungen Das Konto wird fälschlicherweise vorübergehend mit

10000 € belastet. Zinsen werden mit –10000 € berechnet und abgezogen.

3. „Phantom“ - ein neuer Wert tritt während der Abarbeitung einer langen Transaktion auf

Page 7: WS 2009/10 Datenbanksysteme Fr 15:15 – 16:45 R 0.006 Vorlesung #12 Mehrbenutzersynchronisation

© Bojan Milijaš, 15.01.2010 Vorlesung #12 - Mehrbenutzersynchronisation 7

WS 2009/10Datenbanksysteme

Fr 15:15 – 16:45R 0.006

Fehlerklassifizierung (2)

Es folgen die Beispiele der 3 Fehlerarten anhand der Transaktionsabarbeitung ...

I. Lost Update

II. Dirty Read

III. Phantom

Page 8: WS 2009/10 Datenbanksysteme Fr 15:15 – 16:45 R 0.006 Vorlesung #12 Mehrbenutzersynchronisation

© Bojan Milijaš, 15.01.2010 Vorlesung #12 - Mehrbenutzersynchronisation 8

WS 2009/10Datenbanksysteme

Fr 15:15 – 16:45R 0.006

Page 9: WS 2009/10 Datenbanksysteme Fr 15:15 – 16:45 R 0.006 Vorlesung #12 Mehrbenutzersynchronisation

© Bojan Milijaš, 15.01.2010 Vorlesung #12 - Mehrbenutzersynchronisation 9

WS 2009/10Datenbanksysteme

Fr 15:15 – 16:45R 0.006

Page 10: WS 2009/10 Datenbanksysteme Fr 15:15 – 16:45 R 0.006 Vorlesung #12 Mehrbenutzersynchronisation

© Bojan Milijaš, 15.01.2010 Vorlesung #12 - Mehrbenutzersynchronisation 10

WS 2009/10Datenbanksysteme

Fr 15:15 – 16:45R 0.006

Page 11: WS 2009/10 Datenbanksysteme Fr 15:15 – 16:45 R 0.006 Vorlesung #12 Mehrbenutzersynchronisation

© Bojan Milijaš, 15.01.2010 Vorlesung #12 - Mehrbenutzersynchronisation 11

WS 2009/10Datenbanksysteme

Fr 15:15 – 16:45R 0.006

Mehrbenutzer- vs. Ein-Benutzerbetrieb

Mehrbenutzerbetrieb Vorteile: Guter Durchsatz,

Gute Systemauslastung Nachteile: Lost update, Dirty

Read, Phantom

Einbenutzerbetrieb Vorteile: keine

Mehrbenutzer-Fehler Nachteile: schlechter

Durchsatz, schlechte Systemauslastung

Man soll Vorteile von beiden Betriebsarten kombinieren Serialisierbarkeit

Page 12: WS 2009/10 Datenbanksysteme Fr 15:15 – 16:45 R 0.006 Vorlesung #12 Mehrbenutzersynchronisation

© Bojan Milijaš, 15.01.2010 Vorlesung #12 - Mehrbenutzersynchronisation 12

WS 2009/10Datenbanksysteme

Fr 15:15 – 16:45R 0.006

Serialisierbarkeit Um das „I“ (Isolation) aus ACID zu erreichen und

dennoch einen guten Durchsatz und gute Auslastung beizubehalten, verarbeitet man die Transaktionen kontrolliert parallel - „verzahnt“

Man lässt die Transaktionen nebenläufig ablaufen, sorgt aber mit einer Kontrollkomponente (Mehrbenutzersynchronisation) dafür, dass beobachtbare Wirkung der nebenläufigen Ausführung einer möglichen seriellen Abarbeitung (wie in Einbenutzerbetrieb) entspricht

Daher „serialisierbar“ – „möglichst seriell“

Page 13: WS 2009/10 Datenbanksysteme Fr 15:15 – 16:45 R 0.006 Vorlesung #12 Mehrbenutzersynchronisation

© Bojan Milijaš, 15.01.2010 Vorlesung #12 - Mehrbenutzersynchronisation 13

WS 2009/10Datenbanksysteme

Fr 15:15 – 16:45R 0.006

Page 14: WS 2009/10 Datenbanksysteme Fr 15:15 – 16:45 R 0.006 Vorlesung #12 Mehrbenutzersynchronisation

© Bojan Milijaš, 15.01.2010 Vorlesung #12 - Mehrbenutzersynchronisation 14

WS 2009/10Datenbanksysteme

Fr 15:15 – 16:45R 0.006

Page 15: WS 2009/10 Datenbanksysteme Fr 15:15 – 16:45 R 0.006 Vorlesung #12 Mehrbenutzersynchronisation

© Bojan Milijaš, 15.01.2010 Vorlesung #12 - Mehrbenutzersynchronisation 15

WS 2009/10Datenbanksysteme

Fr 15:15 – 16:45R 0.006

Page 16: WS 2009/10 Datenbanksysteme Fr 15:15 – 16:45 R 0.006 Vorlesung #12 Mehrbenutzersynchronisation

© Bojan Milijaš, 15.01.2010 Vorlesung #12 - Mehrbenutzersynchronisation 16

WS 2009/10Datenbanksysteme

Fr 15:15 – 16:45R 0.006

Page 17: WS 2009/10 Datenbanksysteme Fr 15:15 – 16:45 R 0.006 Vorlesung #12 Mehrbenutzersynchronisation

© Bojan Milijaš, 15.01.2010 Vorlesung #12 - Mehrbenutzersynchronisation 17

WS 2009/10Datenbanksysteme

Fr 15:15 – 16:45R 0.006

Page 18: WS 2009/10 Datenbanksysteme Fr 15:15 – 16:45 R 0.006 Vorlesung #12 Mehrbenutzersynchronisation

© Bojan Milijaš, 15.01.2010 Vorlesung #12 - Mehrbenutzersynchronisation 18

WS 2009/10Datenbanksysteme

Fr 15:15 – 16:45R 0.006

Theorie der Serialisierbarkeit Vorabdefinitionen bzw. Erläuterungen Transaktionen – nur Basisoperationen BOT, read(),

write(), commit, abort Historie (Schedule) – zeitliche Anordnung der

einzelnen verzahnt ausgeführten Elementaroperationen einer Menge von parallel laufenden Transaktionen

Es muss die Reihenfolge (Ordnung) der Teiloperationen gegeben werden

... weiter Kemper-Folien 10 bis 18 (Kapitel 11) ...

Page 19: WS 2009/10 Datenbanksysteme Fr 15:15 – 16:45 R 0.006 Vorlesung #12 Mehrbenutzersynchronisation

© Bojan Milijaš, 15.01.2010 Vorlesung #12 - Mehrbenutzersynchronisation 19

WS 2009/10Datenbanksysteme

Fr 15:15 – 16:45R 0.006

Page 20: WS 2009/10 Datenbanksysteme Fr 15:15 – 16:45 R 0.006 Vorlesung #12 Mehrbenutzersynchronisation

© Bojan Milijaš, 15.01.2010 Vorlesung #12 - Mehrbenutzersynchronisation 20

WS 2009/10Datenbanksysteme

Fr 15:15 – 16:45R 0.006

Page 21: WS 2009/10 Datenbanksysteme Fr 15:15 – 16:45 R 0.006 Vorlesung #12 Mehrbenutzersynchronisation

© Bojan Milijaš, 15.01.2010 Vorlesung #12 - Mehrbenutzersynchronisation 21

WS 2009/10Datenbanksysteme

Fr 15:15 – 16:45R 0.006

Page 22: WS 2009/10 Datenbanksysteme Fr 15:15 – 16:45 R 0.006 Vorlesung #12 Mehrbenutzersynchronisation

© Bojan Milijaš, 15.01.2010 Vorlesung #12 - Mehrbenutzersynchronisation 22

WS 2009/10Datenbanksysteme

Fr 15:15 – 16:45R 0.006

Page 23: WS 2009/10 Datenbanksysteme Fr 15:15 – 16:45 R 0.006 Vorlesung #12 Mehrbenutzersynchronisation

© Bojan Milijaš, 15.01.2010 Vorlesung #12 - Mehrbenutzersynchronisation 23

WS 2009/10Datenbanksysteme

Fr 15:15 – 16:45R 0.006

Page 24: WS 2009/10 Datenbanksysteme Fr 15:15 – 16:45 R 0.006 Vorlesung #12 Mehrbenutzersynchronisation

© Bojan Milijaš, 15.01.2010 Vorlesung #12 - Mehrbenutzersynchronisation 24

WS 2009/10Datenbanksysteme

Fr 15:15 – 16:45R 0.006

Page 25: WS 2009/10 Datenbanksysteme Fr 15:15 – 16:45 R 0.006 Vorlesung #12 Mehrbenutzersynchronisation

© Bojan Milijaš, 15.01.2010 Vorlesung #12 - Mehrbenutzersynchronisation 25

WS 2009/10Datenbanksysteme

Fr 15:15 – 16:45R 0.006

Page 26: WS 2009/10 Datenbanksysteme Fr 15:15 – 16:45 R 0.006 Vorlesung #12 Mehrbenutzersynchronisation

© Bojan Milijaš, 15.01.2010 Vorlesung #12 - Mehrbenutzersynchronisation 26

WS 2009/10Datenbanksysteme

Fr 15:15 – 16:45R 0.006

Page 27: WS 2009/10 Datenbanksysteme Fr 15:15 – 16:45 R 0.006 Vorlesung #12 Mehrbenutzersynchronisation

© Bojan Milijaš, 15.01.2010 Vorlesung #12 - Mehrbenutzersynchronisation 27

WS 2009/10Datenbanksysteme

Fr 15:15 – 16:45R 0.006

Page 28: WS 2009/10 Datenbanksysteme Fr 15:15 – 16:45 R 0.006 Vorlesung #12 Mehrbenutzersynchronisation

© Bojan Milijaš, 15.01.2010 Vorlesung #12 - Mehrbenutzersynchronisation 28

WS 2009/10Datenbanksysteme

Fr 15:15 – 16:45R 0.006

Theorie der Serialisierbarkeit (2) Konfliktoperationen sind solche Operationen, die bei einer

unkontrollierten parallelen Ausführung zu Inkonsistenzen führen können

Äquivalente Historien sind Historien bei denen Konfliktoperationen der nicht abgebrochenen Transaktionen in derselben Reihenfolge ausgeführt werden

Eine Historie H ist serialisierbar, wenn sie äquivalent zu einer seriellen Historie HS

Serialisierbarkeitsgraph SG(H) – gerichteter Graph bei dem Kanten die Konfliktoperationen und zugehörige Abhängigkeiten repräsentieren

Serialisierbarkeitstheorem – H ist serialisierbar wenn SG(H) azyklisch ist

Page 29: WS 2009/10 Datenbanksysteme Fr 15:15 – 16:45 R 0.006 Vorlesung #12 Mehrbenutzersynchronisation

© Bojan Milijaš, 15.01.2010 Vorlesung #12 - Mehrbenutzersynchronisation 29

WS 2009/10Datenbanksysteme

Fr 15:15 – 16:45R 0.006

Page 30: WS 2009/10 Datenbanksysteme Fr 15:15 – 16:45 R 0.006 Vorlesung #12 Mehrbenutzersynchronisation

© Bojan Milijaš, 15.01.2010 Vorlesung #12 - Mehrbenutzersynchronisation 30

WS 2009/10Datenbanksysteme

Fr 15:15 – 16:45R 0.006

Page 31: WS 2009/10 Datenbanksysteme Fr 15:15 – 16:45 R 0.006 Vorlesung #12 Mehrbenutzersynchronisation

© Bojan Milijaš, 15.01.2010 Vorlesung #12 - Mehrbenutzersynchronisation 31

WS 2009/10Datenbanksysteme

Fr 15:15 – 16:45R 0.006

Page 32: WS 2009/10 Datenbanksysteme Fr 15:15 – 16:45 R 0.006 Vorlesung #12 Mehrbenutzersynchronisation

© Bojan Milijaš, 15.01.2010 Vorlesung #12 - Mehrbenutzersynchronisation 32

WS 2009/10Datenbanksysteme

Fr 15:15 – 16:45R 0.006

Page 33: WS 2009/10 Datenbanksysteme Fr 15:15 – 16:45 R 0.006 Vorlesung #12 Mehrbenutzersynchronisation

© Bojan Milijaš, 15.01.2010 Vorlesung #12 - Mehrbenutzersynchronisation 33

WS 2009/10Datenbanksysteme

Fr 15:15 – 16:45R 0.006

Page 34: WS 2009/10 Datenbanksysteme Fr 15:15 – 16:45 R 0.006 Vorlesung #12 Mehrbenutzersynchronisation

© Bojan Milijaš, 15.01.2010 Vorlesung #12 - Mehrbenutzersynchronisation 34

WS 2009/10Datenbanksysteme

Fr 15:15 – 16:45R 0.006

Eigenschaften von Historien bzgl. Recovery Recovery-Komponente stellt aber zusätzliche

Anforderungen an Mehrbenutzersynchronisation:1. Jede Transaktion soll zu jedem Zeitpunkt lokales Commit

durchführen können, ohne dass andere Transaktionen etwas davon merken (rücksetzbare Historien)

2. Lokales Zurücksetzen einer Transaktion soll kein kaskadierendes Zurücksetzen – d.h. Schneeball-Effekt auslösen – Performance-Anforderung. Veränderte Daten einer Transaktion dürfen nicht gelesen werden (Historien ohne kaskadierendes Rücksetzen)

3. Veränderte Daten einer Transaktion dürfen nicht überschrieben werden (strikte Historien)

... weiter Kemper 11.19 – 11.23 ..

Page 35: WS 2009/10 Datenbanksysteme Fr 15:15 – 16:45 R 0.006 Vorlesung #12 Mehrbenutzersynchronisation

© Bojan Milijaš, 15.01.2010 Vorlesung #12 - Mehrbenutzersynchronisation 35

WS 2009/10Datenbanksysteme

Fr 15:15 – 16:45R 0.006

Page 36: WS 2009/10 Datenbanksysteme Fr 15:15 – 16:45 R 0.006 Vorlesung #12 Mehrbenutzersynchronisation

© Bojan Milijaš, 15.01.2010 Vorlesung #12 - Mehrbenutzersynchronisation 36

WS 2009/10Datenbanksysteme

Fr 15:15 – 16:45R 0.006

Datenbank-Scheduler

DB-Scheduler ist eine DBMS-Komponente (siehe Architektur - Kemper 11.24)

Aufgabe – lasse nur „vernünftige“ Historien zu (was vernünftig ist, ist in der DBMS Konfiguration einstellbar). Z.B. : serialisierbar und ohne kaskadierendes Rücksetzen

Realisierung des Schedulers Sperrbasiert (lock based) – in der Praxis am häufigsten Zeitstempelbasiert (time stamp based)

Außer sperr- und zeitstempelbasierten Synchronisation, die als „pessimistisch“ eingestuft werden, gibt es noch optimistische Verfahren

Page 37: WS 2009/10 Datenbanksysteme Fr 15:15 – 16:45 R 0.006 Vorlesung #12 Mehrbenutzersynchronisation

© Bojan Milijaš, 15.01.2010 Vorlesung #12 - Mehrbenutzersynchronisation 37

WS 2009/10Datenbanksysteme

Fr 15:15 – 16:45R 0.006

Datenbank-Scheduler (2)

Der Scheduler bekommt den Ausführungsplan von Transaktionsmanager und ergänzt ihn um Sperr-oder Zeitstempel-Operationen.

Beispiel mit Sperroperationen lock()

Schritt T1

1. BOT

2. lockX(A)

3. read(A)

4. write(A)

5. ...

Page 38: WS 2009/10 Datenbanksysteme Fr 15:15 – 16:45 R 0.006 Vorlesung #12 Mehrbenutzersynchronisation

© Bojan Milijaš, 15.01.2010 Vorlesung #12 - Mehrbenutzersynchronisation 38

WS 2009/10Datenbanksysteme

Fr 15:15 – 16:45R 0.006

Page 39: WS 2009/10 Datenbanksysteme Fr 15:15 – 16:45 R 0.006 Vorlesung #12 Mehrbenutzersynchronisation

© Bojan Milijaš, 15.01.2010 Vorlesung #12 - Mehrbenutzersynchronisation 39

WS 2009/10Datenbanksysteme

Fr 15:15 – 16:45R 0.006

Page 40: WS 2009/10 Datenbanksysteme Fr 15:15 – 16:45 R 0.006 Vorlesung #12 Mehrbenutzersynchronisation

© Bojan Milijaš, 15.01.2010 Vorlesung #12 - Mehrbenutzersynchronisation 40

WS 2009/10Datenbanksysteme

Fr 15:15 – 16:45R 0.006

Page 41: WS 2009/10 Datenbanksysteme Fr 15:15 – 16:45 R 0.006 Vorlesung #12 Mehrbenutzersynchronisation

© Bojan Milijaš, 15.01.2010 Vorlesung #12 - Mehrbenutzersynchronisation 41

WS 2009/10Datenbanksysteme

Fr 15:15 – 16:45R 0.006

Page 42: WS 2009/10 Datenbanksysteme Fr 15:15 – 16:45 R 0.006 Vorlesung #12 Mehrbenutzersynchronisation

© Bojan Milijaš, 15.01.2010 Vorlesung #12 - Mehrbenutzersynchronisation 42

WS 2009/10Datenbanksysteme

Fr 15:15 – 16:45R 0.006

Page 43: WS 2009/10 Datenbanksysteme Fr 15:15 – 16:45 R 0.006 Vorlesung #12 Mehrbenutzersynchronisation

© Bojan Milijaš, 15.01.2010 Vorlesung #12 - Mehrbenutzersynchronisation 43

WS 2009/10Datenbanksysteme

Fr 15:15 – 16:45R 0.006

Page 44: WS 2009/10 Datenbanksysteme Fr 15:15 – 16:45 R 0.006 Vorlesung #12 Mehrbenutzersynchronisation

© Bojan Milijaš, 15.01.2010 Vorlesung #12 - Mehrbenutzersynchronisation 44

WS 2009/10Datenbanksysteme

Fr 15:15 – 16:45R 0.006

Sperrbasierte Synchronisation

Hier Zusammenfassung (Details Kemper 11.25 –11.30)

2 Sperrmodi S – „Shared“, Lesen, Read X – Exclusive, Schreiben, Write

Operationen: lockS(), unlockS(), lockX(), unlockX() 2 Phasen Sperrprotokoll – 2 phase locking (2PL)

Wachstumsphase (Anforderung der Sperren) Schrumpfungsphase (Freigabe der Sperren)

2PL erlaubt kaskadierendes Rollback

strenges 2PL - keine Schrumpfungsphase, alle Sperren werden auf einmal freigegeben

Page 45: WS 2009/10 Datenbanksysteme Fr 15:15 – 16:45 R 0.006 Vorlesung #12 Mehrbenutzersynchronisation

© Bojan Milijaš, 15.01.2010 Vorlesung #12 - Mehrbenutzersynchronisation 45

WS 2009/10Datenbanksysteme

Fr 15:15 – 16:45R 0.006

Page 46: WS 2009/10 Datenbanksysteme Fr 15:15 – 16:45 R 0.006 Vorlesung #12 Mehrbenutzersynchronisation

© Bojan Milijaš, 15.01.2010 Vorlesung #12 - Mehrbenutzersynchronisation 46

WS 2009/10Datenbanksysteme

Fr 15:15 – 16:45R 0.006

Fazit Notwendigkeit der Parallelisierung Notwendigkeit der Synchronisation bei der

Fehlerarten (lost update, dirty read, phantom) Historien Serialisierbarkeit, Theorem, Graph Historien & Recovery (ST, ACA, RC) Datenbank-Scheduler Sperrbasierte Synchronisation (2PL) Deadlocks (Verklemmungen) – nächstes

Semester

Page 47: WS 2009/10 Datenbanksysteme Fr 15:15 – 16:45 R 0.006 Vorlesung #12 Mehrbenutzersynchronisation

WS 2009/10Datenbanksysteme

Fr 15:15 – 16:45R 0.006

Vorlesung #12

Ende