<!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>Analyse und Vergleich von Zugriffstechniken fu¨ r funktionale Aspekte in RDBMS</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Matthias Liebisch</string-name>
          <email>m.liebisch@uni-jena.de</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Friedrich-Schiller-Universita ̈ t Jena Lehrstuhl f u ̈r Datenbanken und Informationssysteme Ernst-Abbe-Platz 2 07743 Jena</institution>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2011</year>
      </pub-date>
      <fpage>25</fpage>
      <lpage>30</lpage>
      <abstract>
        <p>KURZFASSUNG Neben klassischen fachlichen Anforderungen existieren in Anwendungssystemen oft auch querschnittliche Belange, deren Funktionalitat sich nicht einfach kapseln bzw. modularisieren lasst. Vertreter dieser sogenannten funktionalen Aspekte sind beispielsweise die mehrsprachige oder versionierte Darstellung und Verwaltung von Anwendungsdaten. Nachdem sich in der Software-Entwicklung seit einigen Jahren die Aspektorientierte Programmierung als Losung etabliert hat, bietet das neuartige Paradigma der Aspektorientierten Datenhaltung ein entsprechendes Konzept zur Abbildung querschnittlicher Belange in einem relationalen Datenmodell. Dabei stehen vor allem die Unabhangigkeit vom Prozess der fachlichen Modellierung und ein hoher Wiederverwendungsgrad im Vordergrund. Basierend auf dem zu diesem Zweck entwickelten Referenzmodell untersucht der vorliegende Beitrag unterschiedliche Techniken fur den Zugri auf jene funktionalen Aspekte. Diese werden anschlieend anhand wesentlicher Bewertungskriterien einer Evaluation unterzogen und miteinander verglichen.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. EINLEITUNG</title>
      <p>
        Seit der Beschreibung des relationalen Modells[
        <xref ref-type="bibr" rid="ref4 ref8">4</xref>
        ] Anfang der
1970er Jahre ist die Bedeutung auf diesem Modell
basierender Datenbankmanagementsysteme (RDBMS) als
Persistierungsebene stetig gewachsen. Heutzutage bilden
relationale Datenbanksysteme die Grundlage fur die
vielfaltigsten Anwendungssysteme und sind damit aus den meisten
alltaglichen Prozessen nicht mehr wegzudenken. Die
Ent
      </p>
    </sec>
    <sec id="sec-2">
      <title>2. REFERENZMODELL</title>
      <p>
        Fur die vom fachlichen Datenmodell unabhangige und
gekapselte Persistierung aspektspezi scher Daten wurde in [
        <xref ref-type="bibr" rid="ref16">12</xref>
        ]
ein Referenzmodell vorgestellt und beschrieben, welches mit
geringfugigen Anpassungen bezuglich der
Fremdschlusseldenitionen in den Tabellen zur Aspektverknupfung auch in
diesem Beitrag zum Einsatz kommt.
      </p>
      <p>Aspect.Datatype
PK AspTypeID</p>
      <p>TypeName
Length</p>
      <p>Scale
Aspect.Table
PK AspTabID</p>
      <p>Schema</p>
      <p>TableName
Aspect.Column
PK AspColID
FK Table</p>
      <p>ColumnName
FK Datatype
Aspektmetadaten
PK AspAssID
FK KeyValue
FK AspectValue
Aspect.Value
PK AspValID</p>
      <p>RowID
FK Column</p>
      <p>Value</p>
      <p>Aspect.KeyValue
PK AspKeyID
FK Aspect</p>
      <p>KeyValue</p>
      <p>Comment
Aspect.Definition
PK AspDefID</p>
      <p>Name</p>
      <p>Key
FK Datatype
Aspect.Additional
PK AspAddID
FK Aspect</p>
      <p>FK Table
Aspektverknüpfung</p>
      <p>Aspektstammdaten</p>
      <p>PK/FK: Primär−/Fremdschlüssel</p>
      <sec id="sec-2-1">
        <title>Abbildung 1: Referenzmodell</title>
        <p>Zentraler Bestandteil dieses in Abbildung 1 skizzierten
Referenzmodells sind die beiden Tabellen Aspect.Value und
Aspect.Assign, welche die Speicherung aspektspezi scher
Attributwerte sowie deren Zuordnung zu einer konkreten
Aspektauspragung (z.B. Locale 'en' im Aspekt
Mehrsprachigkeit) fur eine Fachtabellenzelle realisieren. Daneben
existieren weitere Tabellen zur Verwaltung von Metadaten, wie
beispielsweise Aspect.KeyValue fur die Spezi kation von
Auspragungswerten zu allen im System de nierten
Aspekten oder Aspect.Column zur Hinterlegung
aspektrelevanter Attribute der Fachtabellen.</p>
        <p>
          Die Anforderungen aus dem Paradigma der
Aspektorientierten Datenhaltung werden insbesondere durch das
EntityAttribute-Value-Konzept[
          <xref ref-type="bibr" rid="ref19">15</xref>
          ] (EAV) gewahrleistet, welches
fur Aspect.Value und Aspect.KeyValue zur Anwendung
kommt. Die damit verbundenen Konsequenzen[
          <xref ref-type="bibr" rid="ref11">7</xref>
          ] bezuglich
der Komplexitat von direkten SQL-Anfragen im
Referenzmodell erfordern die Analyse alternativer Zugri sarten.
        </p>
        <p>Mehrsprachigkeit</p>
        <p>Demo.Modul
PK TeilNr</p>
        <p>Name
Preis
Flags</p>
        <p>Demo.Struktur
PK,FK Oberteil
PK,FK Unterteil</p>
        <p>Menge</p>
        <p>PK/FK: Primär−/Fremdschlüssel
IAnfrage: Ermittle fur das Modul mit TeilNr=4711 alle
mehrsprachigen Daten ( Name und Preis) sowie den
jeweiligen Aspektschlusselwert als Locale.</p>
        <p>Abbildung 2: Beispiel fur Datenmodell mit Anfrage
Zur Veranschaulichung der in Abschnitt 3 folgenden
Techniken soll das in Abbildung 2 dargestellte Beispiel eines
vereinfachten Datenmodells zur Verwaltung von Stucklisten
dienen, in dem der Aspekt "Mehrsprachigkeit\ fur die Attribute
Demo.Modul.Name sowie Demo.Modul.Preis aktiviert
wurde. Darauf aufbauend soll jeweils die Beantwortung der
zugehorigen Beispiel-Anfrage erlautert werden, welche das
Prinzip fur den Zugri auf aspektspezi sche Attributwerte
in einem konkreten fachlichen Anwendungskontext
verdeutlichen soll.</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>3. ZUGRIFFSTECHNIKEN</title>
      <p>
        Dieser Abschnitt beschreibt verschiedene Moglichkeiten fur
den Zugri auf funktionale Aspekte, welche mit Hilfe des
in Abbildung 1 prasentierten Referenzmodells in ein
fachliches Datenmodell integriert werden. Aufgrund der Tatsache,
dass das relationale Modell als Grundlage dient, ist der
direkte Zugri mittels SQL auf die entsprechenden Strukturen
die naheliegendste Moglichkeit. Allerdings stellt die zentrale
Tabelle Aspect.Value eine neue Herausforderung fur die
Anfragegenerierung dar, weil darin enthaltene Daten durch
das verwendete EAV-Prinzip[
        <xref ref-type="bibr" rid="ref19">15</xref>
        ] einer sogenannten
unpivotisierten ("gekippten\) Speicherungsform unterliegen. Dies
hat zur Konsequenz, dass zu jedem Attribut (Column)
eines traditionellen Tupels (identi zierbar uber RowID) der
jeweilige Wert (Value) in einer eigenen Zeile gespeichert
wird. Da jedoch die klassische relationale Verarbeitung von
Datensatzen mit zugehorigen Attributen als Tabellenspalten
ausgeht, ist eine Pivotisierung ("rows to columns\)
notwendig, sobald in der Anfrage die Tabelle Aspect.Value
involviert wird. Die anschlie enden Abschnitte beschreiben drei
Konstrukte in SQL sowie einen applikativen Ansatz, um die
genannte Transformation zu unterstutzen.
      </p>
    </sec>
    <sec id="sec-4">
      <title>3.1 SQL mit JOIN</title>
      <p>
        Bei einer Beschrankung auf normierte Sprachmittel ist die
erforderliche Transformation nur mittels JOIN-Operatoren
realisierbar, da weder im SQL:92-Standard[
        <xref ref-type="bibr" rid="ref10">6</xref>
        ] als Grundlage
fur das Paradigma der Aspektorientierten Datenhaltung[
        <xref ref-type="bibr" rid="ref15">11</xref>
        ]
noch in der aktuellen SQL:2008-Norm[
        <xref ref-type="bibr" rid="ref14">10</xref>
        ] dedizierte
Operatoren zur Pivotisierung einer Tabelle existieren. Das
prinzipielle Vorgehen ist exemplarisch fur die in Abbildung 2
formulierte Anfrage in Abbildung 3 dargestellt. Dabei
wurde auf die Formatierung der Ergebnisattribute entsprechend
den zugeordneten Datentypen in Tabelle Aspect.Datatype
verzichtet und zwecks Ubersichtlichkeit die Kenntnis
gewisser Metadaten wie Idents von Aspekten und Tabellenspalten
als bekannt vorausgesetzt.
      </p>
      <sec id="sec-4-1">
        <title>SELECT T1.Value AS Name, T2.Value AS Preis,</title>
      </sec>
      <sec id="sec-4-2">
        <title>T5.KeyValue AS Locale</title>
      </sec>
      <sec id="sec-4-3">
        <title>FROM Aspect.Value T1</title>
      </sec>
      <sec id="sec-4-4">
        <title>INNER JOIN Aspect.Value T2</title>
        <p>ON T1.RowID = T2.RowID</p>
      </sec>
      <sec id="sec-4-5">
        <title>INNER JOIN Aspect.Assign T3</title>
        <p>ON T1.AspValID = T3.AspectValue</p>
      </sec>
      <sec id="sec-4-6">
        <title>INNER JOIN Aspect.Assign T4</title>
        <p>ON T2.AspValID = T4.AspectValue</p>
      </sec>
      <sec id="sec-4-7">
        <title>INNER JOIN Aspect.KeyValue T5</title>
        <p>ON T3.KeyValue = T5.AspKeyID
WHERE T1.Column = 1 -- /* 'Name' */</p>
        <p>AND T2.Column = 2 -- /* 'Preis' */
AND T3.KeyValue = T4.KeyValue
AND T5.Aspect = 1 -- /* 'Mehrsprachigkeit' */
AND T1.RowID = 4711</p>
        <p>
          Abbildung 3: Anfrage mit JOIN
Bereits fur das simple in Abbildung 3 prasentierte Beispiel
ist die Komplexitat der Anfragegenerierung inklusive
Pivotisierung der Tabelle Aspect.Value erkennbar.
Insbesondere skalieren die notwendigen JOIN-Operatoren linear mit
den Attributen im Ergebnisschema. Dabei werden jeweils
die Tabellen Aspect.Value und Aspect.Assign
miteinander verbunden, welche fur die Speicherung aller
aspektspezi schen Auspragungen von Attributwerten in Fachtabellen
zustandig sind und dadurch mit Abstand die
umfangreichsten Mengengeruste aufweisen. Erwartungsgema haben
derartige Anweisungen eine oft inakzeptable Verarbeitungszeit
wie entsprechende Analysen gezeigt haben[
          <xref ref-type="bibr" rid="ref17">13</xref>
          ].
        </p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>3.2 SQL mit PIVOT</title>
      <p>
        Verlasst man die SQL-Norm auf der Suche nach
adaquater Unterstutzung fur die Pivotisierung von EAV-Tabellen,
dann zeigt sich, dass DBMS-Hersteller bereits
produktspezische SQL-Erweiterungen mit den Operatoren PIVOT und
UNPIVOT[
        <xref ref-type="bibr" rid="ref24">20</xref>
        ] anbieten. Unter anderem nden sich
derartige Implementierungen in Datenbanksystemen wie
Microsoft SQL Server 2005[
        <xref ref-type="bibr" rid="ref22">18</xref>
        ] oder Oracle 11g[
        <xref ref-type="bibr" rid="ref18">14</xref>
        ]. Ein typisches
Anwendungsgebiet fur diese Transformationen sind
OLAPAnfragen im Bereich Data Warehouse[
        <xref ref-type="bibr" rid="ref21">17</xref>
        ], deren Blickwinkel
geandert werden soll (beispielsweise die Gruppierung nach
Regionen statt Produkten in einer Umsatzubersicht). Durch
Nutzung von PIVOT und UNPIVOT kann eine gezielte
Optimierung auf Basis der klassischen Operatoren wie Verbund
oder Projektion erfolgen[
        <xref ref-type="bibr" rid="ref9">5</xref>
        ].
      </p>
      <sec id="sec-5-1">
        <title>SELECT PivotedData.[1] AS Name,</title>
      </sec>
      <sec id="sec-5-2">
        <title>PivotedData.[2] AS Preis,</title>
      </sec>
      <sec id="sec-5-3">
        <title>PivotedData.KeyValue AS Locale</title>
      </sec>
      <sec id="sec-5-4">
        <title>FROM (</title>
      </sec>
      <sec id="sec-5-5">
        <title>SELECT T1.RowID, T1.Column, T1.Value,</title>
      </sec>
      <sec id="sec-5-6">
        <title>T3.KeyValue</title>
      </sec>
      <sec id="sec-5-7">
        <title>FROM Aspect.Value T1</title>
      </sec>
      <sec id="sec-5-8">
        <title>INNER JOIN Aspect.Assign T2</title>
        <p>ON T1.AspValID = T2.AspectValue</p>
      </sec>
      <sec id="sec-5-9">
        <title>INNER JOIN Aspect.KeyValue T3</title>
        <p>ON T2.KeyValue = T3.AspKeyID
WHERE T3.Aspect = 1 -- /*'Mehrsprachigkeit'*/</p>
        <p>AND T1.RowID = 4711
) AS JoinData</p>
      </sec>
      <sec id="sec-5-10">
        <title>PIVOT (</title>
      </sec>
      <sec id="sec-5-11">
        <title>MAX(JoinData.Value)</title>
      </sec>
      <sec id="sec-5-12">
        <title>FOR JoinData.Column IN ([1], [2]) -- /* 1 und 2 = relevante Column-IDs */ ) AS PivotedData</title>
        <p>Abbildung 4: Anfrage mit PIVOT
Aber auch die Verarbeitung von EAV-Tabellen wie hier im
Kontext der Aspektorientierten Datenhaltung ist mit Hilfe
des PIVOT-Operators moglich. Abbildung 4 demonstriert
dessen Verwendung unter Microsoft SQL Server 2005 fur
die Beispielanfrage in Abbildung 2. Auf den ersten Blick
verwirrt dabei der Ausdruck MAX(JoinData.Value), welcher
die notwendige Aggregatbildung bei der Pivotisierung
ubernimmt. Diese Funktion lasst das Ergebnis jedoch inhaltlich
korrekt, solange jede Gruppe bezuglich der gruppierten
Attribute (T1.RowID, T3.KeyValue) und den zu Spalten
umgewandelten Werten aus T1.Column nur einen Datensatz
enthalt. Um dies unter Beachtung der getrennten
Speicherung der aspektspezi schen Werte (Aspect.Value) und den
tatsachlichen Fachtabellen-Zuordnungen (Aspect.Assign)
sicherzustellen, mussen die beiden genannten Tabellen
zusammen mit der Tabelle Aspect.KeyValue verbunden
werden. Anschlie end kann uber die projezierte Attributmenge
sinnvoll pivotisiert werden.</p>
        <p>Zusatzlich ist bei der Nutzung des PIVOT-Operators zu
beachten, dass fur die IN-Klausel nur eine fest de nierte
Spaltenmenge angegeben werden kann. Ein Ausdruck der Form
SELECT Column FROM Aspect.Value ist beispielsweise nicht
zulassig. Dies gilt sowohl fur Microsoft SQL Server 20051 als
auch fur Oracle 11g2. Wird eine derartige Dynamik dennoch
benotigt, lasst sich diese nur uber eine Stored Procedure,
vorgeschalteten Anwendungscode oder im Fall von Oracle
unter Verwendung von XML realisieren.</p>
      </sec>
    </sec>
    <sec id="sec-6">
      <title>3.3 SQL mit Spracherweiterung</title>
      <p>Aufgrund der fehlenden Normierung des PIVOT-Operators
einerseits und dessen Nutzungs-Einschrankungen im
Kontext der Aspektorientierten Datenhaltung andererseits,
verfolgt dieser Abschnitt die Idee einer SQL-Erweiterung fur
einen adaquaten Zugri auf funktionale Aspekte im
Referenzmodell. Die neuen Sprachelemente beein ussen sowohl
den DML-Teil als auch den DDL-Bereich, um
beispielsweise fur eine Tabellenspalte relevante Aspekte de nieren zu
konnen. Hier soll jedoch aus Platzgrunden nur das
SELECTStatement im Fokus stehen.
&lt;table reference&gt; ::=</p>
      <p>&lt;table name&gt; [ &lt;correlation specification&gt; ]
| &lt;derived table&gt; &lt;correlation specification&gt;
| &lt;joined table&gt;
| &lt;aspect view&gt;
&lt;aspect view&gt; ::=</p>
      <sec id="sec-6-1">
        <title>ASPECTVIEW &lt;identifier&gt; BASED ON &lt;table name&gt;</title>
      </sec>
      <sec id="sec-6-2">
        <title>GROUP BY &lt;aspect key&gt; [{, &lt;aspect key&gt;} ... ] &lt;aspect key&gt; ::=</title>
      </sec>
      <sec id="sec-6-3">
        <title>ASPECTKEY(&lt;character string literal&gt;)</title>
      </sec>
      <sec id="sec-6-4">
        <title>AS &lt;identifier&gt;</title>
        <p>
          Abbildung 5: SQL-Erweiterung ASPECTVIEW
Aufbauend auf dem SQL:92-Standard[
          <xref ref-type="bibr" rid="ref10">6</xref>
          ] wird das
Nichtterminalsymbol &lt;table reference&gt;3 um eine weitere
Alternative &lt;aspect view&gt; erganzt, deren De nition in
Abbildung 5 dargestellt ist. Das neue Schlusselwort ASPECTVIEW
erzeugt dabei eine Sicht auf alle aspektspezi schen Daten
der uber BASED ON angegebenen (fachlichen) Basistabelle.
Da es moglich ist, einer Tabellenspalte verschiedene Aspekte
zuzuordnen, erfolgt die Aufbereitung der Daten in
gruppierter Form bezuglich des einattributigen Primarschlussels[
          <xref ref-type="bibr" rid="ref15">11</xref>
          ]
und der uber &lt;aspect key&gt; spezi zierten Aspekte. Diese
stehen anschlie end im Rahmen der Anfrageformulierung als
regulare Attribute der Sicht zur Verfugung, fur eine Tabelle
mit n Attributen und insgesamt k zugeordneten Aspekte
ergibt sich also das in Abbildung 6 dargestellte
Relationsschema. Voraussetzung hierfur ist eine im Referenzmodell
ver1http://msdn.microsoft.com/en-us/library/ms177634.aspx
2http://download.oracle.com/docs/cd/B28359_01/server.111/b28286/
statements_10002.htm#CHDFAFIE
3http://savage.net.au/SQL/sql-92.bnf
ankerte UNIQUE-Bedingung auf Aspect.Definition.Key,
dessen Werte uber den Ausdruck ASPECTKEY(&lt;character
string literal&gt;) referenziert werden.
der Aspekte inklusive ihrer Metadaten als auch zur Abfrage
und Anderung aspektspezi scher Attributwerte unter
Beachtung sogenannter Aspekt lter und Aspektkontexte.
        </p>
        <p>Basistabelle Aspekte
(zAtt1; :}:|: ; Attn{ ;zAsp1; : : : ; Aspk{)
}|
Abbildung 6: Relationsschema von ASPECTVIEW
Angewendet auf das in Abbildung 2 skizzierte Beispiel
ergibt sich eine gegenuber den bisherigen Zugri stechniken
sehr kompakte Anfrage, wie Abbildung 7 zeigt. Neben dem
Aufwand zur Pivotisierung fur die Aspektsicht T1 ist
unabhangig von der Anzahl der Attribute oder Aspekte nur
noch eine JOIN-Operation erforderlich, um fur die Idents
in Aspi die eigentlichen Aspektschlusselwerte anzeigen zu
konnen.</p>
      </sec>
      <sec id="sec-6-5">
        <title>SELECT T1.Name, T1.Preis, T2.KeyValue AS Locale</title>
      </sec>
      <sec id="sec-6-6">
        <title>FROM Aspect.KeyValue T2 INNER JOIN (</title>
      </sec>
      <sec id="sec-6-7">
        <title>ASPECTVIEW ModulAspects</title>
      </sec>
      <sec id="sec-6-8">
        <title>BASED ON Demo.Modul</title>
      </sec>
      <sec id="sec-6-9">
        <title>GROUP BY ASPECTKEY('Locale') AS AspLoc ) T1 ON T2.AspKeyID = T1.AspLoc WHERE T1.TeilNr = 4711</title>
        <p>AND T2.Aspect = 1 -- /*'Mehrsprachigkeit'*/
Abbildung 7: Anfrage mit ASPECTVIEW
m
m
a
r
g
o
r
p
s
g
n
u
d
n
e
w
n
A</p>
        <p>JDBC−Schnittstelle
Funktionsbaustein
("Aspekt−API")</p>
        <p>DB
(inkl. Referenz−
modell)</p>
        <p>Abbildung 8: Anwendungs-Integration der API
Um einen moglichst plattformunabhangigen und
universellen Funktionsbaustein bereitstellen zu konnen, ist dieser
inklusive seiner API in Java spezi ziert. Da in den meisten
Fallen bei Verwendung einer Java-Bibliothek das
umgebende Anwendungsprogramm ebenfalls auf Java basiert und
fur Datenbankzugri e die JDBC-Schnittstelle genutzt wird,
zeigt Abbildung 8 ein typisches Integrations-Szenario. Dabei
konnen in einer ersten Ausbaustufe uber die API tatsachlich
nur aspektspezi sche Daten abgefragt und geandert werden,
die Verarbeitung der fachlichen Daten erfolgt unverandert
uber die bereits existierende Datenbank-Schnittstelle.
Aufgabe der Anwendung ist damit also die Zusammenfuhrung
der Ergebnisse beider Datenquellen, abhangig naturlich von
den inhaltlichen Anforderungen.</p>
      </sec>
      <sec id="sec-6-10">
        <title>1 // Deklarationen</title>
        <p>AspectManager am = /* Verweis auf Instanz holen */
3 AspectCatalogManager acm =</p>
        <p>am.getAspectCatalogManager();
5 int aspLang = acm.lookupAspectID("Language");</p>
        <p>
          int tID = acm.lookupTableID("Demo","Modul");
7 int cNameID = acm.lookupColumnID(tID, "Name");
int cPriceID = acm.lookupColumnID(tID, "Preis");
Sollte sich eine derartige Spracherweiterung wie
angedeutet fur alle Bereiche (DDL und DML) als geeignetes
Ausdrucksmittel im Umgang mit funktionalen Aspekten
beweisen, bleibt die praktische Nutzung stark eingeschrankt,
so9
lange eine Umsetzung in SQL-Norm oder DBMS-Produkten // Anfragespezifikation
fehlt. In solch einem Szenario kann der Einsatz sogenann- 11 QueryStatement st = am.createQueryStatement(tID);
ter Proxys[
          <xref ref-type="bibr" rid="ref1 ref5">1</xref>
          ] oder Query Transformation Layer[
          <xref ref-type="bibr" rid="ref2 ref6">2</xref>
          ] zwischen st.setRowIDs(new long[] {4711});
Anwendung und Datenbank eine Losung darstellen. Im vor- 13 st.setColumnSet(am.createColumnSet(
liegenden Fall mussten alle neu de nierten SQL-Ausdrucke, new int[] {cNameID, cPriceID}));
beispielsweise ASPECTVIEW, durch einen Parser auf e ziente
15
Art und Weise in genormte oder produktspezi sche
SQLAnweisungen transformiert werden. Damit ware zumindest
eine benutzerfreundliche Schnittstelle im Umgang mit
funktionalen Aspekten unter Nutzung der trivialen Umformung
(Anfrage mit JOIN, siehe Abschnitt 3.1) gescha en. Die
nachfolgend beschriebene Zugri stechnik ist ebenfalls ein
Vertreter dieser Kategorie, allerdings erfolgt die
Anfrageformulierung nicht auf Basis von SQL.
        </p>
        <p>// Ergebnisverarbeitung
17 ResultRows result = st.execute();</p>
        <p>AspectSet aSet = st.getAspectSet();
19 ColumnSet cSet = st.getColumnSet();</p>
        <p>int aspLangIdx = aSet.getIndex(aspLang);
21 int cNameIdx = cSet.getIndex(cNameID);</p>
        <p>
          int cPriceIdx = cSet.getIndex(cPriceID);
23 while (result.next())
{
3.4 Funktionsbaustein mit API 25
Gegenuber den bisher vorgestellten Moglichkeiten, den
Zugri auf funktionale Aspekte allein mit SQL-Mitteln auf der 27
Persistierungsebene zu realisieren, wird mit dem vierten
Ansatz eine applikationsseitige Verarbeitung verfolgt. Analog 29
zum Konzept mit JDBC[
          <xref ref-type="bibr" rid="ref13">9</xref>
          ] eine einheitliche Schnittstelle fur
relationale Datenbanken zu etablieren, ermoglicht der hier 31 }
vorgestellte Funktionsbaustein den Zugri auf funktionale
Aspekte, welche im Referenzmodell persistiert sind. Die
zugehorige API[
          <xref ref-type="bibr" rid="ref20">16</xref>
          ] umfasst Methoden sowohl zur Verwaltung
long rowID = result.getRowID();
AspectContextElement e =
        </p>
        <p>result.getContext().getElement();
String name = result.getValueString(cNameIdx);
String price = result.getValueString(cPriceIdx);
int localeID = e.getIndexKeyValue(aspLangIdx);</p>
        <p>Abbildung 9: Anfrage mit Funktionsbaustein
Eine Abfrage aspektspezi scher Daten wie fur das
ReferenzBeispiel wird prinzipiell durch das in Abbildung 9
dargestellte Code-Fragment realisiert. Der Einstieg erfolgt mit einer
implementierungsspezi schen Instanz der zentralen Klasse
AspectManager (Zeile 2), welche im nachsten Schritt zur
Erzeugung einer AspectCatalogManager-Instanz benotigt wird
und zudem auch fur die Verwaltung einer Datenbank-Session
zustandig ist. Schlie lich werden zum Aspekt
Mehrsprachigkeit sowie fur die Attribute Name und Preis der Tabelle
Modul die Idents ermittelt (Zeilen 5-8). Hierfur konnen
entsprechende Methoden an der Aspektkatalogmanager-Klasse
genutzt werden, damit sind alle fur die Anfrage notwendigen
Metadaten bekannt.</p>
        <p>Fur die Anfragespezi kation wird uber den AspectManager
eine Instanz der Klasse QueryStatement angelegt (Zeile 11).</p>
        <p>Da in der relevanten Fachtabelle Demo.Modul das
Attribut TeilNr bereits die Anforderung eines einattributigen
Primarschlussels erfullt, entspricht die Filterung mit der
Methode setRowIDs in Zeile 12 genau der Einschrankung auf
das Modul mit TeilNr=4711 in einer WHERE-Klausel. Die
zu projezierenden Spalten werden analog in Zeile 13
festgelegt. Weitere zusatzliche aspektspezi sche Beschrankungen
beispielsweise uber die AspectFilter-Klasse entfallen, da
alle mehrsprachigen Daten fur die Attribute Name und Preis
bereitzustellen sind.</p>
        <p>
          Die Ausfuhrung der Anfrage erzeugt ein ResultRows-Objekt
(Zeile 17), welches analog zum entsprechenden Konstrukt in
JDBC zeilenweise uber den next-Iterator verarbeitet
werden kann (Zeile 23). Zuvor sind fur die korrekte
Auswertung der Ergebnisstruktur die darin enthaltenen Indexe des
Mehrsprachigkeits-Aspekts sowie der beiden angefragten
Attribute zu ermitteln (Zeilen 18-22). Mit Hilfe dieser Indexe
kann nun auf die entsprechenden Informationen
zugegriffen werden (Zeilen 25-29). Weiterfuhrende Details zu
Datenstrukturen, Klassen und Methoden sowie zu deren
Verwendung nden sich bei Pietsch[
          <xref ref-type="bibr" rid="ref20">16</xref>
          ].
        </p>
      </sec>
    </sec>
    <sec id="sec-7">
      <title>4. VERGLEICH</title>
      <p>Nachdem der vorangegangene Abschnitt 3 die
unterschiedlichen Zugri stechniken prasentiert hat, dient dieser
Abschnitt der Bewertung und dem Vergleich jener Techniken.
Zuerst werden die dafur notwendigen Kriterien im Folgenden
beschrieben und anschlie end fur jeden Ansatz evaluiert.</p>
    </sec>
    <sec id="sec-8">
      <title>4.1 Kriterien</title>
      <p>
        Ausgehend vom Paradigma der Aspektorientierten
Datenhaltung spiegelt sich die Forderung nach Universalitat[
        <xref ref-type="bibr" rid="ref15">11</xref>
        ]
bezuglich SQL:92 im Kriterium der Standardisierung
wider, welches hier jedoch auch bezuglich der Existenz
einer ISO-Norm erweitert werden soll. In direktem
Zusammenhang dazu stellt sich die Frage der Praxisrelevanz
eines Ansatzes, d.h. ob mit diesem der Zugri auf
funktionale Aspekte unter den aktuellen Gegebenheiten
uberhaupt praktisch realisierbar ist. Eine gro e Bedeutung
spielen naturlich auch Ausagen zur Performance, allerdings
liegen nur fur den ersten Ansatz (SQL mit JOIN) tatsachlich
konkrete Messwerte[
        <xref ref-type="bibr" rid="ref17">13</xref>
        ] vor, sodass fur alle anderen
Varianten nur eine qualitative Abschatzung moglich ist.
Inwieweit die Strukturen des Referenzmodells zur
Persistierung funktionaler Aspekte dem Nutzer bzw. der Anwendung
im Rahmen der Verarbeitung bekannt sein mussen oder
verborgen bleiben konnen, zeigt sich in der Transparenz
einer Technik. Weiterhin wird gepruft, ob im jeweiligen
Ansatz auf die bereits vorhandene Machtigkeit eines zu
Grunde gelegten RDBMS in angemessener Weise
zuruckgegriffen wird (Funktionsadaquatheit) oder ob Funktionalitat,
wie beispielsweise das Parsen von Sprachausdrucken und
das Caching von Daten, reimplementiert werden muss.
Hierbei spielen auch prinzipielle Moglichkeiten zur
Erweiterbarkeit des Funktionsumfangs eine Rolle, erwartungsgema
werden diese durch Standardisierung beschrankt. Schlie lich
soll noch mit der Benutzerfreundlichkeit beurteilt
werden, wie sich letztlich die gesamte Auswertung funktionaler
Aspekte fur den Anwendungsentwickler darstellt.
      </p>
    </sec>
    <sec id="sec-9">
      <title>4.2 Bewertung</title>
      <p>Eine detaillierte Bewertung jeder einzelnen Zugri stechnik
bezuglich der zuvor aufgestellten Kriterien kann hier aus
Platzgrunden nicht beschrieben werden. Stattdessen enthalt
Tabelle 1 einen Uberblick mit den Ergebnissen.
g
n
u
r
e
i
s
m i
iitrreuK traaddnS
z
n
a
v
e
l
e
r
s
i
x
a
r
P
e
c
n
a
m
r
o
f
r
e
P
z
n
e
r
a
p
s
n
a
r
T
t
i
e
h
t
a
u
q
a
d
a
s
n
o
i
t
k
n
u
F</p>
      <sec id="sec-9-1">
        <title>Zugri stechnik</title>
        <p>JOIN
PIVOT
ASPECTVIEW
API
+ : ja/hoch
+ + { {
o1 o1 o o
{ o3 o +
o2 + +4 +
o : neutral/mittel
+ {
+ {
o3 +
{ +
{ : nein/niedrig
t
i
e
k
r
a
b
r
e
t
i
e
w
r
E
{
o
+
o
t
i
e
k
h
c
i
l
d
n
u
e
r
f
r
e
z
t
u
n
e
B</p>
        <p>Tabelle 1: Bewertung der Zugri stechniken
Dabei fallt auf, dass zwar der JOIN-Ansatz (Abschnitt 3.1)
als einziger Vertreter auf standardisierte
Sprachkonstrukte zuruckgreift und damit eine gro e Praxisrelevanz bzw.
Produktunterstutzung besitzt, allerdings weder performant
noch benutzerspezi sch erweiterbar ist. Zudem erzwingt die
Nutzung des Verbund-Operators genaue Kenntnisse uber die
Aspekt-Tabellen, wodurch die Transparenz und
Benutzerfreundlichkeit verloren geht.</p>
        <p>
          Dagegen verspricht die PIVOT-Methode (Abschnitt 3.2)
sowohl den transparenteren Zugang als auch eine
performantere Verarbeitung der aspektspezi schen Daten in den
EAVTabellen[
          <xref ref-type="bibr" rid="ref9">5</xref>
          ]. Dennoch fehlt hier ebenfalls die Moglichkeit zur
Erweiterbarkeit, zudem ist die Anwendbarkeit aufgrund der
(noch) fehlenden Normierung an Hersteller wie Oracle oder
Microsoft und deren DBMS-Produkte gekoppelt.
Ahnliche Charakteristik besitzt auch der
ASPECTVIEWVorschlag (Abschnitt 3.3), er soll jedoch als Erweiterung
von SQL die Konsequenzen der Aspektorientierten
Datenhaltung berucksichtigen. Daher ist der praktische Einsatz
momentan nur uber die genannten Zwischenschichten
realisierbar. Andererseits wird dem Anwendungsentwickler ein
intuitives und adaquates Konstrukt zur Verfugung gestellt,
um transparent auf funktionale Aspekte von Fachtabellen
zugreifen zu konnen.
        </p>
        <p>Schlie lich ergibt sich fur den API-Ansatz (Abschnitt 3.4)
eine mindestens ebenso gute oder bessere Bewertung
gegenuber den anderen Zugri stechniken in vielen Kriterien,
insbesondere ist ein performanter Aspekt-Zugri moglich.
Der fehlenden Standardisierung lasst sich z.B. durch
Portierung auf die gangigsten Programmiersprachen begegnen.
Gro er Aufwand ist zudem notwendig, um der Machtigkeit
von SQL auf Seiten der API gerecht zu werden.</p>
      </sec>
    </sec>
    <sec id="sec-10">
      <title>5. ZUSAMMENFASSUNG</title>
      <p>Der vorliegende Beitrag hat vier verschiedene Techniken fur
den Zugri auf funktionale Aspekte aufgezeigt, welche im
Kontext der Aspektorientierten Datenhaltung uber ein
ebenfalls kurz beschriebenes Referenzmodell auf relationalen
Datenbanken abgebildet werden konnen. Durch die
Fokussierung auf RDBMS und deren hohen Verbreitungsgrad ist die
Grundlage fur den praktischen Einsatz gewahrleistet. Die
anschlie ende Bewertung anhand zuvor aufgestellter
Kriterien sollte weitere Klarheit uber die Potentiale der
einzelnen Ansatze liefern. Dabei hat sich herausgestellt, dass vor
allem fur eine performante und transparente Auswertung
funktionaler Aspekte die standardisierten Mittel von SQL
nicht ausreichen.</p>
      <p>Unter den moglichen Alternativen erscheinen der Vorschlag
zur Erweiterung von SQL mit ASPECTVIEW und die
applikative Verarbeitung in einem Funktionsbaustein
vielversprechend. Dabei ist der Aufwand zur Erweiterung der
SQLNorm ungleich hoher und nicht automatisch von Erfolg
gekront bzw. wie bereits vorgeschlagen nur durch
Implementierung einer transformierenden Zwischenschicht
praktikabel. Aus diesem Grund werden sich nachfolgende
Arbeiten vor allem der prototypischen Realisierung, quantitativen
Performance-Vergleichen sowie funktionellen
Weiterentwicklungen bezuglich aktueller Einschrankungen der
vorgestellten API fur funktionale Aspekte widmen.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          <article-title>1 unterstutzt durch Oracle 11g und MS SQL Server 2005</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          <article-title>2 de-facto Standard[8] aufgrund enormer Verbreitung</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          <source>3 nur bei Nutzung von Zwischenschichten[1</source>
          , 2]
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          <article-title>4 begrundet durch Ergebnisse in [7] 6</article-title>
          . LITERATUR
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>A.</given-names>
            <surname>Adam</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Leuoth</surname>
          </string-name>
          , and
          <string-name>
            <given-names>W.</given-names>
            <surname>Benn</surname>
          </string-name>
          .
          <article-title>Nutzung von Proxys zur Erganzung von Datenbankfunktionen</article-title>
          .
          <source>In Proceedings of the 22nd GI Workshop Grundlagen von Datenbanken (GvDB</source>
          <year>2010</year>
          ), pages
          <fpage>31</fpage>
          {
          <fpage>35</fpage>
          ,
          <string-name>
            <surname>Bad</surname>
            <given-names>Helmstedt</given-names>
          </string-name>
          , Germany, May
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>S.</given-names>
            <surname>Aulbach</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Grust</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Jacobs</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Kemper</surname>
          </string-name>
          , and
          <string-name>
            <given-names>J.</given-names>
            <surname>Rittinger</surname>
          </string-name>
          <article-title>. Multi-tenant databases for software as a service: schema-mapping techniques</article-title>
          .
          <source>In SIGMOD Conference</source>
          , pages
          <volume>1195</volume>
          {
          <fpage>1206</fpage>
          ,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>R.</given-names>
            <surname>Chitchyan</surname>
          </string-name>
          ,
          <string-name>
            <surname>I.</surname>
          </string-name>
          <article-title>Sommerville, and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Rashid</surname>
          </string-name>
          .
          <article-title>An Analysis of Design Approaches for Crosscutting Concerns</article-title>
          . In Workshop on Aspect-
          <article-title>Oriented Design (held in conjunction with the 1st Aspect Oriented Software Development Conference (AOSD</article-title>
          <year>2002</year>
          ),
          <year>2002</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>E. F.</given-names>
            <surname>Codd</surname>
          </string-name>
          .
          <article-title>A relational model of data for large shared data banks</article-title>
          .
          <source>CACM</source>
          ,
          <volume>13</volume>
          (
          <issue>6</issue>
          ):
          <volume>377</volume>
          {
          <fpage>387</fpage>
          ,
          <year>1970</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>C.</given-names>
            <surname>Cunningham</surname>
          </string-name>
          , G. Graefe, and
          <string-name>
            <given-names>C. A.</given-names>
            <surname>Galindo-Legaria</surname>
          </string-name>
          .
          <article-title>PIVOT and UNPIVOT: Optimization and Execution Strategies in an RDBMS</article-title>
          .
          <source>In (e)Proceedings of the 30th International Conference on Very Large Data Bases (VLDB</source>
          <year>2004</year>
          ), pages
          <fpage>998</fpage>
          {
          <fpage>1009</fpage>
          ,
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>C.</given-names>
            <surname>Date</surname>
          </string-name>
          and
          <string-name>
            <given-names>H.</given-names>
            <surname>Darwen. SQL - Der Standard</surname>
          </string-name>
          . SQL/92 mit den Erweiterungen CLI und PSM.
          <string-name>
            <surname>Addison-Wesley</surname>
          </string-name>
          ,
          <year>1998</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>V.</given-names>
            <surname>Dinu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Nadkarni</surname>
          </string-name>
          , and
          <string-name>
            <given-names>C.</given-names>
            <surname>Brandt</surname>
          </string-name>
          .
          <article-title>Pivoting approaches for bulk extraction of Entity-Attribute-Value data</article-title>
          .
          <source>Computer Methods</source>
          And Programs in Biomedicine,
          <volume>82</volume>
          (
          <issue>1</issue>
          ):
          <volume>38</volume>
          {
          <fpage>43</fpage>
          ,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>T.</given-names>
            <surname>Egyedi</surname>
          </string-name>
          .
          <source>Why Java Was Not Standardized Twice. Hawaii International Conference on System Sciences</source>
          ,
          <volume>5</volume>
          (
          <issue>1</issue>
          ):
          <volume>5015</volume>
          {
          <fpage>5025</fpage>
          ,
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>M.</given-names>
            <surname>Fisher</surname>
          </string-name>
          , J. Ellis, and
          <string-name>
            <surname>J. Bruce. JDBC</surname>
          </string-name>
          <article-title>API Tutorial and Reference (Java Series)</article-title>
          .
          <source>Addison-Wesley</source>
          ,
          <year>2003</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [10] ISO/IEC 9075-2:
          <fpage>2008</fpage>
          .
          <article-title>Information technology { Database languages { SQL { Part 2: Foundation (SQL/Foundation)</article-title>
          . ISO, Geneva, Switzerland,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>M.</given-names>
            <surname>Liebisch. Aspektorientierte</surname>
          </string-name>
          Datenhaltung - ein
          <string-name>
            <surname>Modellierungsparadigma</surname>
          </string-name>
          .
          <source>In Proceedings of the 22nd GI Workshop Grundlagen von Datenbanken (GvDB</source>
          <year>2010</year>
          ), pages
          <fpage>13</fpage>
          {
          <fpage>17</fpage>
          ,
          <string-name>
            <surname>Bad</surname>
            <given-names>Helmstedt</given-names>
          </string-name>
          , Germany, May
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>M.</given-names>
            <surname>Liebisch</surname>
          </string-name>
          .
          <article-title>Supporting functional aspects in relational databases</article-title>
          .
          <source>In Proceedings of the 2nd International Conference on Software Technology and Engineering (ICSTE</source>
          <year>2010</year>
          ), pages
          <fpage>227</fpage>
          {
          <fpage>231</fpage>
          ,
          <string-name>
            <surname>San</surname>
            <given-names>Juan</given-names>
          </string-name>
          , Puerto Rico, USA, Oct.
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>M.</given-names>
            <surname>Liebisch</surname>
          </string-name>
          and
          <string-name>
            <given-names>M.</given-names>
            <surname>Plietz</surname>
          </string-name>
          .
          <article-title>Performance-Analysen fur Realisierungsansatze im Kontext der Aspektorientierten Datenhaltung</article-title>
          . Institut fur Informatik,
          <string-name>
            <surname>Friedrich-</surname>
          </string-name>
          Schiller-Universitat Jena, Nov.
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>D.</given-names>
            <surname>Lorentz</surname>
          </string-name>
          .
          <article-title>Oracle Database SQL Language Reference 11g Release 1</article-title>
          .
          <string-name>
            <surname>Oracle</surname>
          </string-name>
          , Aug.
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>P.</given-names>
            <surname>Nadkarni</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Marenco</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Chen</surname>
          </string-name>
          , E. Skoufos, G. Shepherd, and
          <string-name>
            <given-names>P.</given-names>
            <surname>Miller</surname>
          </string-name>
          .
          <article-title>Organization of Heterogeneous Scienti c Data Using the EAV/CR Representation</article-title>
          .
          <source>In JAMIA, 6</source>
          , pages
          <fpage>478</fpage>
          {
          <fpage>493</fpage>
          ,
          <year>1999</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>B.</given-names>
            <surname>Pietsch</surname>
          </string-name>
          .
          <article-title>Entwurf einer Zugri sschicht fur funktionale Aspekte in DBMS</article-title>
          . Studienarbeit, Institut fur Informatik,
          <string-name>
            <surname>Friedrich-</surname>
          </string-name>
          Schiller-Universitat Jena, Mar.
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>A. B.</given-names>
            <surname>Rashid</surname>
          </string-name>
          and
          <string-name>
            <given-names>M.</given-names>
            <surname>Islam</surname>
          </string-name>
          .
          <article-title>Role of Materialized View Maintenance with PIVOT and UNPIVOT Operators</article-title>
          .
          <source>In Proceedings of the 1st IEEE International Advance Computing Conference (IACC</source>
          <year>2009</year>
          ), pages
          <fpage>915</fpage>
          {
          <fpage>955</fpage>
          ,
          <string-name>
            <surname>Mar</surname>
          </string-name>
          .
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>T.</given-names>
            <surname>Rizzo</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Machanic</surname>
          </string-name>
          , and
          <string-name>
            <given-names>J.</given-names>
            <surname>Skinner</surname>
          </string-name>
          .
          <source>Pro SQL Server</source>
          <year>2005</year>
          . Apress,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [19]
          <string-name>
            <given-names>T.</given-names>
            <surname>Schilling</surname>
          </string-name>
          .
          <article-title>Realisierungskonzepte fur die Aspektorientierte Datenhaltung</article-title>
          . Studienarbeit, Institut fur Informatik,
          <string-name>
            <surname>Friedrich-</surname>
          </string-name>
          Schiller-Universitat Jena, Apr.
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          [20]
          <string-name>
            <surname>C. M. Wyss</surname>
            and
            <given-names>E. L.</given-names>
          </string-name>
          <string-name>
            <surname>Robertson</surname>
          </string-name>
          .
          <article-title>A formal characterization of PIVOT/UNPIVOT</article-title>
          . In
          <source>Proceedings of the 14th ACM international conference on Information and knowledge management</source>
          , pages
          <volume>602</volume>
          {
          <fpage>608</fpage>
          ,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>