Beschreibung
Dieses Projekt ist Teilprojekt von AutoGlobe
In serivceorientierten Softwarearchitekturen von Unternehmen
stellen Datenbanken eine kritische Komponente für das
Quality of Service (QoS)-Management zwischen Kunden und
Dienstanbietern dar. Meist greift eine Vielzahl von Diensten
auf eine zentrale Datenbank zu. Die Wichtigkeit einzelner
Anfragen ist abhängig von den Service Level Agreements
(SLAs). Eine SLA ist ein Vertrag zwischen einem Kunden und einem
Dienstanbieter. Die SLA enthält Anforderungen an die
Dienstgüte eines Dienstes, den der Dienstanbieter zur
Verfügung stellt. Wenn die Bedingungen nach Ablauf einer
festgelegten Zeitspanne verletzt sind, wird dem Dienstanbieter
eine Strafe auferlegt. Diese Strafe ist abhängig von der
Schwere der SLA-Verletzung und wird ebenfalls im Vertrag
festgehalten. Auch bei serviceorientierten Architekturen (SOAs),
bei denen statt eines monolithischen Dienstes mehrere
leichtgewichtige (Web) Services eingesetzt werden, werden SLAs
im Allgemeinen nur für die Dienste ausgehandelt, die direkt
vom Kunden aufgerufen werden. Der Einfachheit halber werden im
Folgenden nur Dienste betrachtet, die auf eine Datenbank
zugreifen.
Um eine prioritätsgesteuerte Abarbeitung auf der Datenbank
zu ermöglichen, muss den Datenbankanfragen, die von einem
Dienst abgesetzt werden, eine Priorität zugeteilt werden.
Heute ist es üblich, dass Kunden statisch in Klassen
eingeteilt werden (zum Beispiel Query Patroller for DB2 und
Oracle Resource Manager). Die Anfragen zahlungskräftiger
"Platin"-Kunden werden gegenüber Anfragen von
"Gold"- oder "Silber"-Kunden bevorzugt
bearbeitet, weswegen Anfragen von Platin-Kunden im Allgemeinen
kürzere Antwortzeiten aufweisen als die der niedriger
priorisierten Pendants.
Dieser Ansatz zielt darauf ab, zuerst die Anforderungen von sehr
wichtigen Kunden zu erfüllen. Die statische Priorisierung
erlaubt allerdings nicht das Management von SLAs, bei denen
nicht alle, sondern nur ein gewisser Prozentsatz der Anfragen
rechtzeitig bearbeitet werden muss. Als Beispiel soll eine
(vereinfachte) SLA dienen, die fordert, dass 90% aller
Anfragen in jeweils 5 Sekunden bearbeitet werden sollen.
Priosiert man alle Anfragen statisch, so werden wahrscheinlich
fast alle (nahezu 100%) der Anfragen aller Platin-Kunden
innerhalb der Zeitanforderung beantwortet. Da Anfragen von Gold-
und Silber-Kunden mit Anfragen höherer Priorität um
Datenbankressourcen konkurrieren, ist die Gefahr, dass ihre SLAs
verletzt werden, sehr hoch - obwohl Platin-Kunden ihre SLA
"übererfüllen".
Deswegen wurde am Lehrstuhl für Datenbanksysteme ein
Kostenmodell für die dynamische Priorisierung von
Conformance}, das heißt dem Verhältnis zwischen der
Anzahl rechtzeitig bearbeiteter Anfragen und der Gesamtzahl der
Anfragen. Die Priorität einer Anfrage wird über eine
Straffunktion repräsentiert. Diese
Prioritätsinformation wird an die SQL-Statements
angehängt und auf Datenbankseite ausgewertet.