<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Proaktive modellbasierte Performance-Analyse und -Vorhersage von Datenbankanwendungen</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Christoph Koch</string-name>
          <email>Christoph.Koch@uni-jena.de</email>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
          <xref ref-type="aff" rid="aff3">3</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Allgemeine Bestimmungen Performance</institution>
          ,
          <addr-line>Design</addr-line>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Friedrich-Schiller-Universität Jena Lehrstuhl für Datenbanken und Informationssysteme Ernst-Abbe-Platz 2 07743 Jena</institution>
        </aff>
        <aff id="aff2">
          <label>2</label>
          <institution>Kategorien und Themenbeschreibung Data Models and Database Design</institution>
          ,
          <addr-line>Database Performance</addr-line>
        </aff>
        <aff id="aff3">
          <label>3</label>
          <institution>Schlüsselwörter Performance</institution>
          ,
          <addr-line>Proaktivität, Statistiken, relationale Datenbanken, Modellierung, UML, Anwendungsentwicklung</addr-line>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2014</year>
      </pub-date>
      <abstract>
        <p>KURZFASSUNG Moderne (Datenbank-)Anwendungen sehen sich in der heutigen Zeit mit immer höheren Anforderungen hinsichtlich Flexibilität, Funktionalität oder Verfügbarkeit konfrontiert. Nicht zuletzt für deren Backend - ein meist relationales Datenbankmanagementsystem - entsteht dadurch eine kontinuierlich steigende Komplexität und Workload, die es frühestmöglich proaktiv zu erkennen, einzuschätzen und effizient zu bewältigen gilt. Die dazu nötigen Anwendungs- und Datenbankspezialisten sind jedoch aufgrund immer engerer Projektpläne, kürzerer Release-Zyklen und weiter wachsender Systemlandschaften stark ausgelastet, sodass für regelmäßige proaktive Expertenanalysen hinsichtlich der Datenbank-Performance kaum Kapazität vorhanden ist. Zur Auflösung dieses Dilemmas stellt dieser Beitrag ein Verfahren vor, mit dessen Hilfe frühzeitig auf Grundlage der Datenmodellierung und synthetischer Datenbankstatistiken Performance-Analysen und -Vorhersagen für Anwendungen mit relationalem Datenbank-Backend durchgeführt und deren Ergebnisse auf leicht zugängliche Weise visualisiert werden können.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>von</p>
      <p>DATEV eG
Abteilung Datenbanken
Paumgartnerstr. 6 - 14</p>
      <p>90429 Nürnberg</p>
      <p>Christoph.Koch@datev.de</p>
    </sec>
    <sec id="sec-2">
      <title>1. EINLEITUNG</title>
      <p>
        Zur Erfüllung komplexerer Anforderungen und maximalen
Benutzerkomforts ist gute Performance eine Grundvoraussetzung
für moderne Datenbankanwendungen. Neben
AnwendungsDesign und Infrastrukturkomponenten wie Netzwerk oder
Anwendungs- beziehungsweise Web-Server wird sie maßgeblich
durch die Performance ihres Datenbank-Backends – wir
beschränken uns hier ausschließlich auf relationale
Datenbankmanagementsysteme (DBMS) – bestimmt [
        <xref ref-type="bibr" rid="ref2">1</xref>
        ]. Dabei ist die
DatenbankPerformance einer Anwendung selbst ebenfalls durch zahlreiche
Faktoren beeinflusst. Während Hardware- und systemseitige
Eigenschaften oftmals durch bestehende Infrastrukturen
vorgegeben sind, können speziell das Datenbank-Design sowie die
anwendungsseitig implementierten Zugriffe mittels SQL
weitgehend frei gestaltet werden. Hinzu kommt als Einflussfaktor
noch die Beschaffenheit der zu speichernden/gespeicherten Daten,
die sich in Menge und Verteilung ebenfalls stark auf die
Performance auswirkt.
      </p>
      <p>Das Datenbank-Design entwickelt sich über unterschiedlich
abstrakte, aufeinander aufbauende Modellstrukturen vom
konzeptionellen hin zum physischen Datenmodell. Bereits bei der
Entwicklung dieser Modelle können „Designfehler“ wie
beispielsweise fehlende oder „übertriebene“ Normalisierungen gravierende
Auswirkungen auf die späteren Antwortzeiten des
Datenbanksystems haben. Der Grad an Normalisierung selbst ist jedoch nur
als vager Anhaltspunkt für die Performance von
Datenbanksystemen anzusehen, der sich ab einem gewissen Maß auch
negativ auswirken kann. Eine einfache Metrik zur Beurteilung der
Qualität des Datenbank-Designs bezüglich der zu erwartenden
Performance (in Abhängigkeit anderer Einflussfaktoren, wie etwa
der Workload) existiert nach vorhandenem Kenntnisstand nicht.
Etwas abweichend dazu verhält es sich mit dem Einfluss der
Workload – repräsentiert als Menge von SQL-Statements und der
Häufigkeit ihrer Ausführung, die von der Anwendung an das
Datenbanksystem zum Zugriff auf dort gespeicherte Daten
abgesetzt wird. Moderne DBMS besitzen einen kostenbasierten
Optimierer zur Optimierung eingehender Statements. Dieser
berechnet mögliche Ausführungspläne und wählt unter
Zuhilfenahme von gesammelten Objekt-Statistiken den günstigsten
Ausführungsplan zur Abarbeitung eines SQL-Statements aus.
Mittels DBMS-internen Mechanismen – im Folgenden als
EXPLAIN-Mechanismen bezeichnet – besteht die Möglichkeit,
noch vor der eigentlichen Ausführung von Statements den vom
Optimierer bestimmten optimalen Ausführungsplan ermitteln und
ausgeben zu lassen. Zusätzlich umfasst das EXPLAIN-Ergebnis
eine Abschätzung der zur Abarbeitung des Ausführungsplans
erwarteten Zugriffskosten bezüglich der CPU-und I/O-Zeit –
fortan als Kosten bezeichnet. Anhand dieser Informationen
können bereits frühzeitig in Hinblick auf die
DatenbankPerformance (häufige) teure Zugriffe erkannt und gegebenenfalls
optimiert werden. Voraussetzung für dieses Vorgehen ist
allerdings, dass dem DBMS zur Berechnung der Ausführungspläne
repräsentative Datenbank-Statistiken vorliegen, was
insbesondere für neue Datenbankanwendungen nicht der Fall ist.
Auf der anderen Seite sehen sich sowohl
Anwendungsentwicklerbeziehungsweise -designerteams als auch Datenbankspezialisten
mit immer komplexeren Anforderungen und Aufgaben
konfrontiert. Kapazitäten für umfangreiche Performance-Analysen oder
auch nur die Aneignung des dafür nötigen Wissens sind oft nicht
gegeben. Nicht zuletzt deshalb geraten proaktive
PerformanceAnalysen verglichen mit beispielsweise funktionalen Tests
vermehrt aus dem Fokus.</p>
      <p>Das im vorliegenden Beitrag vorgestellte modellbasierte Konzept
setzt an diesen beiden Problemen an und stellt Mechanismen vor,
um auf einfache Art und Weise eine repräsentative proaktive
Analyse der Datenbank-Performance zu ermöglichen. Nachdem in
Kapitel 2 eine Abgrenzung zu alternativen/verwandten Ansätzen
gegeben wird, rückt Kapitel 3 den Entwicklungsprozess einer
Datenbank-Anwendung in den Fokus. Kapitel 4 beschäftigt sich
mit dem entwickelten proaktiven Ansatz und stellt wesentliche
Schritte/Komponenten vor. Abschließend fasst Kapitel 5 den
Beitrag zusammen.</p>
    </sec>
    <sec id="sec-3">
      <title>2. VERWANDTE ARBEITEN</title>
      <p>
        Das Ziel des im Beitrag vorgestellten proaktiven Ansatzes zur
Performance-Analyse und -Vorhersage von
Datenbankanwendungen ist die frühzeitige Erkennung von potentiellen
Performance-Problemen auf Basis einer möglichst effizienten, leicht
verständlichen Methodik. Dies verfolgt auch der Ansatz von [
        <xref ref-type="bibr" rid="ref3">2</xref>
        ],
dessen Grundprinzip – Informationen über Daten und
Datenzugriffe, die aus der Anforderungsanalyse einer Anwendung bekannt
sind, zur frühzeitigen Optimierung zu nutzen – sich auch im
vorliegenden Beitrag wiederfindet. Dabei gelangt [
        <xref ref-type="bibr" rid="ref3">2</xref>
        ] durch eine
eigene, dem Datenbank-Optimierer nachempfundene Logik und
dem verwendeten Modell des offenen Warteschlangennetzwerks
frühzeitig zu Kostenabschätzungen bezüglich der
DatenbankPerformance. Das in Kapitel 4 des vorliegenden Beitrags
vorgestellte Konzept nutzt dagegen synthetisch erzeugte Statistiken und
datenbankinterne EXPLAIN-Mechanismen, um eine
kostenmäßige Performance-Abschätzung zu erhalten. Damit berücksichtigt es
stets sowohl aktuelle als auch zukünftige Spezifika einzelner
Datenbank-Optimierer und bleibt entgegen [
        <xref ref-type="bibr" rid="ref3">2</xref>
        ] von deren interner
Berechnungslogik unabhängig. Ein weiterer Unterschied zwischen
beiden Ansätzen besteht in der Präsentation der
Analyseergebnisse. Während sich [
        <xref ref-type="bibr" rid="ref3">2</xref>
        ] auf tabellarische Darstellungen
beschränkt, nutzt das im Beitrag vorstellte Konzept eine auf der
Grundlage der Unified Modeling Language (UML) visualisierte
Darstellungsform.
Ähnlich wie [
        <xref ref-type="bibr" rid="ref3">2</xref>
        ] basieren auch weitere Ansätze zur
PerformanceAnalyse und -Evaluation auf dem Modell des
Warteschlangennetzwerks. Ein Überblick dazu findet sich in [
        <xref ref-type="bibr" rid="ref4">3</xref>
        ]. Demnach zeigt
sich für all diese Konzepte ein eher wissenschaftlicher Fokus und
eine damit einhergehende weitgehend unerprobte Übertragbarkeit
auf die Praxis. So fehlen Studien zur Integration in praxisnahe
(Entwicklungs-)Prozesse, zur Benutzerfreundlichkeit sowie zum
Kosten-Nutzen-Verhältnis der notwendigen Maßnahmen. Ein
damit einhergehendes Defizit ist zusätzlich der mangelnde
Toolsupport. Das in Kapitel 4 vorgestellte Konzept verfolgt
diesbezüglich einen davon abweichenden Ansatz. Es baut direkt auf
etablierten modellbasierten Praxisabläufen bei der Entwicklung
von Datenbankanwendungen auf (vgl. Kapitel 3). Insbesondere
durch die Verwendung von standardisierten
UML-Erweiterungsmechanismen integriert es sich auch Tool-seitig nahtlos in
bestehende UML-unterstützende Infrastrukturen.
      </p>
      <p>
        Die Methodik der synthetischen Statistiken – also dem
künstlichen Erstellen sowie Manipulieren von Datenbank-Statistiken –
ist neben dem in Kapitel 4 vorgestellten Ansatz wesentlicher
Bestandteil von [
        <xref ref-type="bibr" rid="ref5">4</xref>
        ]. Sie wird zum einen verwendet, um Statistiken
aus Produktionsumgebungen in eine Testumgebung zu
transferieren. Zum anderen sieht der Ansatz aber auch die gezielte
manuelle Veränderung der Statistiken vor, um mögliche dadurch
entstehende Änderungen in den Ausführungsplänen und den zu
deren Abarbeitung benötigten Kosten mithilfe anschließender
EXPLAIN-Analysen feststellen zu können. Dies kann
beispielsweise bezogen auf Statistiken zur Datenmenge dafür genutzt
werden, um Zugriffe auf eine (noch) kleine Tabelle mit wenigen
Datensätzen bereits so zu simulieren, als ob diese eine enorme
Menge an Daten umfasst. Weitere Einbettungen in den
Entwicklungsprozess von Datenbankanwendungen sieht [
        <xref ref-type="bibr" rid="ref5">4</xref>
        ] gegenüber
dem hier vorgestellten Ansatz allerdings nicht vor.
      </p>
      <p>
        Ein weiterer Ansatzpunkt zur Performance-Analyse und
-Optimierung existiert im Konzept des autonomen Datenbank-Tunings
[
        <xref ref-type="bibr" rid="ref6">5</xref>
        ][
        <xref ref-type="bibr" rid="ref7">6</xref>
        ],[
        <xref ref-type="bibr" rid="ref1 ref8">7</xref>
        ] – also dem fortlaufenden Optimieren des physischen
Designs von bereits bestehenden Datenbanken durch das DBMS
selbst. Ein autonomes System erkennt anhand von erlerntem
Wissen potentielle Probleme und leitet passende
Optimierungsmaßnahmen ein, bevor sich daraus negative Auswirkungen
ergeben. Dazu zählt beispielsweise die autonome Durchführung
einer Reorganisierung von Daten, um fortwährend steigenden
Zugriffszeiten entgegenzuwirken. Ähnlich können auch die
mittlerweile je System vielseitig vorhandenen Tuning-Advisor wie
beispielsweise [
        <xref ref-type="bibr" rid="ref9">8</xref>
        ] und [
        <xref ref-type="bibr" rid="ref10">9</xref>
        ] angesehen werden, die zwar nicht
automatisch optimierend ins System eingreifen, dem Administrator
aber Empfehlungen zu sinnvoll durchzuführenden Aktionen
geben. Sowohl das autonome Tuning als auch die Tuning-Advisor
sind nicht als Alternative zu dem im vorliegenden Beitrag
vorgestellten Ansatz einzuordnen. Vielmehr können sich diese
Konzepte ergänzen, indem die Anwendungsentwicklung auf Basis
des in Kapitel 4 vorgestellten Konzepts erfolgt und für die spätere
Anwendungsadministration/ -evolution verschiedene
TuningAdvisor und die Mechanismen des autonomen Tunings zum
Einsatz kommen.
      </p>
    </sec>
    <sec id="sec-4">
      <title>3. ENTWICKLUNGSPROZESS VON</title>
    </sec>
    <sec id="sec-5">
      <title>DATENBANKANWENDUNGEN</title>
      <p>
        Der Entwicklungsprozess von Anwendungen lässt sich anhand
des System Development Lifecycle (SDLC) beschreiben und in
verschiedene Phasen von der Analyse der Anforderungen bis hin
zum Betrieb/zur Wartung der fertigen Software gliedern [
        <xref ref-type="bibr" rid="ref2">1</xref>
        ].
Datenbank
Designer/
Architekt
Datenbank
Administrator
      </p>
      <p>Analyse
Datenbank</p>
      <p>Design
Implementierung
und Laden</p>
      <p>Test und
Auswertung</p>
      <p>Datenmodelle</p>
      <p>Erstellen
Laden
Tuning</p>
      <p>Analyse</p>
      <p>Detail Design
Implementierung</p>
      <p>Test und
Auswertung</p>
      <p>Reports
Prozesse</p>
      <p>Prototyping
Debugging
Business Analyst</p>
      <p>Software
Designer/
Architekt
Programmierer</p>
      <p>Tester</p>
      <p>SystemAdministrator</p>
      <p>
        Betrieb
DatenbankWartung
Wartung der
Anwendung
Zusätzlich zur reinen Anwendungsentwicklung sind weitere
Abläufe zur Planung und Bereitstellung einer geeigneten
Infrastruktur nötig. Für Datenbankanwendungen wäre das unter
anderem der Entwicklungsprozess der Datenbank, welcher sich nach
[
        <xref ref-type="bibr" rid="ref2">1</xref>
        ] ebenfalls durch ein dem SDLC ähnliches Modell – dem
Database Lifecycle (DBLC) – formalisieren lässt. Beide
Entwicklungsprozesse verlaufen zeitlich parallel und werden insbesondere in
größeren Unternehmen/Projekten durch verschiedene Akteure
realisiert. Auf Grundlage von [
        <xref ref-type="bibr" rid="ref2">1</xref>
        ] liefert Abbildung 1 eine
Übersicht dazu. Sie visualisiert parallel ablaufende
Entwicklungsphasen und eine Auswahl an zuständigen Akteuren, deren konkrete
Zusammensetzung/Aufgabenverteilung aber stark abhängig von
der Projektgröße und dem Projektteam ist. Wichtig sind hier
besonders zwei Erkenntnisse. Zum einen finden ähnliche
Entwicklungsprozesse bei Anwendung und Datenbank parallel statt – in
etwa das Anwendungsdesign und das Datenbankdesign. Zum
anderen können sehr viele Akteure am gesamten
Entwicklungsprozess beteiligt sein, sodass Designer, Programmierer, Tester und
Administratoren in der Regel disjunkte Personenkreise bilden.
Aus dem Blickwinkel der Datenbank-Performance und der darauf
einwirkenden bereits genannten Einflussfaktoren reduziert sich
der Entwicklungsprozess von Datenbankanwendungen auf die in
Abbildung 2 visualisierten Aufgaben. Anhand der analysierten
Anforderungen wird im Datenbank-Design ein konzeptionelles
Datenmodell entwickelt, das anschließend hin zum physischen
Datenmodell verfeinert wird. Da sich der Beitrag auf die in der
Praxis vorherrschenden relationalen DBMS beschränkt, wird auf
das in der Theorie gebräuchliche Zwischenprodukt des logischen
Datenmodells (relationale Abbildung) verzichtet.
      </p>
      <p>Nachdem die Design-Phase abgeschlossen ist, beginnt die
Implementierung. Datenbankseitig wird dabei das physische
Datenmodell mittels Data Definition Language (DDL) in ein
Datenbankschema innerhalb eines installierten und geeignet
konfigurierten DBMS umgesetzt und möglicherweise vorhandene
Testdaten geladen. Anwendungsseitig erfolgt parallel dazu die
Entwicklung von SQL-Statements zum Zugriff auf die Datenbank
sowie die Implementierung der Anwendung selbst. Nach
Fertigstellung einzelner Module finden mithilfe des
Entwicklungs- und Qualitätssicherungssystems kontinuierliche Tests
statt, die sich allerdings anfangs auf die Prüfung funktionaler
Korrektheit beschränken. Performance-Untersuchungen,
insbesondere bezogen auf die Datenbankzugriffe, erfolgen in der Regel
erst gezielt zum Abschluss der Implementierungsphase mittels
aufwändig vorzubereitender und im Qualitätssicherungssystem
durchzuführender Lasttests.</p>
      <p>Die Folgen aus diesem Vorgehen für die Erkennung und
Behandlung von Performance-Problemen sind mitunter gravierend.
Engpässe werden erst spät (im Betrieb) bemerkt und sind aufgrund
des fortgeschrittenen Entwicklungsprozesses nur mit hohem
Aufwand zu korrigieren. Basieren sie gar auf unvorteilhaften
Design-Entscheidungen beispielsweise bezogen auf die
Datenmodellierung, ist eine nachträgliche Korrektur aufgrund
zahlreicher Abhängigkeiten (Anwendungslogik, SQL-Statements,
Testdatenbestände, etc.), getrennten Zuständigkeiten und in der Regel
engen Projektzeitplänen nahezu ausgeschlossen. Erfahrungen aus
dem Arbeitsumfeld des Autors haben dies wiederholt bestätigt.
Performance
Indikatoren
Konzeptionelles 1.</p>
      <p>Datenmodell</p>
    </sec>
    <sec id="sec-6">
      <title>4. PROAKTIVE MODELLBASIERTE</title>
    </sec>
    <sec id="sec-7">
      <title>PERFORMANCE-ANALYSE</title>
      <p>Alternativ zur Performance-Analyse mittels Lasttests (vgl. Kapitel
3) bieten sich zur Kontrolle der SQL-Performance die eingangs
erwähnten EXPLAIN-Mechanismen an. Mit deren Hilfe lassen
sich bei vorliegendem physischen Datenbank-Design (inklusive
Indexe, etc.) bereits in frühen Abschnitten der
Implementierungsphase Auswertungen zu Ausführungsplänen und geschätzten
Kosten für entwickelte SQL-Statements durchführen. Auf diese
Weise gewonnene Erkenntnisse können vom
Designer/Programmierer direkt genutzt werden, um Optimierungen in Hinblick auf
die quasi grade entworfenen/implementierten SQL-Statements
durchzuführen. Durch die gegebene zeitliche Nähe zum
Anwendungs- und Datenbank-Design sind auch
Performance-Optimierungen auf Basis von Datenmodellanpassungen
(Normalisierung/Denormalisierung) ohne größeren Aufwand möglich.
Das beschriebene Vorgehen hat zwar den Vorteil, dass mögliche
Performance-Probleme schon von den Akteuren
(Designer/Programmierer) erkannt werden können, die diese durch
DesignÄnderungen am effektivsten zu lösen wissen. Demgegenüber
erfordern die EXPLAIN-Analysen und das Verständnis der
Ausführungspläne einen Grad an Expertise, den
Designer/Programmierer in der Regel nicht besitzen. Ein Datenbank Administrator
(DBA), der über diese verfügt, ist wiederum von den fachlichen
Anforderungen zu distanziert, sodass er zwar mögliche
Performance-Ausreißer erkennen, nicht aber fachlich bewerten kann.
Führt eine Anwendung beispielsweise einmal monatlich eine sehr
komplexe Auswertung mithilfe eines entsprechend
Laufzeitintensiven SQL-Statements durch, dann würde dem DBA diese
Abfrage bei EXPLAIN-Analysen als kritisch erscheinen. Denn er
weiß weder, dass damit ein fachlich aufwändiger Prozess
durchgeführt wird, noch dass es sich dabei um eine einmalig pro
Monat auszuführende Abfrage handelt. Um sich als DBA in einer
Infrastruktur von nicht selten mehr als 100 unterschiedlichen
Anwendungen über die fachlichen Anforderungen und speziellen
Prozesse jeder einzelnen im Detail zu informieren
beziehungsweise um sich als Designer/Programmierer das nötige Knowhow
zur Ausführungsplanbewertung aufzubauen, ist personelle
Kapazität vonnöten, die in der Regel nicht verfügbar ist.
Ein anderes Problem, dass sich in Zusammenhang mit
frühzeitigen EXPLAIN-Analysen zeigt, begründet sich in dem dritten
zuvor genannten Performance-Faktor: den Daten. Während diese
bei Anwendungsweiterentwicklungen weitgehend vorliegen,
existieren für neu zu entwickelnde Anwendungen im Normalfall keine
repräsentativen Datenbestände. Somit fehlen auch geeignete
Datenbankstatistiken zur Grundlage für die
EXPLAIN-Auswertungen. Die Folge sind Ausführungspläne und
Kostenabschätzungen, die mit denen eines späteren produktiven Einsatzes der
Statements oftmals nur wenig gemeinsam haben und für eine proaktive
Performance-Analyse somit (nahezu) unverwertbar sind.
Der im folgenden Kapitel vorgestellte proaktive modellbasierte
Ansatz zur Performance-Analyse und -Vorhersage greift beide
Probleme auf: die fehlende repräsentative Datenbasis für
Datenbankstatistiken und die mangelnde Expertise zur
Ausführungsplanbewertung durch Designer/Programmierer. Dabei sieht dieser
Ansatz zur Bereitstellung geeigneter Datenbankstatistiken ein
synthetisches Erzeugen anhand von Performance-Indikatoren vor.
Das Problem der mangelnden Expertise wird durch eine einfache
modellbasierte Darstellung von gewonnenen
EXPLAIN-Ergebnissen adressiert. Wie diese gestaltet ist und mit den
PerformanceIndikatoren zusammenwirkt verdeutlichen die weiteren
Ausführungen des Kapitels anhand Abbildung 3.</p>
    </sec>
    <sec id="sec-8">
      <title>4.1 Performance-Indikatoren im Datenmodell</title>
      <p>Als Performance-Indikatoren bezeichnet die vorliegende Arbeit
ausgewählte Metadaten zu Entitäten und deren Attributen
(beziehungsweise zu Tabellen und deren Spalten), die Aufschluss
über die erwarteten realen Datenbestände geben und in
Zusammenhang mit dem Datenbank-Design und der Infrastruktur erste
Rückschlüsse auf die zukünftige Datenbank-Performance
erlauben. Dazu zählen Informationen zu den erwarteten Datenmengen
wie in etwa die erwartete Anzahl an Zeilen pro Tabelle und
Kennzahlen zur Datenverteilung – beispielsweise in Form von
Wertebereichsangaben, Einzelwertwahrscheinlichkeiten oder der
Kardinalität pro Spalte. Viele dieser Informationen sind Teil des
Ergebnisses der Anforderungsanalyse und somit frühzeitig im
SDLC bekannt und vom Business Analyst erfasst worden. Dabei
reicht die Dokumentation von rein textuellen Beschreibungen bis
hin zu tief strukturierten Darstellungen. Eine einheitlich
standardisierte Form zur Erfassung von Performance-Indikatoren im
DBLC existiert jedoch bislang nicht, wodurch die Metadaten
kaum bis gar nicht in den weiteren Entwicklungsprozess
einfließen.</p>
      <p>
        In der Praxis basiert die Datenmodellierung ähnlich wie weite
Teile der Anwendungsmodellierung auf der Sprache UML. Dabei
wurde diese ursprünglich nicht zur Abbildung von
Datenstrukturen im Sinn einer Entity-Relationship-Modellierung
konzipiert, sodass die Verbindung beider Welten – und damit die
Modellierung von Anwendung und Datenstrukturen mithilfe einer
gemeinsamen Sprache in einem gemeinsamen Tool – erst durch
Ansätze wie [
        <xref ref-type="bibr" rid="ref11">10</xref>
        ] oder auch den Entwurf zum IMM Standard der
OMG [
        <xref ref-type="bibr" rid="ref12">11</xref>
        ] geschaffen wurde. Die Voraussetzung dafür bildet
jeweils die UML-Profil-Spezifikation, die es ermöglicht,
bestehende UML-Objekte über Neu-Stereotypisierungen zu erweitern.
Um die zuvor genannten Performance-Indikatoren für den
weiteren Entwicklungsprozess nutzbar zu machen und sie innerhalb
bestehender Infrastrukturen/Tool-Landschaften standardisiert zu
erfassen, kann ebenfalls der UML-Profil-Mechanismus genutzt
werden. So ließe sich beispielsweise mithilfe eines geeigneten
Profils wie in Abbildung 3 in 1. schematisch angedeutet aus einem
UML-Objekt „entity“ ein neues Objekt „entity_extended“
ableiten, das in einem zusätzlichen Merkmal „cardinality“
Informationen über die produktiv erwartete Datenmenge zu einer
Entität/Tabelle aufnehmen kann.
      </p>
    </sec>
    <sec id="sec-9">
      <title>4.2 Synthetische Datenbankstatistiken</title>
      <p>
        Eines der eingangs aufgezeigten Hindernisse für proaktive
Performance-Analysen beziehungsweise -Vorhersagen bestand in der
fehlenden repräsentativen Datenbasis für
Datenbank-Statistiken. Diese Statistiken werden im Normalfall vom DBMS anhand
der gespeicherten Daten selbst gesammelt. Dem entgegen verfolgt
das hier vorgestellte Konzept den Ansatz, dem DBMS Statistiken
vorzugeben, ohne dazu datenbankseitig repräsentative
Datenbestände vorhalten zu müssen. Dafür bieten zwar die wenigsten
DBMS vordefinierte Schnittstellen an, allerdings sind sämtliche
Statistik-Informationen in der Regel innerhalb DBMS-interner
manipulierbarer Tabellen gespeichert, wie dies beispielswiese
auch bei DB2 oder Oracle der Fall ist [
        <xref ref-type="bibr" rid="ref13">12</xref>
        ].
      </p>
      <p>Datenbankstatistiken enthalten Informationen über Datenmengen
und Datenverteilungen sowie Kennzahlen zur physischen
Speicherung wie beispielsweise die Anzahl der verwendeten
Datenbankseiten pro Tabelle. Während erstere inhaltlich den zuvor
beschriebenen Performance-Indikatoren entsprechen, sind die
Statistikdaten zur physischen Speicherung interne
DBMS-abhängige Größen. Mithilfe geeigneter, von den DBMS-Herstellern zur
Unterstützung beim Datenbank-Design bereitgestellter
Abschätzungsvorschriften lassen sich aber auch diese Kennzahlen auf
Grundlage der Performance-Indikatoren approximieren. Somit ist
es wie in Abbildung 3 in 2. gezeigt möglich, anhand geeignet
formalisierter Performance-Indikatoren frühzeitig im SDLC/
DBLC repräsentative Datenbankstatistiken künstlich zu erzeugen.</p>
    </sec>
    <sec id="sec-10">
      <title>4.3 EXPLAIN und Performance-Modell</title>
      <p>Auf Grundlage von synthetischen Datenbankstatistiken können
wie in Abbildung 3 in 3. und 4. zu sehen, mittels der vom DBMS
bereitgestellten EXPLAIN-Funktionalität, der SQL-Workload
und dem aus dem physischen Datenmodell ableitbaren
Datenbankschema proaktive Performance-Vorhersagen durchgeführt
werden. Die resultierenden, teils komplexen Ausführungspläne
lassen sich allerdings nur mit ausreichend Expertise und
vorhandenen personellen Kapazitäten angemessen auswerten, sodass
diese Problematik vorläufig weiterbesteht. Eine Hauptursache, die
das Verständnis von Ausführungsplänen erschwert, ist ihre
hierarchische Darstellung als Zugriffsbaum. Demgegenüber denkt
der Designer/Programmierer beim Modellieren oder dem
Entwickeln von SQL-Statements auf relationale Weise. Die im
vorliegenden Ansatz als Performance-Modell bezeichnete vereinfachte
Präsentation von Ausführungsplänen versucht, diese Diskrepanz
aufzulösen.</p>
      <p>Das Performance-Modell basiert auf dem physischen
Datenmodell und damit auf einer dem Designer/Programmierer bekannten
Darstellungsform. Zusätzlich umfasst es die für diesen
Personenkreis wesentlichen Informationen aus den EXPLAIN-Ergebnissen.
Dazu zählen die vom DBMS abgeschätzten Kosten für die
Ausführung des gesamten Statements sowie wichtiger Operatoren wie
Tabellen- beziehungsweise Indexzugriffe oder
Tabellenverknüpfungen mittels Join – jeweils skaliert um die erwartete
Ausführungshäufigkeit des Statements. Weitere Detailinformationen
innerhalb der Ausführungspläne wie beispielsweise die konkrete
Abarbeitungsreihenfolge einzelner Operatoren oder Angaben zu
abgeschätzten Prädikat-Selektivitäten werden vom Modell zum
Zweck der Einfachheit und Verständlichkeit bewusst
vernachlässigt. Für die gleichzeitige Analyse mehrerer Statements erfolgt
eine Aggregation der jeweils abgeschätzten Kosten auf
Objektebene.</p>
      <p>Zentrale Komponente im Performance-Modell ist eine ebenfalls
dem physischen Datenmodell angelehnte Diagrammdarstellung.
Mithilfe farblicher Hervorhebung und geeigneter
Bewertungsmetriken sollen sämtliche Objekte gemäß den vom DBMS
geschätzten Zugriffskosten zur Abarbeitung der Workload
klassifiziert und visualisiert werden. Auf diese Weise kann ein
Designer/Programmierer frühzeitig Auskunft über aus
Performance-Perspektive zu optimierende Bereiche im
Datenbankschema beziehungsweise kritische, alternativ zu konzipierende
SQL-Statements erhalten. Abbildung 3 veranschaulicht
exemplarisch ein visualisiertes Performance-Modell für zwei Statements/
Ausführungspläne (EP). Während der untere Bereich weitgehend
grün/unkritisch markiert ist, befinden sich im oberen
Diagrammteil mögliche Performance-kritische rot gekennzeichnete Zugriffe,
die es gezielt zu untersuchen und an geeigneter Stelle
(SQL-Statement, Datenbank-Design) zu optimieren gilt (vgl. gestrichelte
Pfeile in Abbildung 3).</p>
      <p>Die technische Realisierung des Performance-Modells sowie der
dazugehörigen Diagrammdarstellung erfolgt analog zur Erfassung
der Performance-Indikatoren über den UML-Profil-Mechanismus,
wodurch auch in diesem Punkt die Kompatibilität des
vorgestellten Ansatzes zu bestehenden Tool-Infrastrukturen
gewährleistet ist.</p>
    </sec>
    <sec id="sec-11">
      <title>4.4 Ablauf einer Analyse/Vorhersage</title>
      <p>Für den Designer/Programmierer sieht der in Abbildung 3
vorgestellte proaktive Ansatz folgende Vorgehensweise vor.
Nachdem nach 1. ein Datenbank-Design-Entwurf fertiggestellt ist,
initiiert er in 2. einen Automatismus zur Abbildung des Designs
in ein Datenbank-Schema sowie zur Erstellung von synthetischen
Datenbank-Statistiken anhand der von ihm modellierten
Performance-Indikatoren. Mithilfe einer weiteren Routine startet der
Designer/Programmierer in 3. und 4. anschließend einen
Simulationsprozess, der auf Basis der EXPLAIN-Mechanismen
Performance-Vorhersagen für eine gegebene Workload erstellt und diese
als Performance-Modell aufbereitet. Von dort aus informiert er
sich mithilfe der Diagrammdarstellung über mögliche kritische
Zugriffe, die er daraufhin gezielt analysiert und optimiert.</p>
    </sec>
    <sec id="sec-12">
      <title>5. ZUSAMMENFASSUNG</title>
      <p>Datenbank-Performance ist ein wichtiger, oftmals jedoch
vernachlässigter Faktor in der Anwendungsentwicklung. Durch moderne
Anforderungen und dazu implementierte Anwendungen sehen
sich speziell deren Datenbank-Backends mit kontinuierlich
wachsenden Herausforderungen insbesondere betreffend der
Performance konfrontiert. Diese können nur bewältigt werden,
wenn das Thema Datenbank-Performance intensiver betrachtet
und durch proaktive Analysen (beispielsweise mittels
EXPLAINMechanismen) kontinuierlich verfolgt wird. Doch auch dann sind
einzelne Hindernisse unvermeidlich: fehlende repräsentative
Daten(-mengen) und Expertise/Kapazitäten zur Analyse.
Der vorliegende Beitrag präsentiert zur Lösung dieser Probleme
einen modellbasierten Ansatz, der auf Basis synthetisch erzeugter
Statistiken proaktive Performance-Analysen sowie -Vorhersagen
erlaubt und die daraus gewonnenen Ergebnisse in einer einfach
verständlichen Form visualisiert. Die technologische Grundlage
dafür bietet die in der Praxis vorherrschende
Modellierungssprache UML mit ihrer UML-Profil-Spezifikation. Sie erlaubt es
das hier vorgestellte Konzept und die dazu benötigten
Komponenten mit vorhandenen technischen Mitteln abzubilden und
nahtlos in bestehende UML-Infrastrukturen zu integrieren.</p>
    </sec>
    <sec id="sec-13">
      <title>6. AUSBLICK</title>
      <p>Bei dem im Beitrag vorgestellten Konzept handelt es sich um
einen auf Basis wiederkehrender praktischer Problemstellungen
und den daraus gewonnenen Erfahrungen konstruierten Ansatz.
Während die technische Umsetzbarkeit einzelner Teilaspekte wie
etwa die Erfassung von Performance-Indikatoren oder die
Konstruktion des Performance-Modells auf Basis von UML-Profilen
bereits geprüft wurde, steht eine prototypische Implementierung
des gesamten Prozesses zur Performance-Analyse noch aus.
Zuvor sind weitere Detailbetrachtungen nötig. So ist
beispielsweise zu klären, in welchem Umfang Performance-Indikatoren
im Datenmodell vom Analyst/Designer sinnvoll erfasst werden
sollten. Dabei ist ein Kompromiss zwischen maximalem
Detailgrad und minimal nötigem Informationsgehalt anzustreben,
sodass der Aufwand zur Angabe von Performance-Indikatoren
möglichst gering ist, mit deren Hilfe aber dennoch eine
repräsentative Performance-Vorhersage ermöglicht wird.
Weiterhin gilt es, eine geeignete Metrik zur
Bewertung/Kategorisierung der Analyseergebnisse zu entwickeln. Hier steht die
Frage im Vordergrund, wann ein Zugriff anhand seiner Kosten als
schlecht und wann er als gut zu bewerten ist. Ein teurer Zugriff ist
nicht zwangsweise ein schlechter, wenn er beispielsweise zur
Realisierung einer komplexen Funktionalität verwendet wird.
Zuletzt sei noch die Erfassung beziehungsweise Beschaffung der
für die EXPLAIN-Analysen notwendigen Workload erwähnt.
Diese muss dem vorgestellten proaktiven Analyseprozess
zugänglich gemacht werden, um anhand des beschriebenen
Konzepts frühzeitige Performance-Untersuchungen durchführen
zu können. Im einfachsten Fall könnte angenommen werden, dass
sämtliche SQL-Statements (inklusive ihrer
Ausführungshäufigkeit) vom Designer/Programmierer ebenfalls im Datenmodell
beispielsweise als zusätzliche Merkmale von Methoden in der
UML-Klassenmodellierung zu erfassen und kontinuierlich zu
pflegen wären. Dies wäre jedoch ein sehr aufwändiges Verfahren,
das der gewünschten hohen Praxistauglichkeit des proaktiven
Ansatzes entgegensteht. Somit sind alternative Varianten zur
Beschaffung der Workload für den Analyseprozess zu
untersuchen und abzuwägen.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>7. LITERATUR</mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>C.</given-names>
            <surname>Coronel</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Morris</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Rob. Database Systems</surname>
          </string-name>
          : Design, Implementation, and
          <string-name>
            <surname>Management</surname>
          </string-name>
          , Course Technology,
          <volume>10</volume>
          . Auflage,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>S.</given-names>
            <surname>Salza</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Renzetti</surname>
          </string-name>
          .
          <article-title>A Modeling Tool for Workload Analysis and Performance Tuning of Parallel Database Applications</article-title>
          , Proceedings in ADBIS'
          <volume>97</volume>
          ,
          <fpage>09</fpage>
          .
          <year>1997</year>
          http://www.bcs.org/upload/pdf/ewic_ad97_
          <fpage>paper38</fpage>
          .pdf
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>R.</given-names>
            <surname>Osman</surname>
          </string-name>
          ,
          <string-name>
            <given-names>W. J.</given-names>
            <surname>Knottenbelt</surname>
          </string-name>
          .
          <article-title>Database system performance evaluation models: A survey, Artikel in Performance Evaluation</article-title>
          , Elsevier Verlag,
          <fpage>10</fpage>
          .
          <year>2012</year>
          http://dx.doi.org/10.1016/j.peva.
          <year>2012</year>
          .
          <volume>05</volume>
          .006
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>Tata</given-names>
            <surname>Consultancy</surname>
          </string-name>
          <article-title>Services. System and method for SQL performance assurance services</article-title>
          ,
          <source>Internationales Patent PCT/IN2011/000348</source>
          ,
          <fpage>11</fpage>
          .
          <year>2011</year>
          http://dx.doi.org/10.1016/j.peva.
          <year>2012</year>
          .
          <volume>05</volume>
          .006
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>D.</given-names>
            <surname>Wiese</surname>
          </string-name>
          . Gewinnung,
          <article-title>Verwaltung und Anwendung von Performance-Daten zur Unterstützung des autonomen Datenbank-Tuning, Dissertation, Fakultät für Mathematik und Informatik, Friedrich-</article-title>
          <string-name>
            <surname>Schiller-Universität</surname>
            <given-names>Jena</given-names>
          </string-name>
          ,
          <volume>05</volume>
          .
          <year>2011</year>
          . http://www.informatik.uni-jena.de/dbis/alumni/wiese/pubs/D issertation__David_Wiese.pdf
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>S.</given-names>
            <surname>Chaudhuri</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Narasayya</surname>
          </string-name>
          .
          <article-title>A Self-Tuning Database Systems: A Decade of Progress</article-title>
          , Proceedings in VLDB'
          <volume>07</volume>
          ,
          <fpage>09</fpage>
          .
          <year>2007</year>
          http://research.microsoft.com/pubs/76506/vldb07-
          <fpage>10yr</fpage>
          .pdf
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>N.</given-names>
            <surname>Bruno</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Chaudhuri</surname>
          </string-name>
          .
          <article-title>An Online Approach to Physical Design Tuning</article-title>
          , Proceedings in ICDE'
          <volume>07</volume>
          ,
          <fpage>04</fpage>
          .
          <year>2007</year>
          http://research.microsoft.com/pubs/74112/continuous.pdf
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>Oracle</given-names>
            <surname>Corporation</surname>
          </string-name>
          .
          <source>Oracle Database 2 Day DBA 12c Release</source>
          <volume>1</volume>
          (
          <issue>12</issue>
          .1)
          <article-title>- Monitoring and Tuning the Database</article-title>
          ,
          <year>2013</year>
          . http://docs.oracle.com/cd/E16655_01/server.121/e17643/mo ntune.
          <source>htm#ADMQS103</source>
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>Microsoft</given-names>
            <surname>Corporation. SQL Server 2005 - Database Engine Tuning</surname>
          </string-name>
          <article-title>Advisor (DTA</article-title>
          ) in
          <source>SQL Server</source>
          <year>2005</year>
          ,
          <string-name>
            <given-names>Technischer</given-names>
            <surname>Artikel</surname>
          </string-name>
          ,
          <year>2006</year>
          . http://download.microsoft.com/download/4/7/a/47a548b9- 249e
          <string-name>
            <surname>-</surname>
          </string-name>
          484c
          <source>-abd7-29f31282b04d/SQL2005DTA</source>
          .doc
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [10]
          <string-name>
            <surname>C.-M. Lo</surname>
          </string-name>
          .
          <article-title>A Study of Applying a Model-Driven Approach to the Development of Database Applications</article-title>
          , Dissertation, Department of Information Management, National Taiwan University of Science and Technology,
          <volume>06</volume>
          .
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [11]
          <string-name>
            <surname>Object</surname>
            <given-names>Management</given-names>
          </string-name>
          <string-name>
            <surname>Group. Information Management</surname>
          </string-name>
          <article-title>Metamodel (IMM) Specification Draft Version 8</article-title>
          .0,
          <string-name>
            <surname>Spezifikationsentwurf</surname>
          </string-name>
          ,
          <volume>03</volume>
          .
          <year>2009</year>
          . http://www.omgwiki.org/imm/doku.php
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>N.</given-names>
            <surname>Burgold</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Gerstmann</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Leis</surname>
          </string-name>
          .
          <article-title>Statistiken in relationalen DBMSen und Möglichkeiten zu deren synthetischer Erzeugung, Projektarbeit, Fakultät für Mathematik und Informatik, Friedrich-</article-title>
          <string-name>
            <surname>Schiller-Universität</surname>
            <given-names>Jena</given-names>
          </string-name>
          ,
          <volume>05</volume>
          .
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>