Pflichtenheft - Berner Fachhochschule

Werbung
Pflichtenheft Diplomarbeit
Nr. MAS-06-01.15
Grafischer Transaktionssimulator
MAS-IT-06-01, 22. April 2008
Abstract
Der Transaktionssimulator simuliert Datenbank-Benutzer, und lässt diese in
gegenseitiger Konkurrenz auf eine reale Datenbank zugreifen. Simulationen sind
parametrisierbar: Anzahl gelesener und geschriebener Datensätze, Isolationsgrad,
Häufigkeit und Nebenläufigkeit der User usw. sind einstellbar. Gemessen werden
u.a. Anzahl Trans-aktionen, Phantoms, Deadlocks und Lost Updates. Die
Parametereingabe und Resultdarstellung erfolgt im GUI. Simulationsmodelle werden
in XML erfasst.
Schlüsselwörter
Simulation, Transaktion, Datenbank
Autor:
Paul Klarenberg
Sandrainstrasse 60a
3007 Bern
+41 31 372 92 82
Betreuer:
Dr. Arno Schmidhauser
Wankdorffeldstrasse 102
Postfach 325
CH-3000 Bern 22
+41 31 84 83 275
Experte:
Max Kleiner
Kasernenstrasse 41
3001 Bern
Versionskontrolle
Datum
Version
Autor
Beschreibung
2008-04-06
0.1
P. Klarenberg
Initialversion
2008-04-21
1.0
P. Klarenberg
Reviews M. Kleiner und A.
Schmidhauser eingepflegt
2008-04-22
1.1
P. Klarenberg
Begriffe SRS und SDD im Glossar
zugefügt
Seite 2 von 23
Inhaltsverzeichnis
1
EINLEITUNG ............................................................................................. 4
1.1
1.2
1.3
1.4
1.5
2
ZWECK DES DOKUMENTS ..................................................................................... 4
ZIEL DES SOFTWAREPRODUKTS ........................................................................... 4
BEGRIFFEN, AKRONYME UND ABKÜRZUNGEN ..................................................... 5
REFERENZEN ........................................................................................................ 7
ÜBERSICHT .......................................................................................................... 7
ALLGEMEINE BESCHREIBUNG................................................................. 8
2.1
PRODUKT PERSPEKTIVE ....................................................................................... 8
2.1.1
SYSTEM SCHNITTSTELLEN ........................................................................... 8
2.1.2
BENUTZER-SCHNITTSTELLEN....................................................................... 8
2.1.3
HARDWARE SCHNITTSTELLEN ..................................................................... 9
2.1.4
SOFTWARE SCHNITTSTELLEN ....................................................................... 9
2.1.5
KOMMUNIKATIONS-SCHNITTSTELLEN ......................................................... 9
2.1.6
SPEICHERBESCHRÄNKUNGEN ....................................................................... 9
2.1.7
BETRIEB ....................................................................................................... 9
2.2
PRODUKTFUNKTIONEN ......................................................................................... 9
2.3
BENUTZERMERKMALE ....................................................................................... 10
2.4
EINSCHRÄNKUNGEN........................................................................................... 10
2.5
ANNAHMEN UND ABHÄNGIGKEITEN .................................................................. 10
2.6
VERSIONIERUNG DER ANFORDERUNGEN............................................................ 10
3
SPEZIFISCHE ANFORDERUNGEN ............................................................ 10
3.1
EXTERNE SCHNITTSTELLEN ............................................................................... 10
3.1.1
ANFORDERUNGEN AN DAS GUI ................................................................. 10
3.1.2
ANFORDERUNGEN AN DIE DATENBANK-SCHNITTSTELLE ........................... 11
3.2
FUNKTIONALE ANFORDERUNGEN ...................................................................... 11
3.2.1
ANFORDERUNGEN AN DEN SIMULATOR ..................................................... 11
3.2.2
ANFORDERUNGEN AN DEN KONFIGURATOR ............................................... 12
3.3
LEISTUNGSANFORDERUNGEN ............................................................................. 13
3.4
DESIGN CONSTRAINTS ....................................................................................... 13
3.5
QUALITÄTSANFORDERUNGEN ............................................................................ 13
3.5.1
ZUVERLÄSSIGKEIT (RELIABILITY) ............................................................. 13
3.5.2
VERFÜGBARKEIT (AVAILABILITY) ............................................................. 13
3.5.3
SICHERHEIT (SECURITY) ............................................................................ 13
3.5.4
WARTBARKEIT (MAINTAINABILITY).......................................................... 13
3.5.5
PORTABILITÄT (PORTABILITY)................................................................... 14
3.6
SONSTIGE ANFORDERUNGEN ............................................................................. 14
3.6.1
SUPPORTABILITY........................................................................................ 14
3.6.2
ONLINE USER DOCUMENTATION AND HELP SYSTEM REQUIREMENTS .......... 14
3.6.3
EINGEKAUFTE KOMPONENTEN................................................................... 14
3.6.4
LIZENZIERUNG ........................................................................................... 14
3.6.5
RECHTLICHES, URHEBERRECHTE AND ANDERE VERMERKE ....................... 14
3.6.6
USABILITY ................................................................................................. 14
3.6.7
ANZUWENDENDEN STANDARDS ................................................................. 14
ANHANG A. FUNKTIONSPRINZIP SIMULATOR ............................................. 15
ANHANG B. LOFI PROTOTYP GUI............................................................... 18
Seite 3 von 23
1 Einleitung
1.1 Zweck des Dokuments
Dieses Dokument spezifiziert die Anforderungen and den Transaktionssimulator. Es
dient als Vereinbarung zwischen dem Kunden (d.h. dem Betreuer dieser
Diplomarbeit) und dem Software-Hersteller (d.h. dem Diplomanden).
1.2 Ziel des Softwareprodukts
Der Transaktionssimulator soll die Performance und das Auftreten möglicher
Inkonsistenzen simulieren, wenn viele Transaktionen gleichzeitig auf eine Datenbank
zugreifen. Diagramm 1 zeigt die Analogie zwischen der Simulation und der
simulierten Wirklichkeit.
Der Transaktionssimulator soll nicht die Mechanismen demonstrieren wonach diese
Inkonsistenzen entstehen, sondern statistische Daten über deren Auftreten erheben
und Visualisieren.
Der Transaktionssimulator soll im Rahmen des Unterrichts des Fachs Datenbanken
eingesetzt werden. Primär vom Dozenten (Frontalunterricht) und möglicherweise
auch von Studenten (Praktikum).
Seite 4 von 23
Diagramm 1: Analogie zwischen Simulation und simulierter Wirklichkeit
1.3 Begriffen, Akronyme und Abkürzungen
Begriff oder Fachklasse
Beschreibung
Application
Der Transaktionssimulator
DBConnection
Die aktuelle Verbinding via JDBC mit einer Datenbank.
DatabaseConnectionProfile
Die produktspezifische Spezifikation für eine DatenbankVerbindung (u.a. User Account Daten, Treiber-Name,
Seite 5 von 23
Begriff oder Fachklasse
Beschreibung
usw.)
Isolation Level / Isolationsgrad
Isolationsgrad gemäss SQL Standard: 0 = read
uncommitted, 1 = read committed, 2 = repeatable read, 3
= serializable
Operation
Primitive Datenbankoperation Read (R), Update (U),
Delete (D) und Insert (I). Werden mit SQL-Befehle
implementiert.
Show
Eine Menge benannte Simulationsmodelle samt
Simulationsparameter welche als ganzes konfiguriert und
geladen werden kann.
Simulation
Das ausgeführte Simulationsmodell (auch:
Simulationslauf).
Simulationsmodell
Ein lauffähiges Modell einer Simulation, bestehende aus
einem oder mehreren Transaktionsmodellen und relativen
Mengen. z.B. "2*RR1 + 1*RU1"
Simulationsparameter
SimulationThread
Ein Thread der, stellvertretend für einen User, gemäss
einem Transaktionsmodell auf die Datenbank zugreift.
Software Design Description
(SDD)
Spezifikation des Software-Designs gemäss IEEE 1016.
Die SDD beschreibt die Lösung, die SRS dagegen die
Anforderungen.
Software Requirements
Specification (SRS)
Spezifikation der Software Anforderungen gemäss IEEE
830. Die SRS beschreibt die Anforderungen, die SDD
dagegen die Lösung.
TransactionModel
Transaktionmodell, welche den Verlauf einer Transaktion
beschreibt. Elemente: Transaktionsmuster und
Transaktionsparameter unf Isolationsgrad.
Transaktionsmuster
Eine Reihe von Operationen (z.B. RR oder RU)
Transaktionsparameter
- Anzahl gelesene Datensätze in Prozent (R%)
- Anzahl geänderte Datensätze in Prozent von R% (U%)
- Absolute Anzahl geänderte Datensätze (I)
- Anzahl der gelöschten datensätze in Prozent (D%)
- Pausezeit (P) vor und zwischen den Operationen
Usage Pattern
User Type
Diagramm 2 zeigt ein Fachklassendiagramm mit den wichtigsten fachlichen Begriffen
und deren Zusammenhänge.
Seite 6 von 23
class Fachklassenmodell Transaktionssimulator
Application
Die Simulationsproperties können auf Ebene
Application, Show und Simulation spezifiziert
werden. Application ist die "höchste" Stufe,
Simulation die "tiefste". Es wird von hoch nach
tief vererbt. Die tiefere Ebene kan
"überschreiben". Hiermit wird z.B. den
Vergleich eine und derselbe Simulation auf
zwei verschiedenen DB ermöglicht.
SimulationProperties
has
1
1
0..*
0..*
loads
0..*
refers to
Show
DatabaseConne ctionProfile
1
1
1
1
has
composed of
0..*
Simula tionsm odell
0..*
1
Simul ation
runs
1
Simulati onThread
uses
0..*
1
DBConnection
uses
0..*
1
1
0..*
composed of
1. .*
TransactionModel
Isola tionLev el
has
1
0..* -
R%
U%
I
D%
P
applies
1
0..*
refers
0..*
Während der Simulation können die
Isolationsgrade, die Pausezeit, sowie
die R%, U%, I und D% der
verwendeten Thread-Modelle
übersteuert werden.
Re ad
Operation
Update
Ins ert
Del ete
Diagramm 2: Fachklassendiagramm
1.4 Referenzen
[1] "Der Transaktionssimulator", Dr. Arno Schmidhauser, December 2004
[2] Transaktionssimulator Java Code, Dr. Arno Schmidhauser
1.5 Übersicht
Dieses Dokument ist gemäss dem Standard IEEE 830 1998 «Software
Requirements Specification (SRS)» gegliedert1.
Im Kapitel 2 werden die allgemeinen Faktoren beschrieben, welche das Produkt und
die SRS beeinflussen. Kapitel 3 definiert die produktspezifischen funktionalen und
nicht-funktionalen Anforderungen.
1
Übersetzung der englischen Begriffe durch den Autor
Seite 7 von 23
Anforderungen sind mit einem eindeutigen Identifikator versehen und formattiert wie
folgendem im Fettschrift hervorgehobenen Beispiel:
XYZ.1 Dieser Text rechts vom Identifikator XYZ.1, ist die Beschreibung der
Anforderung, welche in der Regel aus einem einzigen Satz besteht.
a)
Dies ist eine Sub-Anforderung, identifiziert durch XYZ.1.a
Nur mit einem Identifikator versehene Sätze sind als Anforderungen zu verstehen.
2 Allgemeine Beschreibung
2.1 Produkt Perspektive
PRO.1 Der Transaktionssimulator soll als Rich-Client implementiert werden, der
über ein Netzwerk auf eine Datenbank zugreift. Im Trivialfall muss die
Datenbank auf demselben Rechner wie der Transaktionssimulator laufen
können.
PRO.2 Die Simulationsmodelle und andere Konfigurationsdaten werden auf einer
Dateiablage des Benutzers gespeichert.
Diagramm 3 zeigt eine Übersicht des Systems Transaktionssimulators.
Transaktionssimulator
Dozent
GUI
Simulator
RDBMS
Konfigurator
Studenten
Filesystem
Diagramm 3: Systemübersicht
2.1.1 System Schnittstellen
Keine. Siehe 2.1.4.
2.1.2 Benutzer-Schnittstellen
Schnittstelle GUI-Dozent
Seite 8 von 23
Der Dozent bedient den Transaktionssimulator, um Simulationsmodelle zu definieren
und Präsentationen vorzubereiten, sowie die Simulationen durchzuführen. Er arbeitet
mit Mouse, Keyboard und PC-Bildschirm. Die Zweckmässigkeit des GUI-Entwurfs für
diese Arbeiten muss anhand eines Prototyps erhoben und vom Kunden beurteilt
werden.
Schnittstelle GUI-Studenten
Der Transaktionssimulator-Rechner kann zum Zweck der Präsentation in einem
Unterrichts-Raum an einen Beamer angeschlossen sein. Die Studenten sitzen im
Vorlesungszimmer und verfolgen die Simulationen auf der Projektionsfläche. Die
Qualität der Darstellung, insbesondere die Anordnung von Inhalten, Kontrast und
Helligkeit, Schriftart und -grösse müssen experimentell anhand eines Prototyps
erhoben und vom Kunden beurteilt werden.
2.1.3 Hardware Schnittstellen
Keine.
2.1.4 Software Schnittstellen
SCH.1 Folgende Software Schnitstellen sind zu unterstützen:
a)
b)
Java Runtime Environment Version ab 1.4 (kapselt u.a. den Zugriff auf
das Filesystem)
JDBC für die Kommunikation mir der Datenbank (JDBC kapselt den
Zugriff auf die Datenbank)
2.1.5 Kommunikations-Schnittstellen
Die Kommunikation erfolgt über die von der JVM (Java Virtual Machine) und JDBC
unterstützte Protokolle, insbesondere TCP/IP.
2.1.6 Speicherbeschränkungen
MEM.1 Der Transaktionssimulator muss mit 1 GB RAM oder mehr im Rechner
laufen können.
MEM.2 Der Transaktionssimulator muss weniger als 30 GB Festplattenspeicher
benötigen.
2.1.7 Betrieb
BET.1 Die Installation soll für den Benutzer einfach sein, z.B. mittels eines einzigen
jar-File zum auspacken, oder on-the-fly Laden und Starten über Internet via
Java Webstart.
Der Transaktionssimulator wird vom User auf einen Rechner installiert und lokal
gestartet und gestoppt.
Der Betrieb der Datenbank ist ausserhalb des Scopes.
2.2 Produktfunktionen
Der Transaktionsimulator bietet folgende Hauptfunktionen:
•
•
•
Verwalten von Simulationsmodellen
Durchführen von Simulationen
Visualisieren und Präsentieren von Simulationsergebnissen
Seite 9 von 23
Es ist keine Funktionalität zum kreieren von Reports vorgesehen.
2.3 Benutzermerkmale
Dozent: Der Dozent ist Informatiker und Experte für Datenbanken.
Studenten: Die Studenten sind angehende Informatiker mit folgenden relevanten
Basiskenntnissen:
•
•
•
•
Sie sind geübt in der Verwendung von GUIs und technischen Anwendungen
Sie können XML anwenden
Sie wurden in Datenbank-Theorie unterrichtet
Sie verstehen Englisch
2.4 Einschränkungen
RES.1 Der Transaktionssimulator muss in Java programmiert werden.
RES.2 Die Schnittstelle zur Datenbank soll so konzipiert werden, dass eine spätere
Einbindung eines auf Java Persistence Framework (JPA) basierten
Persistence Layer ohne grosse Änderungen am Design zwischengeschoben
werden kann.
2.5 Annahmen und Abhängigkeiten
•
•
Das Betriebssystem für die Entwicklung und den Betrieb, ist Windows XP SP2
Die Benutzer verfügen über die erforderlichen Hard- und SoftwareVoraussetzungen, sowie die Permissions für die Installation des
Transaktionssimulators
2.6 Versionierung der Anforderungen
Als Produkt der Diplomarbeit wird eine Version 1.0 ausgeliefert, welche die MUSSAnforderungen erfüllt.
3 Spezifische Anforderungen
3.1 Externe Schnittstellen
3.1.1 Anforderungen an das GUI
Die Anforderungen an das GUI wurden mittels eines LoFi-Prototyps bestehende aus
einem Storyboard mit Visio-Zeichnungen erhoben. Zur Illustration ist in Anhang B
einen Teil dieses Storyboards aufgenommen. Verbindlich sind jedoch nur die
Anforderungen in diesem Kapitel.
GUI.1 Das GUI muss die Resultate von zwei Simulationen nebeneinander («sideby-side») anzeigen können.
GUI.2 Das GUI muss die Resultate einer Simulation in einem Balken-Diagramm
visualisieren.
Seite 10 von 23
GUI.3 Die Axen der Resultat-Grafiken dürfen fix eingestellt sein, d.h. müssen sich
nicht dynamisch an die Messwerte anpassen.
GUI.4 Das GUI muss dem User ermöglichen die Maximalwerte der Axen der
Resultat-Grafiken auf der Show -Ebene ein zu stellen.
GUI.5 Wenn anzuzeigende Ergebniswerte den Maximalwert einer Axe übertreffen,
muss das GUI im Resultat-Grafik nur den Maximalwert zeigen und muss das
GUI im Status-Bar eine entprechende Fehlermeldung zeigen.
GUI.6 Das GUI muss dem User ermöglichen auf Applikations-Ebene ein zu stellen
wie oft die Grafiken pro Sekunde ge-updated werden («Refresh-Rate»).
GUI.7 Das GUI muss Simulations-Resultate darstellen:
a)
Pro Transaktionsmodell der Simulation sowie für die gesamte
Simulation die in SIM.2.a bis SIM.2.d definierten Werte.
b)
Für duie gesamte Simulation die in SIM.2.e und SIM.2.f definierten
Werte.
GUI.8 Das GUI muss dem User ermöglichen eine Simulation zu laden, zu starten,
anzuhalten, und zu stoppen.
GUI.9 Wenn eine Simulation angehalten ist, muss das GUI dem User ermöglichen
folgende Parameter zu ändern:
a)
b)
c)
d)
e)
f)
g)
Transaktionsmodell (zufügen oder löschen)
Relative Menge eines Transaktionsmodells
Isolationsgrad für ein Transaktionsmodell
Prozent gelesener Datensätze (R%)
Prozent geänderte Datensätze von R% (U%)
Anzahl geänderte Datensätze pro Transaktion (I)
Prozent gelöschter Datensätze (D%)
GUI.10 Das GUI muss dem User ermöglichen eine angehaltene Simulation
weiterlaufen zu lassen. Die Simulation muss dabei die eventuell
angepassten Parameter verwenden.
GUI.11 Das GUI ermöglicht dem User das Zeitfenster für die Berechnung der
gleitenden Durchschnittswerte auf Applikations-Ebene ein zu stellen.
3.1.2 Anforderungen an die Datenbank-Schnittstelle
DAT.1 Die Anwendung muss auf Simulations-Ebene auf unterschiedliche
Datenbank-Produkte zugreifen können (innerhalb desselben
Programmlaufes).
DAT.2 Der Zugriff auf die Datenbank muss über JDBC erfolgen.
DAT.3 Die Anwendung muss die benötigten Datenbank-Treiber laden. Die Treiber
selber sind nicht im Lieferumfang des Transaktionssimulators.
3.2 Funktionale Anforderungen
3.2.1 Anforderungen an den Simulator
SIM.1 Der Simulator funktioniert gemäss dem im [1] und [2] sowie Anhang A
dargelegten Prinzip.
SIM.2 Der Simulator erfasst pro Transaktionsmodell für das eingestellte Zeitfenster
folgende Werte:
Seite 11 von 23
a)
b)
c)
d)
e)
f)
Anzahl Transaktionen
Anzahl Deadlocks
Anzahl Missed Updates
Anzahl Phantoms
Transaktionszeit
Deadlock-Zeit
SIM.3 SQL-Ausdrücke insbesondere für Locking, Transaktionen sowie DatanbankOptionen, müssen als Konfigurationsdaten produktspezifisch einstellbar sein.
SIM.4 Der Simulator muss die Isolationsgrade 0 bis 3 unterstützen.
SIM.5 Der Simulator muss folgende Parameter verwenden:
a)
b)
c)
d)
e)
Simulationszeit in Sekunden. 0 = kontinuierlicher Lauf
Zeitfenster für die Berechnung gleitender Durchschnitte
Anzahl gleichzeitige Threads
DatabaseConnectionProfile welche die Datenbank definiert worauf die
Simulation ausgeführt werden soll
(Optional) Database-Spezifische Optionen können ausgewählt werden
3.2.2 Anforderungen an den Konfigurator
CON.1 Der Konfigurator bietet dem User die Möglichkeit folgende Entitäten zu
verwalten (siehe auch Fachklassendiagramm):
a)
b)
c)
d)
e)
Show
Simulation
Transaktions-Modell
Simulationsparameter
DatabaseConnectionProfile
CON.2 Ein Simulationsmodell besteht aus (k)einem oder mehreren
Transaktionsmodellen und deren relativen Mengen.
CON.3 Ein Transaktionsmodell hat besteht aus folgenden Parametern:
a)
b)
c)
d)
e)
f)
g)
Transaktionsmuster (z.B. RR oder RU)
Isolationsgrad (0-3)
Anzahl gelesene Datensätze in Prozent (R%)
Anzahl geänderte Datensätze in Prozent von R% (U%)
Absolute Anzahl geänderte Datensätze (I)
Anzahl der gelöschten datensätze in Prozent (D%)
(Optional) Flag ob Transaktion mit Commit abgeschlossen wird
CON.4 Die Konfiguration der Modelle muss in einer lokal abgelegten XML-Datei
erfolgen.
CON.5 Optional gietet das GUI dem Benutzer die Möglichkeit die Konfiguration der
Modelle im GUI vor zu nehmen.
CON.6 Für den Abnahmetests müssen folgende zwei Konfigurationen (Szenarien)
konfiguriert werden können:
a)
Szenario "OLTP-Benutzer"
Seite 12 von 23
Anteil
Transaktionsmuster
gelesen
2
R
10%
1
RU
10%
10
1
RD
1%
10
1
RI
1%
10
b)
Pause (ms)
Szenario "OLAP-Benutzer"
Anteil
Transaktionsmuster
gelesen
Pause (ms)
3
RR
10%
100
2
RRR
70%
500
1
RRRR
100%
1000
3.3 Leistungsanforderungen
3.4 Design Constraints
DES.1 Für folgende Modulen müssen abstrakte Schnittstellen verwendet werden,
damit verschiedene Implementationen verwendet werden können (compiletime):
a)
b)
c)
d)
Simulator
Visualisierung der Simulationsergebnisse
Datenbank-Produkt
Optional: Datenzugriff (JDBC und JPA)
DES.2 Die in GUI.6 und SIM.5 definierten Parameter müssen auf der Ebene
Application, Show und Simulationsmodell definiert werden können, wobei die
tiefere Ebene Vorrang über die höhere Ebene hat.
3.5 Qualitätsanforderungen
3.5.1 Zuverlässigkeit (Reliability)
Keine.
3.5.2 Verfügbarkeit (Availability)
Nicht abgefangene Exceptions sollen mit einem globalen Catch-All abgefangen und
in einem Log erfasst werden..
3.5.3 Sicherheit (Security)
Keine.
3.5.4 Wartbarkeit (Maintainability)
WAR.1 Der Code soll angemessen kommentiert sein.
Seite 13 von 23
3.5.5 Portabilität (Portability)
Keine. Die Portabilität zwischen verschiedene Betriebssystem ist durch die
Implementierung in Java gegeben.
3.6 Sonstige Anforderungen
3.6.1 Supportability
Keine.
3.6.2 Online user documentation and help system requirements
Keine.
3.6.3 Eingekaufte Komponenten
EK.1
Die Beschaffungskosten eingekaufter Komponenten dürfen SFr. 200.- nicht
übersteigen.
3.6.4 Lizenzierung
LIZ.1
Die Berner Fachhochschule erhält die Verwertungsrechte auf das Produkt für
nicht-kommerzielle Zwecke im Rahmen ihrer Ausbildungsaufgaben.
LIZ.2
Bei der Verwendung von Softwaremodulen von Dritter (u.a. auch Open
Source) müssen die in den Lizenzvereinbarungen festgehaltenen
Restriktionen und Auflagen eingehalten werden.
3.6.5 Rechtliches, Urheberrechte and andere Vermerke
LEG.1 Urheber der Software und Begleitdokumente ist Paul Klarenberg.
LEG.2 Bei der Verwendung von Modulen Dritter (u.a. Open Source) müssen die in
den Lizenzvereinbarungen verlangte Vermerke umgesetzt werden.
3.6.6 Usability
Siehe Anhang B.
3.6.7 Anzuwendenden Standards
Wenn SQL-Ausdrücke im Code verwendet werden, müssen diese SQL-99 konform
sein.
Seite 14 von 23
Anhang A. Funktionsprinzip Simulator
Zusammenfassung von [1] und [2].
Die Testtabelle TrxTable, auf der alle Transaktionen operieren, hat folgende
Attribute:
name
typ
Beschreibung
pkey
numeric(10,0)
autoincrement
Primärschlüssel. Wir in der Applikation für den Update
benötigt.
searchKey
double
Nach diesem Attribut wird beim Lesen gesucht. Die Werte
sind zufällig zwischen 0 und 100 verteilt. Auf diesem Feld
besteht ein Index.
data
int
Dieses Feld wird gelesen und in nach¬folgenden UpdateBefehlen jeweils um 1 inkrementiert.
tranCount
int
Dieses Attribut wird unmittelbar bei jedem Update-Befehl
um 1 inkrementiert.
Bemerkungen
Standardmässig wird die Testtabelle mit 100 Datensätze initialisiert. Wesentlich mehr
oder weniger Datensätze erhöhen oder erniedrigen die Wahrscheinlichkeit für
Deadlocks, Phantoms, Lost Updates, Optimistic Rollbacks in nicht-linearer Weise:
Um didaktisch anschauliche Resultate zu demonstrieren, müssen entsprechende
Tests gefahren werden.Jeder Thread-Instanz akkumuliert die Ergebnisse jeder
einzelne Transaktion in seine ThreadStatistics
Die Thread-Klasse akkumuliert die die SystemStatistics
Erste R-Operation (in den Transaktionsmodellen R, RR und RU)
Sollen beispielsweise 10% der Datensätze gelesen werden, sucht die Simulation
einen zufälligen Startwert für searchKey zwischen 0 und 90. Ausgehend von diesem
Startwert werden die nächsten 10% gelesen, d.h.
SEL_PRCNT = 10
lowSelBound = Random * (100 - SEL_PRCNT)
maxSelBound = lowSelBound + SEL_PRCT
(lowSelBound, maxSelBound) werden in folgendem SQL-Statement für die
Fragezeichen substituiert
SELECT primKey, data, tranCount FROM TrxTable
WHERE searchKey >= ? AND searchKey < ?
Seite 15 von 23
das Statement ausgeführt, und die Daten in einen RecordSet rs eingelesen.
U-Operation
Die Simulation nimmt nur eine einzige Art Änderung auf dem Wert von data vor: Der
Wert wird in der Applikation um 1 erhöht und anschliessend zurückgeschrieben. Der
Wert von tranCount wird im Update-Befehl um 1 erhöht (wenn der Datensatz also
bereits mit einer exklusiven Sperre belegt ist).
Der in der R-Operation eingelesene RecordSet rs wird jetzt durchlaufen. Wenn für
einen Datensatz gilt:
Random * 100 <= UPD_PRCNT
denn werden die gelesenen Werte für (data, primKey) in folgendem SQL Statement
UPDATE TrxTable
SET data = ? + 1, tranCount = tranCount + 1
WHERE primKey = ?
substituiert und schliesslich das Statement ausgeführt.
Das UPDATE Statement gibt die Anzahl mutierten Datensätze zurück und es wird im
Normalfall den Wert 1 zurück erwartet. Wenn aber der Wert 0 zurück kommt heisst
das, dass der Datensatz nicht mehr vorhanden ist, weil eine D-Operation diesen
vorher gelöscht hat. Diesen Fall wird als «Missed Update» d.h. ein Lost Update
gezählt un in totalMissedUpdates totalisiert.
Die zweite R-Operation (im Transaktionsmodell RR)
Die Datensätze im RecordSet rs werden mit rs.next() gezählt und die Summe in
count1 gespeichert. Danach wird denselben SQL-Code wie in der ersten ROperation ausgeführt, wobei (lowSelBound, maxSelBound) wieder substituiert
werden
SELECT primKey, data, tranCount FROM TrxTable
WHERE searchKey >= ? AND searchKey < ?
und die Datensätze in einen neuen RecordSet rs eingelesen und anschliessend mit
rs.next() gezählt, und die Summe in count2 gespeichert.
I-Operation
INSERT TrxTable
WHERE searchKey >= ? AND searchKey < ?
Seite 16 von 23
D-Operation
DELETE TrxTable
WHERE serachKey >= ? AND searchKey < ?
Lost Updates
Lost Updates können auftreten, wenn mehrere Transaktionen denselben Wert lesen,
bearbeiten, und später das Ergebnis zurückschreiben bzw. einen Datensatz löschen,
also beim Transaktionsmuster RU und einer Mischenung von RU und D.
Die Differenz zwischen data und tranCount entspricht der Anzahl Lost-Updates.
SELECT SUM(tranCount - data)
FROM TrxTable
hinzugezählt werden müssen aber noch die totalMissedUpdates.
Phantoms
Phantome treten nur bei wiederholtem lesen, also bei Transaktionsmuster RR auf in
Kombination mit einer I-Operation. Die Zahl ergibt sich aus abs(count2 - count1).
Deadlocks
Die Deadlock werden gezählt nach der entsprechende Anzahl SQLExceptions
welche geworfen werden mit SQLState = 40001.
Seite 17 von 23
Anhang B. LoFi Prototyp GUI
Seite 18 von 23
Seite 19 von 23
Seite 20 von 23
Seite 21 von 23
Seite 22 von 23
Seite 23 von 23
Herunterladen