<!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>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Proceedings of the</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>th GI-Workshop Grundlagen von Datenbanken</string-name>
        </contrib>
      </contrib-group>
      <pub-date>
        <year>2015</year>
      </pub-date>
      <fpage>62</fpage>
      <lpage>103</lpage>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>c 2015 for the individual papers by the papers’ authors. Copying permitted for
private and academic purposes. Re-publication of material from this volume requires
permission by the copyright owners.</p>
      <p>Herausgeber:</p>
    </sec>
    <sec id="sec-2">
      <title>Liebe Teilnehmerinnen und Teilnehmer,</title>
      <p>bereits zum 27. Mal fand vom 26.05.2015 bis 29.05.2015 der Workshop
”Grundlagen von Datenbanken“ (GvDB) statt. Nachdem der Workshop im letzten Jahr in
Su¨dtirol zu Gast war, kehrte er in diesem Jahr wieder nach Deutschland zuru¨ck,
genauer nach Gommern in Sachsen-Anhalt, wo er bereits das zweite Mal nach 2001
stattfand.</p>
      <p>Der vierta¨gige Workshop wurde vom GI-Arbeitskreis Grundlagen von
Informationssystemen im Fachbereich Datenbanken und Informationssysteme (DBIS)
veranstaltet und hat die theoretischen, konzeptionellen und methodischen
Grundlagen von Datenbanken und Informationssystemen zum Thema, ist aber auch fu¨r
neue Anwendungsgebiete mit Datenmanagementbezug offen. Organisiert wurde
der Workshop durch die Arbeitsgruppe Datenbanken und Software Engineering
der Otto-von-Guericke-Universita¨t Magdeburg.</p>
      <p>Der Workshop soll die Kommunikation zwischen Wissenschaftlern/-innen im
deutschsprachigen Raum fo¨rdern, die sich grundlagenorientiert mit Datenbanken und
Informationssystemen bescha¨ftigen. Er ist insbesondere als Forum fu¨r
Nachwuchswissenschaftler/-innen gedacht, die ihre aktuellen Arbeiten in einem gro¨ßeren
Forum vorstellen wollen. Der Workshop fand im idyllischen ”Hotel am See“, dem
Robinien-Hof in Gommern, statt. Das Hotel befindet sich gleich gegenu¨ber der
letzten Wanderdu¨ne in Sachsen-Anhalt. Durch die ruhige Lage am ”Kulk“ bietet
der Tagungsort einen idealen Rahmen fu¨r offene und inspirierende Diskussionen zu</p>
    </sec>
    <sec id="sec-3">
      <title>Datenbanken und Informationssystemen.</title>
      <p>Aus den Einsendungen wurden 15 Arbeiten nach einem Review-Prozess ausgewa¨hlt
und vorgestellt. Die Themenvielfalt erstreckte sich dabei von Crowdsourcing fu¨r
Entity Resolution u¨ber klassischere Themen wie Datenkompression bis hinzu
Datenstromanagementsystemen. Die Beitra¨ge wurden durch drei Keynotes erga¨nzt.
Kai-Uwe Sattler, Professor an der TU Ilmenau, ging in seinem Vortrag
Optimierung von Datenflussprogrammen - ein Fall klassischer Anfrageoptimierung? auf
die Optimierung von Ausfu¨hrungspla¨nen zur Datenstromverarbeitung ein. Erhard
Rahm, Professor an der Uni Leipzig, pra¨sentierte in seinem Vortrag Scalable Graph
Analytics with GRADOOP die Potentiale von MapReduce-Frameworks wie Hadoop
fu¨r Graphanalysen. Außerdem beleuchtete Wolfgang Lehner von der TU Dresden in
seinem Vortrag Next-Generation Hardware for Data Management - More a Blessing
than a Curse? offene Fragen bei der Entwicklung hardware-sensitiver
Datenbanksysteme und gab einen Ausblick auf die Potentiale, die sich aus dem konsequentem</p>
    </sec>
    <sec id="sec-4">
      <title>HW/SW-Datenbank-CoDesign ergeben.</title>
      <p>Das ausgewogene Workshop-Programm wurde von zwei Ausflu¨gen abgerundet.
Zuna¨chst konnten die Teilnehmer bei einer Fu¨hrung durch den Gommeraner
Gesteinsgarten eine der gro¨ßten und umfassendsten Sammlungen von Natursteinen
aus Deutschland und Europa erkunden und bei der anschließenden
Waldwanderung die Ruhe der Natur genießen. Aber auch fu¨r die kulinarische Unterhaltung
war gesorgt. So stand neben einem Grillbu¨ffett zur Auffrischung der Kra¨fte nach
den Wanderungen der Besuch von Deutschlands einziger Gasthausbrauerei auf
einer u¨ber 1000 Jahre alten Burg an, natu¨rlich inklusive Verkostung.
An dieser Stelle danke ich allen Beteiligten fu¨r die erfolgreiche Durchfu¨hrung des
GvDB 2015: den Autoren, dem Programmkomittee und den Mitarbeitern des
Tagungsghotels. Besonderer Dank gilt allen Mitgleidern des Organisations-Komittee
ohne deren Hilfe die Durchfu¨hrung des GvDB 2015 nicht mo¨glich gewesen wa¨re:
David Broneske, Sebastian Dorok, Andreas Meister, Siba Mohammad und Veit</p>
    </sec>
    <sec id="sec-5">
      <title>Ko¨ppen. Vielen Dank!</title>
    </sec>
    <sec id="sec-6">
      <title>Gunter Saake Magdeburg am 26.05.2015 4</title>
      <sec id="sec-6-1">
        <title>Organisationskomittee</title>
      </sec>
    </sec>
    <sec id="sec-7">
      <title>David Broneske</title>
    </sec>
    <sec id="sec-8">
      <title>Sebastian Dorok</title>
    </sec>
    <sec id="sec-9">
      <title>Andreas Meister</title>
    </sec>
    <sec id="sec-10">
      <title>Siba Mohammad</title>
    </sec>
    <sec id="sec-11">
      <title>Veit Ko¨ppen</title>
    </sec>
    <sec id="sec-12">
      <title>Gunter Saake</title>
      <sec id="sec-12-1">
        <title>Programm-Komittee</title>
      </sec>
    </sec>
    <sec id="sec-13">
      <title>Stefan Brass</title>
    </sec>
    <sec id="sec-14">
      <title>Erik Buchmann</title>
    </sec>
    <sec id="sec-15">
      <title>Stefan Conrad</title>
    </sec>
    <sec id="sec-16">
      <title>Rainer Gemulla</title>
    </sec>
    <sec id="sec-17">
      <title>Friederike Klan</title>
    </sec>
    <sec id="sec-18">
      <title>Holger Meyer</title>
    </sec>
    <sec id="sec-19">
      <title>Klaus Meyer-Wegener</title>
    </sec>
    <sec id="sec-20">
      <title>Gunter Saake</title>
    </sec>
    <sec id="sec-21">
      <title>Kai-Uwe Sattler</title>
    </sec>
    <sec id="sec-22">
      <title>Eike Schallehn</title>
    </sec>
    <sec id="sec-23">
      <title>Ingo Schmitt</title>
    </sec>
    <sec id="sec-24">
      <title>Holger Schwarz</title>
    </sec>
    <sec id="sec-25">
      <title>Gu¨nther Specht</title>
    </sec>
    <sec id="sec-26">
      <title>Jens Teubner</title>
    </sec>
    <sec id="sec-27">
      <title>Universita¨t Halle</title>
    </sec>
    <sec id="sec-28">
      <title>Universita¨t Karlsruhe</title>
    </sec>
    <sec id="sec-29">
      <title>Universita¨t Du¨sseldorf</title>
    </sec>
    <sec id="sec-30">
      <title>Universita¨t Mannheim</title>
    </sec>
    <sec id="sec-31">
      <title>Friedrich-Schiller Universita¨t Jena</title>
    </sec>
    <sec id="sec-32">
      <title>Universita¨t Rostock</title>
    </sec>
    <sec id="sec-33">
      <title>Universita¨t Erlangen</title>
    </sec>
    <sec id="sec-34">
      <title>Universita¨t Magdeburg</title>
    </sec>
    <sec id="sec-35">
      <title>TU Ilmenau</title>
    </sec>
    <sec id="sec-36">
      <title>Universita¨t Magdeburg</title>
    </sec>
    <sec id="sec-37">
      <title>TU Cottbus</title>
    </sec>
    <sec id="sec-38">
      <title>Universita¨t Stuttgart</title>
    </sec>
    <sec id="sec-39">
      <title>Universita¨t Innsbruck</title>
    </sec>
    <sec id="sec-40">
      <title>TU Dortmund 5</title>
      <p>Inhaltsverzeichnis</p>
      <sec id="sec-40-1">
        <title>Key Notes:</title>
        <p>Optimierung von Datenflussprogrammen - ein Fall klassischer
Anfrageoptimierung?</p>
        <p>Kai-Uwe Sattler
Scalable graph analytics with GRADOOP</p>
        <p>Erhard Rahm
Next-Generation Hardware for Data Management – more a
Blessing than a Curse?</p>
        <p>Wolfgang Lehner</p>
      </sec>
      <sec id="sec-40-2">
        <title>Workshopbeitr¨age:</title>
        <p>Ontologie-basierte Fragmentierungs- und Replikationsverfahren fu¨r
verteilte Datenbanksysteme</p>
        <p>Lena Wiese
Automated Silhouette Extraction for Mountain Recognition</p>
        <p>Daniel Braun, Michael Singhof
Slicing in Assistenzsystemen - Wie trotz Anonymisierung von
Daten wertvolle Analyseergebnisse gewonnen werden ko¨nnen
Hannes Grunert, Andreas Heuer
Towards Visualization Recommendation – A Semi- Automated
Domain-Specific Learning Approach</p>
        <p>Pawandeep Kaur, Michael Owonibi, Birgitta Koenig-Ries
Transparente Datenbankunterstu¨tzung fu¨r Analysen auf Big Data
Dennis Marten, Andreas Heuer
9
9
10
11
12
12
18
24
30
36
Ausfu¨hrungspl¨ane und -planoperatoren relationaler
Datenbankmanagementsysteme</p>
        <p>Christoph Koch, Katharina Bu¨chse
Modularisierung leichtgewichtiger Kompressionsalgorithmen</p>
        <p>Juliana Hildebrandt, Dirk Habich, Patrick Damme, Wolfgang Lehner
Annotation und Management heterogener medizinischer
Studienformulare</p>
        <p>Victor Christen
Merkle Hash Tree based Techniques for Data Integrity of
Outsourced Data</p>
        <p>Muhammad Saqib Niaz, Gunter Saake
Crowdsourcing Entity Resolution: a Short Overview and Open
Issues</p>
        <p>Xiao Chen
Toward GPU Accelerated Data Stream Processing</p>
        <p>Marcus Pinnecke, David Broneske, Gunter Saake
Where- und Why-Provenance fu¨r syntaktisch reiches SQL durch
Kombination von Programmanalysetechniken</p>
        <p>Tobias Mu¨ller
Large-scale Analysis of Event Data</p>
        <p>Stefan Hagedorn, Kai-Uwe Sattler, Michael Gertz
Flexible Online-Recommender-Systeme durch die Integration in
ein Datenstrommanagementsystem</p>
        <p>Cornelius A. Ludmann, Marco Grawunder, Hans-Ju¨rgen Appelrath</p>
      </sec>
      <sec id="sec-40-3">
        <title>Extended Abstracts:</title>
        <p>Das PArADISE-Projekt - Big-Data-Analysen fu¨r die Entwicklung
von Assistenzsystemen
Andreas Heuer, Holger Meyer
54
60
66
72
78
84
90
96
102
102
Optimierung von Datenflussprogrammen - ein Fall
klassischer Anfrageoptimierung?</p>
        <p>[Abstract]</p>
        <p>Kai-Uwe Sattler
Technische Universität Ilmenau</p>
        <p>Helmholtzplatz 5</p>
        <p>Ilmenau, Germany
kus@tu-ilmenau.de
Datenflusssprachen haben in den vergangenen Jahren speziell
im Kontext von Big-Data-Plattformen - etwa in Form von
Pig oder Jaql - große Aufmerksamkeit gewonnen. Sie bieten
sich jedoch auch fu¨r die Verarbeitung und Analyse
dynamischer Daten bzw. Datenstro¨me an. A¨ hnlich wie bei
klassischen Anfragesprachen besteht bei Datenflusssprachen die
Aufgabe, aus (mehr oder weniger) deklarativen
Spezifikationen effiziente Ausfu¨hrungspla¨ne abzuleiten. Der Vortrag
behandelt die Herausforderungen derartiger Optimierungen,
geht auf Besonderheiten im Vergleich zur klassischen
Anfrageoptimierung ein und diskutiert anhand von Beispielen
aus den Bereichen Datenstromverarbeitung und MapReduce
konkrete Problemstellungen.</p>
        <p>About the Author
Kai-Uwe Sattler ist Professor fu¨r Datenbanken und
Informationssysteme an der TU Ilmenau. Zu seinen
Arbeitsgebieten za¨hlen Datenbanksystemaspekte,
Datenbankintegration sowie Anfrageverarbeitung fu¨r, heterogenen, massiv
verteilte und dynamische Datenbesta¨nde. Er ist Koautor
mehrerer Lehrbu¨cher, u.a. zu verschiedenen
Datenbankkonzepten wie Grundlagen, Implementierungstechniken, Data
Warehousing und Cloud Data Management sowie zu
Algorithmen und Datenstrukturen.
Scalable graph analytics with GRADOOP
Many Big Data applications in business and science require
the management and analysis of huge amounts of graph
data. Previous approaches for graph analytics such as graph
databases and parallel graph processing systems (e.g., Pregel)
either lack sufficient scalability or flexibility and
expressiveness. We are therefore developing a new end-to-end
approach for graph data management and analysis at the Big
Data center of excellence ScaDS Dresden/Leipzig. The
system is called Gradoop (Graph analytics on Hadoop). Gradoop
is designed around the so-called Extended Property Graph
Data Model (EPGM) which supports semantically rich,
schemafree graph data within many distinct graphs. A set of
highlevel operators is provided for analyzing both single graphs
and sets of graphs. The operators are usable within a
domainspecific language to define and run data integration
workflows (for integrating heterogeneous source data into the
Gradoop graph store) as well as analysis workflows. The
Gradoop data store is currently utilizing HBase for distributed
storage of graph data in Hadoop clusters. An initial version
of Gradoop is operational and has been used for analyzing
graph data for business intelligence and social network
analysis.
27th GI-Workshop on Foundations of Databases (Grundlagen von
Datenbanken), 26.05.2015 - 29.05.2015, Magdeburg, Germany.</p>
        <p>Copyright is held by the author/owner(s).</p>
        <p>About the Author
Erhard Rahm is full professor for databases at the
computer science institute of the University of Leipzig. His
current research focusses on Big Data and data
integration. He has authored several books and more than 200
peer-reviewed journal and conference publications. His
research on data integration and schema matching has been
awarded several times, in particular with the renowned
10year best-paper award of the conference series VLDB (Very
Large Databases) and the Influential Paper Award of the
conference series ICDE (Int. conf. on Data Engineering).</p>
        <p>Prof. Rahm is one of the two scientific coordinators of the
new German center of excellence on Big Data ScaDS
(competence center for SCAlable Data services and Solutions)
Dresden/Leipzig that started its operation in Oct. 2014.</p>
        <p>Next-Generation Hardware for Data Management - more a
Blessing than a Curse?
Recent hardware developments have touched almost all
components of a computing system: the existence of many and
potentially heterogeneous cores, the availability of volatile
and non-volatile main memories with an ever growing
capacity, and the emergence of economically affordable,
highspeed/low-latency interconnects are only a few prominent
examples. Every single development as well as their
combination has a massive impact on the design of modern
computing systems. However, it is still an open question, if, how,
and at which level of detail, a database system has to
explicitly be aware of those developments and exploit them using
specifically designed algorithms and data structures. Within
the talk I will try to give an answer to this question and
argue for a clear roadmap of HW/SW-DB-CoDesign especially
providing an outlook to upcoming technologies and
discussion of their non-functional properties like energy-efficiency
and resilience behavior.</p>
        <p>About the Author
Wolfgang Lehner is full professor and head of the database
technology group at the TU Dresden, Germany. His
research is dedicated to database system architecture
specifically looking at crosscutting aspects from algorithms down
to hardware-related aspects in main-memory centric
settings. He is part of TU Dresden’s excellence cluster with
research topics in energy-aware scheduling, resilient data
structures on unreliable hardware, and orchestration of wildly
heterogeneous systems; he is also a principal investigator of
Germany’s national ”Competence Center for Scalable Data
Services and Solutions” (ScaDS); Wolfgang also maintains
a close research relationship with the SAP HANA
development team. He serves the community in many PCs, is an
elected member of the VLDB Endowment, serves on the
review board of the German Research Foundation (DFG), and
is an appointed member of the Academy of Europe.
27th GI-Workshop on Foundations of Databases (Grundlagen von
Datenbanken), 26.05.2015 - 29.05.2015, Magdeburg, Germany.</p>
        <p>Copyright is held by the author/owner(s).</p>
        <p>Ontologie-basierte Fragmentierungs- und
Replikationsverfahren für verteilte Datenbanksysteme</p>
        <p>Lena Wiese
Forschungsgruppe Knowledge Engineering</p>
        <p>Institut für Informatik
Georg-August-Universität Göttingen
wiese@cs.uni-goettingen.de
Das Auffinden von semantisch verwandten Daten in großen
Datenmengen ist aufwa¨ndig und daher zur Laufzeit einer
Anfrage nur schwierig durchzufu¨hren. In diesem Artikel
stellen wir ein Verfahren vor, dass Datentabellen anhand einer
Ontologie in semantisch zusammenha¨ngende Cluster
aufteilt. Dadurch ergibt sich eine Ontologie-basierte
Fragmentierung der Tabelle, die eine flexible Anfragebeantwortung
unterstu¨tzt. Bei mehreren derartigen Fragmentierungen
u¨berschneiden sich Fragmente; dies wird fu¨r ein intelligentes
Replikationsverfahren ausgenutzt, um die Anzahl der
Replikaserver zu reduzieren.</p>
        <p>Keywords
Verteiltes Datenbanksystem, Replikation, Ontologie,
Fragmentierung, flexible Anfragebeantwortung</p>
        <p>EINLEITUNG</p>
        <p>Die Verwaltung von großen Datenmengen in Datenbanken
erfordert die Verteilung der Daten auf mehrere
DatenbankServer. Dies bietet mehrere Vorteile:
• Lastverteilung: Datenbankanfragen ko¨nnen auf
mehre</p>
        <p>re Server verteilt und damit parallelisiert werden.
• Verfu¨gbarkeit: Durch die Lastverteilung erho¨ht sich die</p>
        <p>Verfu¨gbarkeit des Gesamtsystems, da einzelne
Anfragen seltener verzo¨gert werden mu¨ssen.</p>
        <p>Ein geeignetes Verfahren zur Fragmentierung (auch:
Partitionierung oder Sharding) der Daten in Teilmengen ist
daher notwendig. Die ga¨ngigen Fragmentierungsverfahren
(Round-Robin, Hash-basiert, Intervall-basiert) ignorieren
jedoch semantische Zusammenha¨nge der Daten.</p>
        <p>Aus Gru¨nden der Ausfallsicherheit ist zusa¨tzlich noch die
Replikation von Daten (also die Spiegelung desselben
Datensatzes auf mehreren Servern) erforderlich. Dies gilt
insbesondere fu¨r Hauptspeicherdatenbanken, die nicht u¨ber einen
Hintergrundspeicher verfu¨gen. In dieser Arbeit stellen wir</p>
        <p>Verfahren zur Ontologie-basierten Fragmentierung und zur
intelligenten Replikation vor, womit folgende Eigenschaften
sichergestellt werden:
• durch die Fragmentierung wird ein Verfahren der
flexiblen Anfragebeantwortung unterstu¨tzt, die dem
Anfrager auch relevante verwandte Werte als Antworten
zuru¨ckliefert.
• durch die Fragmentierung wird eine Lastverteilung auf</p>
        <p>mehrere Server mo¨glich.
• durch die Fragmentierung wird die Anzahl der
kontaktierten Server pro Anfrage reduziert und damit eine
bessere Parallelisierung mo¨glich.
• durch die intelligente Replikation wird die Anzahl der</p>
        <p>beno¨tigten Replikaserver reduziert.</p>
        <p>Abschnitt 2 beschreibt den Hintergrund zu flexibler
Anfragebeantwortung, Fragmentierung und Datenverteilung.
Abschnitt 3 stellt die Ontologie-basierte Fragmentierung
inklusive Clustering, Fragmentverteilung und
Anfragebeantwortung vor. Abschnitt 4 beschreibt darauf aufbauend ein
Replikationsverfahren mit u¨berlappenden Fragmenten. Ein
Wiederherstellungsverfahren anhand des Replikationsverfahrens
wird in Abschnitt 5 dargestellt. Es folgt ein Verfahren fu¨r
abgeleitete Fragmentierungen in Abschnitt 6 und
abschließend eine Zusammenfassung in Abschnitt 7.</p>
        <p>HINTERGRUND</p>
        <p>Wir stellen hier kurz Vorarbeiten zu flexibler
Anfragebeantwortung, Fragmentierung und Datenverteilung vor.</p>
        <p>Diese Operatoren ko¨nnen auch kombiniert werden [IW11].</p>
        <p>Diese syntaktischen A¨ nderungen ko¨nnen aber zu weit
gehen und zu viele Antworten produzieren – insbesondere beim
Ersetzen von Konstanten durch neue Variablen in der
AntiInstantiation. Daher ist es wichtig, dass die Werte, die der
neuen Variable zugewiesen werden ko¨nnen, beschra¨nkt
werden: es sollen nur semantisch a¨quivalente oder semantisch
nah verwandte Werte zugelassen werden. Diese semantische
A¨ hnlichkeit kann anhand einer Ontologie oder Taxonomie
von Werten bestimmt werden. Fu¨r Einzelrechner wurden
bereits vor einiger Zeit Verfahren vorgeschlagen – ohne
jedoch verteilte Datenspeicherung mit einzubeziehen. CoBase
[CYC+96] und [SHL07] zum Beispiel benutzten sogenannte
Abstraktionshierarchien, um einzelne Werte zu
generalisieren. Auch fu¨r XML-Anfragen wurden Verfahren entwickelt
[HTGC10].</p>
        <p>Ein grundlegendes Problem ist dabei jedoch, dass die
Bestimmung von a¨hnlichen Werten zur Laufzeit (wa¨hrend der
Anfragebeantwortung) viel zu ineffizient ist [BDIW14].
Dieses Problem wird durch das hier vorgestellte
Fragmentierungsverfahren gelo¨st.
2.2</p>
        <p>Fragmentierung</p>
        <p>Im relationalen Modell gibt es die Theorie der
Datenfragmentierung, die sich aufgrund des strikten Tabellenformats
aufteilen la¨sst in horizontale und vertikale Fragmentierung
(siehe zum Beispiel [ O¨V11]):
• Vertikale Fragmentierung: Fragmente entsprechen
Teilmengen von Attributen (also Tabellenspalten). Die
Eintra¨ge in den Fragmenten, die zur selben Tabellenzeile
geho¨ren, mu¨ssen durch einen Tuple-Identifikator
verbunden werden. Vertikale Fragmentierung entspricht
einer Projektion auf der Tabelle.
• Horizontale Fragmentierung: Fragmente sind
Teilmengen von Tupeln (also Tabellenzeilen). Eine horizontale
Fragmentierung entspricht einer Selektion auf der
Tabelle.
• Abgeleitete Fragmentierung: Eine bereits bestehende
”prima¨re“ horizontale Fragmenation of einer Tabelle
induziert eine horizontale Fragmentierung einer
weiteren Tabelle; dazu wird der Semi-JOIN auf beiden</p>
        <p>Tabellen ausgefu¨hrt.</p>
        <p>Drei grundlegende Eigenschaften sind wichtig fu¨r
Fragmentierungen:
• Vollsta¨ndigkeit: Keine Daten du¨rfen wa¨hrend der
Fragmentierung verloren gehen. Bei vertikaler
Fragmentierung ist jede Spalte in einem Fragment enthalten; bei
horizontaler Fragmentierung ist jede Zeile in einem</p>
        <p>Fragment enthalten.
• Rekonstruierbarkeit: Daten aus den Fragmenten
ko¨nnen wieder zur Originaltabelle zusammengefu¨gt
werden. Bei vertikaler Fragmentierung wird der
JOINOperator benutzt (basierend auf einem zusa¨tzlich
eingefu¨gten Tupel-Identifikator), um die Spalten zu
verbinden. Bei horizontaler Fragmentierung wird der
Vereinigungsoperator zum Zusammenfu¨hren der
Fragmente verwendet.
• Redundanzfreiheit: Um Duplizieren von Daten zu
vermeiden, sollen einzelne Datensa¨tze nur einem
Fragment zugewiesen werden. Bei vertikaler
Fragmentierung ist jede Spalte nur in einem Fragment enthalten
(abgesehen vom Tupel-Identifikator). Bei horizontaler
Fragmentierung ist jede Zeile in nur einem Fragment
enthalten.</p>
        <p>In anderen, nicht-relationalen Datenmodellen
(Schlu¨sselWert-Speicher, Dokumentdatenbanken oder
Spaltenfamiliendatenbanken) gibt es Fragmentierung meist u¨ber den
Zugriffsschlu¨ssel entweder Hash-basiert [KLL+97] oder
basierend auf Intervallen. Jedoch unterstu¨tzt keines dieser
Verfahren die flexible Anfragebeantwortung; im Gegensatz dazu
hat das im Folgenden vorgestellte Fragmentierungsverfahren
den Vorteil, dass eine relaxierte Bedingung aus nur einem
Fragment beantwortet werden kann.
2.3</p>
        <p>Datenverteilung</p>
        <p>In einem verteilten Datenbanksystem mu¨ssen Daten auf
die verschiedenen Server verteilt werden. Wichtige
Eigenschaften sind
• Datenlokalita¨t: Daten, auf die innerhalb einer
Anfrage oder Transaktion zugegriffen wird, sollten mo¨glichst
auf einem Server sein. Dadurch verringert sich die
Anzahl der kontaktierten Server und somit auch die Dauer
der Anfragebeantwortung. Außerdem kann so die
Parallelisierung der Anfragebeantwortung verbessert
werden, da die anderen Server neue Anfragen annehmen
ko¨nnen.
• Lastverteilung: Daten sollen so verteilt werden, dass
parallele Anfragen mo¨glichst auch von verschiedenen
Servern beantwortet werden ko¨nnen, damit nicht
einzelne Server unter Lastspitzen (”hot spots“) leiden.</p>
        <p>Einige Arbeiten befassen sich mit horizontaler
Fragmentierung und Verteilung; jedoch unterstu¨tzen diese nur exakte
Anfragebeantwortung und keine flexible
Anfragebeantwortung wie in unserem Ansatz. Die meisten Ansa¨tze gehen von
einer vorgebenen Menge von Anfragen oder Transaktionen
aus (”workload“) und optimieren die Lokalita¨t der Daten, die
innerhalb der Anfrage beziehungsweise Transaktion beno¨tigt
werden. Dies ist fu¨r die Anwendung der flexiblen
Anfragebeantwortung jedoch nicht anwendbar, da hier auch Werte
zuru¨ckgegeben werden, die nicht explizit in einer Anfrage
auftauchen.</p>
        <p>[CZJM10] stellen Tupel als Knoten eines Graphen dar.</p>
        <p>Fu¨r eine vorgegebene Menge von Transaktionen fu¨gen sie
Hyperkanten in den Graph ein, wenn die Tupel in
derselben Transaktion beno¨tigt werden. Mit einem
Graphpartitionierungsalgorithmus wird dann eine Datenfragmentierung
ermittelt, die Zahl der zerschnittenen Kanten minimiert.</p>
        <p>In einer zweiten Phase benutzen die Autoren einen
Klassifizierer aus dem Maschinellen Lernen, der eine
Intervallbasierte Fragmentierung herleitet. Experimentell vergleichen
sie dann das Graph-basierten mit Intervall-basierten und
Hash-basierten Verfahren. Im Gegensatz zu unserem Ansatz
wenden sie jedoch volle Replikation an, bei der alle Server
alle Daten vorhalten; dies ist wenig realistisch in großen
verteilten Systemen. Zudem vergleichen sie drei verschiedene
Arten von Lookup-Tabellen, die Tupel-Identifikatoren fu¨r
jedes Fragment abspeichern: Indexe, Bitarrays und
Bloomfilter. Bei der Analyse unseres Systems stellt sich jedoch
heraus, dass Lookup-Tabellen ineffizienter sind als das
Einfu¨hren einer zusa¨tzlichen Spalte mit der Cluster-ID in anderen
Fragmentierungen.</p>
        <p>Auch [QKD13] modellieren das Fragmentierungsproblem
durch Minimierung zerschnittener Hyperkanten in einem
Graphen. Zur Verbesserung der Effizienz komprimieren sie den
Graphen und erhalten so Gruppen von Tupeln. Die Autoren
kritisieren dabei auch den tupelweisen Ansatz von [CZJM10]
als unpraktisch fu¨r große Tupelmengen. Die Autoren
vergleichen ihren Ansatz mit zufa¨lligen und tupelweisen
Fragmentierungen und betrachten auch A¨ nderungen der
vorgegebenen Transaktionen.</p>
        <p>[TCJM12] gehen von drei existierenden Fragmentierungen
aus: Hash-basiert, Intervall-basiert und Lookup-Tabellen auf
einzelnen Zugriffsschlu¨sseln. Sie vergleichen diese drei
bezu¨glich Kommunikationskosten und Anfragendurchsatz. Zur
Effiziensteigerung analysieren sie diverse
Komprimierungstechniken. Sie beschreiben Hash-basierte Fragmentierung als
zu ineffizient. Die Autoren beschreiben jedoch nicht, wie die
Fragmentierungen fu¨r die Lookup-Tabellen berechnet
werden; im Gegensatz dazu stellen wir ein Ontologie-basiertes
Fragmentierungsverfahren vor.</p>
        <p>Im Gegensatz zu den meisten anderen Ansa¨tzen gehen
wir nicht von einer vorgegebenen Menge von Anfragen oder
Transaktionen aus sondern schlagen ein allgemein
anwendbares Clusteringverfahren vor, dass die flexible
Anfragebeantwortung zum Auffinden semantisch a¨hnlicher Antworten
ermo¨glicht. Unsere Ergebnisse zeigen, dass Lookup-Tabellen
(selbst wenn sie auf allen Servern repliziert werden) fu¨r
unseren Ansatz zu ineffizient sind, dadurch dass viele
JOINOperationen durchgefu¨hrt werden mu¨ssen.</p>
        <p>Unser Verfahren der Ontologie-basierten Fragmentierung
beruht darauf, dass
• zur Anti-Instantiierung ein Attribut (also eine
Tabel</p>
        <p>lenspalte) ausgewa¨hlt wird.
• ein Clusteringverfahren auf dieser Tabellenspalte
ausgefu¨hrt wird, um die a¨hnlichen Werte innerhalb dieser</p>
        <p>Spalte zu gruppieren.
• anhand der Cluster die Tabelle zeilenweise
fragmen</p>
        <p>tiert wird.</p>
        <p>Wie in Abbildung 1 dargestellt werden dann die
Anfragen so weitergeleitet, dass zu einer Konstante aus der
Originalanfrage das semantisch a¨hnlichste Fragment ermittelt
wird und anschließend alle Werte des Fragments als
relevante Antworten zuru¨ckgeliefert werden. Daher werden zum
Beispiel bei einer Anfrage nach Husten auch die a¨hnlichen
Werte Asthma und Bronchitis gefunden.
3.1</p>
        <p>Clustering</p>
        <p>Zu dem zur Anti-Instantiierung ausgewa¨hlten Attribut A
in der gegebenen Tabelle F werden alle in der Tabelle
vorhandenen Werte (die sogenannte aktive Doma¨ne) ausgelesen
durch Projektion πA(F ). Anhand einer gegebenen Ontologie
werden A¨ hnlichkeitswerte sim zwischen jeweils zwei Termen
a, b ∈ πA(F ) bestimmt im Wertebereich 0 (keine A¨
hnlichkeit) bis 1 (volle A¨ hnlichkeit). Dazu gibt es verschiedene
Metriken, die meist auf der Berechnung von Pfaden zwischen
den Termen in der Ontologie beruhen [Wie14, Wie13].
user
query rewrite &amp;
redirect</p>
        <p>Fragment 1:
cough,
bronchitis,
asthma
Fragment 2:
brokenLeg,
brokenArm
cluster &amp;
fragment</p>
        <p>Ein Clustering-Verfahren benutzt diese A¨ hnlichkeitswerte
um Cluster zu bestimmen (in Anlehnung an [Gon85]).
Dazu wird in jedem Cluster ein prototypisches Element head
bestimmt, das das jeweilige Cluster repra¨sentiert.
Zusa¨tzlich gibt es einen Schwellenwert α und das Verfahren
unterteilt Cluster solange in Teilcluster, bis fu¨r jedes Element
innerhalb eines Clusters die A¨ hnlichkeit zu head
mindestens α ist. Das heißt, fu¨r jedes Cluster ci und head i ∈ ci
gilt fu¨r jeden anderen Wert a ∈ ci (mit a 6= head i), dass
sim(a, head i) ≥ α. Dieses Verfahren wird in Auflistung 1
dargestellt.</p>
        <p>Listing 1 Clustering procedure
Input: Set πA(F ) of values for attribute A, similarity
thres</p>
        <p>hold α
Output: A set of clusters c1, . . . , cf
1: Let c1 = πA(F )
2: Choose arbitrary head 1 ∈ c1
3: simmin = min{sim(a, head1) | a ∈ c1; a 6= head 1}
4: i = 1
5: while simmin &lt; α do
6: Choose head i+1 ∈ S1≤j≤i{b | b ∈ cj ; b 6= head j ;</p>
        <p>sim(b, headj ) = simmin }
7: ci+1 = {head i+1} ∪ S1≤j≤i{c | c ∈ cj; c 6= head j;</p>
        <p>sim(c, headj ) ≤ sim(c, headi+1)}
8: i = i + 1
9: simmin = min{sim(d, headj ) | d ∈ cj; d 6= head j ; 1 ≤</p>
        <p>j ≤ i}
10: end while</p>
        <p>Zum Beispiel kann eine Taxonomie wie in Abbildung 2
benutzt werden, um die Tabellenspalte aus Abbildung 1 zu
clustern.
3.2</p>
        <p>Fragmentierung</p>
        <p>Ein Clustering der aktiven Doma¨ne von A induziert
eine horizontale Fragmentierung der Tabelle F in Fragmente
Fi ⊆ F . Jede aktive Doma¨ne eines Fragments Fi entspricht
genau den Werten in einem Cluster: ci = πA(Fi). Die
grundlegenden Eigenschaften einer Fragmentierung
(Vollsta¨ndigkeit, Rekonstruierbarkeit, Redundanzfreiheit) sollen auch bei
einer Clustering-basierten Fragmentierung gelten. Auch das
Clustering muss vollsta¨ndig sein: bei einer aktiven Doma¨ne
πA(F ) muss dann fu¨r ein Clustering C = c1, . . . , cn gelten,
dass es die ganze aktive Doma¨ne umfasst und kein Wert
verloren geht: c1 ∪ . . . ∪ cn = πA(F ). Die Eigenschaften einer
Clustering-basierten Fragmentierung werden in Definition 1
zusammengefasst.</p>
        <p>Definition 1 (Clustering-bas. Fragmentierung).</p>
        <p>Fu¨r ein Attribut A einer Tabelle F (eine Menge von Tupeln
t) und ein Clustering C = {c1, . . . cn} der aktiven Doma¨ne
πA(F ) und fu¨r head i ∈ ci gibt es eine Menge von
Fragmenten {F1, . . . , Fn} (definiert u¨ber denselben Attributen wie F ),
so dass folgende Eigenschaften gelten:
• Horizontale Fragmentierung: fu¨r jedes Fragment Fi gilt</p>
        <p>Fi ⊆ F
• Clustering: fu¨r jedes Fi gibt es in Cluster ci ∈ C so</p>
        <p>dass ci = πA(Fi)
• Schwellenwert: fu¨r jedes a ∈ ci (wobei a 6= head i) gilt</p>
        <p>sim(a, head i) ≥ α
• Vollsta¨ndigkeit: fu¨r jedes Tupel t in F gibt es ein
Frag</p>
        <p>ment Fi, in dem t enthalten ist
• Rekonstruierbarkeit: F = F1 ∪ . . . ∪ Fn
• Redundanzfreiheit: fu¨r jedes i 6= j, Fi ∩ Fj = ∅ (oder</p>
        <p>auch ci ∩ cj = ∅)
3.3</p>
        <p>Fragmentverteilung</p>
        <p>In verteilten Datenbanken mu¨ssen Fragmente
verschiedenen Servern zugewiesen werden. Dieses
Fragmentverteilungsproblem kann als ein Bin-Packing-Problem dargestellt
werden:
• K Server entsprechen K Bins
• Jedes Bin hat maximale Kapazita¨t W
• n Fragmente entsprechen n Objekten
• Jedes Objekt/Fragment hat ein Gewicht (oder
Kapizi</p>
        <p>ta¨tsverbrauch) wi ≤ W
• alle Objekte mu¨ssen auf mo¨glichst wenig Bins verteilt
werden, wobei die Gewichtsgrenze W beachtet werden
muss.</p>
        <p>Dieses Bin-Packing-Problem kann auch als Problem der
ganzzahligen linearen Optimierung dargestellt werden:
s.t.
xik ∈ {0, 1} k = 1, . . . , K, i = 1, . . . , n
(1)
(2)
(3)
(4)
(5)</p>
        <p>Dabei entspricht xik einer Bina¨rvariable die dann wahr (1)
ist, wenn Fragment/Objekt i Server/Bin k zugewiesen wird;
und yk bedeutet, dass Server/Bin k belegt ist (also nicht
leer). Gleichung (1) fordert, dass die Anzahl der belegten
Server minimiert wird; Gleichung (2) erzwingt, dass jedes
Fragment einem Server zugewiesen wird; Gleichung (3)
bedeutet, dass die Kapazita¨tsgrenzen nicht u¨berschritten
werden; die letzten beiden Gleichungen stellen sicher, dass die
Variablen bina¨r sind.</p>
        <p>Zusa¨tzlich ko¨nnen noch die Eigenschaften der
Datenlokalita¨t und der Lastverteilung optimiert werden.
Datenverteilung mit einer guten Datenlokalita¨t platziert die Fragmente
zusammen auf einen Server, die ha¨ufig gemeinsam innerhalb
einer Datenbanktransaktion (oder auch innerhalb einer
Anfrage) benutzt werden. Lastverteilung sorgt dafu¨r, dass alle
Server ungefa¨hr dieselbe Anzahl von Anfragen beantworten
mu¨ssen.
3.4</p>
        <p>Metadaten</p>
        <p>Fu¨r die Durchfu¨hrung des Clustering, der
Fragmentverteilung und der Anfrageumschreibung und -umleitung werden
ein paar Metadaten beno¨tigt.</p>
        <p>Eine Tabelle root speichert einen Identifikator fu¨r jedes
Cluster (Spalte ID), den Namen des Fragments (Name), den
Repra¨sentaten des Clusters (Head), die Gro¨ße des Clusters
(S) sowie den Server (Host), auf dem das Fragment
gespeichert wird. Eine Beispieltabelle sieht dann so aus:</p>
        <p>ROOT ID Name Head S Host
101 Respiratory Flu 4 S1
107 Fracture brokenArm 2 S2</p>
        <p>Eine Tabelle similarities speichert die A¨ hnlichkeiten
aller Werte des betrachteten Attributes zu den jeweiligen head
Werten der Cluster.
3.5</p>
        <p>Anfragebeantwortung</p>
        <p>Fu¨r die flexible Anfragebeantwortung wird die Konstante
im entsprechenden Attribut A in der Anfrage anti-instantiiert
und die entstehende Anfrage dann aus dem semantisch
a¨hnlichsten Fragment beantwortet.</p>
        <p>Als Beispiel betrachten wir eine Anfrage nach Husten in
einer Tabelle ill mit Patienten IDs und Krankheiten:</p>
        <p>SELECT patientid, disease
FROM ill WHERE disease=’cough’</p>
        <p>U¨ ber die Tabelle similarities wird das Fragment Fi
ausgewa¨hlt, dessen head am a¨hnlichsten zu der anti-instantiierten
Konstante (im Beispiel cough) ist.</p>
        <p>SELECT TOP 1 root.name
FROM root, similarities
WHERE similarities.term=’cough’
AND similarities.head = root.head
ORDER BY similarities.sim DESC</p>
        <p>Der Name der Originaltabelle F wird durch den Namen
des Fragmentes Fi ersetzt und die gea¨nderte Anfrage an den
entsprechenden Server gesendet. Dadurch werden alle Werte
aus dem Fragment als relevante Antworten zuru¨ckgeliefert.</p>
        <p>Als Beispiel sei der Fragmentname Respiratory. Daher wird
die Anfrage gea¨ndert zu:</p>
        <p>SELECT patientid, disease FROM respiratory
und and den entsprechenden Server (hier S1) weitergeleitet.</p>
        <p>A¨ hnliches gilt beim Einfu¨gen neuer Zeilen:</p>
        <p>INSERT INTO ill VALUES (349, ’asthma’)
wird umgeschrieben zu:</p>
        <p>INSERT INTO respiratory VALUES (349, ’asthma’).</p>
        <p>Auch das Lo¨schen von Werten wird so umgesetzt:</p>
        <p>DELETE FROM ill WHERE disease=’cough’
wird zu:</p>
        <p>DELETE FROM respiratory WHERE mesh=’cough’
4. INTELLIGENTE REPLIKATION
(6)
(7)
(8)
(9)
(10)
(BPPC):</p>
        <p>WIEDERHERSTELLUNG</p>
        <p>Passend zum Replikationsverfahren mu¨ssen im Falle
eines Serverausfalls einige Fragmente wiederhergestellt
werden. Dazu werden der Originaltabelle Spalten fu¨r die
jeweiligen Cluster-Identifikatoren hinzugefu¨gt. Anhand der IDs
ko¨nnen die entsprechenden Fragmente rekonstruiert werden:</p>
        <p>INSERT INTO ci SELECT * FROM rj WHERE clusterid=i</p>
        <p>Alternativ ist die Erstellung einer sogenannten
LookupTabelle [TCJM12] mo¨glich, die zu jeder Cluster-ID die
beteiligten Tupelidentifikatoren abspeichert. Diese beno¨tigt
jedoch einen JOIN-Operator:</p>
        <p>INSERT INTO ci SELECT * FROM ill JOIN lookup
ON (lookup.tupleid= rj.tupleid)</p>
        <p>WHERE lookup.clusterid=i
Die Lookup-Tabelle hat sich daher als ineffizienter
herausgestellt.
6. DATENLOKALITÄT FÜR
ABGELEITE</p>
        <p>TE FRAGMENTIERUNGEN</p>
        <p>Wenn auf mehrere Tabellen innerhalb einer Anfrage
zugegriffen wird und diese Tabellen Join-Attribute gemeinsam
haben, kann durch abgeleitete Fragmentierung die
Datenlokalita¨t fu¨r die Anfragen erho¨ht werden. Zum Beispiel sei
zusa¨tzlich zur Tabelle ill eine Tabelle info gegeben, die zu jeder
Patienten-ID Adressangaben entha¨lt. Eine mo¨gliche
Anfrage wa¨re daher, die Angaben zu Krankheiten und Adressen
zu kombinieren:</p>
        <p>SELECT a.disease, a.patientid, b.address
FROM ill AS a,info AS b WHERE disease=’cough’
AND b.patientid= a.patientid</p>
        <p>Anhand der vorgegebenen prima¨ren Fragmentierung der
Tabelle ill wird dann auch die Tabelle info fragmentiert,
zum Beispiel fu¨r das Fragment Respiratory:
INSERT INTO inforesp
SELECT a.patientid, b.address
FROM respiratory AS a, info AS b
WHERE b.patientid = a.patientid</p>
        <p>Daher kann dann im Folgenden auch die Anfrage, die
Angaben zu Krankheiten und Adressen kombiniert,
entsprechend umgeschrieben werden:</p>
        <p>SELECT a.disease, a.patientid, b.address
FROM respiratory AS a</p>
        <p>JOIN inforesp AS b ON (a.patientid=b.patientid)</p>
        <p>ZUSAMMENFASSUNG UND AUSBLICK</p>
        <p>Flexible Anfragebeantwortung unterstu¨tzt Benutzer bei
der Suche nach relevanten Informationen. In unserem
Verfahren wird auf eine Ontologie zuru¨ckgegriffen aufgrund
derer semantisch a¨hnliche Werte in einem Cluster
zusammengefasst werden ko¨nnen. Eine Fragmentierung der
Originaltabelle anhand der Cluster ermo¨glichst ein effizientes
Laufzeitverhalten der flexiblen Anfragebeantwortung. Durch
einige Metadaten (Root-Tabelle, Similarities-Tabelle,
zusa¨tzliche Spalte fu¨r Cluster-ID) werden alle typischen
Datenbankoperationen unterstu¨tzt.</p>
        <p>Zuku¨nftig soll insbesondere das dynamische Anpassen der
Fragmente untersucht werden: da sich durch Einfu¨gungen
und Lo¨schungen die Gro¨ßen der Fragmente stark a¨ndern
ko¨nnen, mu¨ssen zur Laufzeit Fragmente verschoben werden,
sowie gegebenenfalls zu kleine Fragmente in ein gro¨ßeres
vereinigt werden beziehungsweise zu große Fragmente in
kleinere aufgespalten werden.</p>
        <p>Automated Silhouette Extraction for Mountain Recognition</p>
        <p>Daniel Braun
Heinrich-Heine-Universität</p>
        <p>Institut für Informatik</p>
        <p>Universitätsstraße 1
40225 Düsseldorf, Deutschland
braun@cs.uni-duesseldorf.de
ABSTRACT
With the rise of digital photography and easy sharing of
images over the internet, a huge amount of images with no
notion of what they are showing exists. In order to overcome
this problem, we – for the example of mountain recognition –
introduce a method, that is able to automatically recognise
a mountain shown in a photography.</p>
        <p>Our method does not require GPS information stored in
the image, since most images are not GPS tagged, either
because of the absence of a GPS sensor in the device or
because it has been deactivated for a lesser power
consumption, which often is the case with smartphones. Instead, we
propose a method that is able to automatically extract the
mountain’s silhouette from a given image. This silhouette
is then cleaned by removing artefacts and outliers, such as
trees and clouds, with a histogram based approach. Finally,
the cleaned silhouette can be compared to reference data in
order to recognise the mountain that is shown in the
picture. For this, time series comparison techniques can be
used to find matching silhouettes. However, because of the
huge number of reference silhouettes to compare against, we
argue, that a preselection of those silhouettes is necessary
and point out approaches to this problem.</p>
        <p>Categories and Subject Descriptors
I.4.8 [IMAGE PROCESSING AND COMPUTER
VISION]: Scene Analysis—Object recognition; I.4.6 [IMAGE
PROCESSING AND COMPUTER VISION]:
Segmentation—Edge and feature detection; H.2.8 [DATABASE
MANAGEMENT]: Database Applications —Data
mining
Keywords
Object Recognition, Image Annotation, Outlier Detection,
Image Segmentation, Skyline Recognition, Mountain
Recognition, Time Series
27th GI-Workshop on Foundations of Databases (Grundlagen von
Datenbanken), 26.05.2015 - 29.05.2015, Magdeburg, Germany.</p>
        <p>Copyright is held by the author/owner(s).</p>
        <p>Michael Singhof
Heinrich-Heine-Universität</p>
        <p>Institut für Informatik</p>
        <p>Universitätsstraße 1
40225 Düsseldorf, Deutschland
singhof@cs.uni-duesseldorf.de
1. INTRODUCTION</p>
        <p>
          Sharing our experiences with digital images is a significant
part of our today’s life, which is partly a result of the high
availability of digital cameras, like in smartphones, and the
high use of social networks, that simplifies the publication
and sharing of images. As a consequence, the number of
images in the world wide web increases significantly. For
example, this can be seen on the image sharing platform
Instagram, where users share an average of 70 million new
photos per day [
          <xref ref-type="bibr" rid="ref1 ref11 ref35 ref46">1</xref>
          ].
        </p>
        <p>As a result of such high numbers of images, searching
photos which show specific objects is challenging, because
the majority of these images is not properly tagged with the
names of every object seen in them. So the need for efficient
algorithms for automatic object recognition rises. In the last
decades there were many advances in this research field, but
especially the automatic identification of landmarks, which
are subject to weather changes, areal erosion and vegetation,
is still a challenging task, even if the amount of images with
attached GPS data, which marks the geo-position of the
camera when the photo was shot, is rising.</p>
        <p>The growing spread of devices with the capability of
generating GPS tags for the images, like smartphones and
digital cameras with GPS units, enables many possibilities for
an subsequent geo-localisation of images, due to the fact
that GPS tags can significantly reduce the number of
possible sights, buildings or landmarks to compare with.
However, there exist too many images without the advantage
of GPS tags, so that an automatic geo-localisation without
prior knowledge of the camera position is still a valuable
aim.</p>
        <p>Our focus lies on the automatic landmark recognition,
which we will describe by using the example of mountain
recognition in images. To solve the question, which
mountain can be seen on an given image, we match the skyline
of the mountain in the image with silhouettes of mountains
in our database. For this purpose, we have to automatically
extract the exact skyline from the image, which is a
difficult task, because the segmentation of the image can lead
to artefacts, for instance due to weather conditions, noise,
obstacles or overexposure.</p>
        <p>In this paper we introduce a baseline segmentation
algorithm, which uses an outlier detection algorithm to identify
and eliminate these artefacts. The article is structured as
follows: In the next section we discuss other papers related
to our algorithm. We then introduce our algorithm, which
consists of the three steps silhouette extraction, silhouette
cleaning and silhouette matching. The section of the latter
one will be a perspective of how to use the cleaned silhouette
in further steps. The last chapter summarises this paper and
outlines future work.</p>
        <p>RELATED WORK</p>
        <p>The amount of publications for automated mountain
recognition increased significantly in the last two decades.</p>
        <p>
          Given a high number of publicly available digital elevation
maps (DEM), the consensus in many publications [
          <xref ref-type="bibr" rid="ref10 ref12 ref13 ref14 ref15 ref2 ref20 ref3 ref36 ref37 ref38 ref39 ref4 ref44 ref47 ref48 ref49 ref5 ref50">2, 3, 4, 5,
10</xref>
          ] is to use image-to-model matching for mountain
recognition and orientation identification.
        </p>
        <p>
          Many approaches, like [
          <xref ref-type="bibr" rid="ref10 ref13 ref14 ref20 ref3 ref37 ref38 ref4 ref44 ref48 ref49">3, 4, 10</xref>
          ], make use of known GPS
data for the image to align in the terrain. This reduces the
search space for possible mountain silhouettes significantly,
because the search of the correct mountains is limited in
checking the surrounding of the camera’s position.
        </p>
        <p>
          Baboud et al. [
          <xref ref-type="bibr" rid="ref13 ref3 ref37 ref48">3</xref>
          ] need an estimated field-of-view to
calculate the rotation which maps the image to the terrain.
        </p>
        <p>
          Therefore, the authors introduce a robust matching metric,
using extracted edges in combination with a search space
reduction to further reduce computation time. [
          <xref ref-type="bibr" rid="ref10 ref20 ref44">10</xref>
          ] uses a
standard Sobel-filter for the edge extraction. To identify the
edges which are part of the mountain’s contours, the authors
propose the use of the Random Ferns classifier. Afterwards
they match the emerged contour map with the contour map
extracted from the DEM. In [
          <xref ref-type="bibr" rid="ref14 ref38 ref4 ref49">4</xref>
          ] a 360-degree panorama of
the surroundings of the image location is synthesized out of
a given DEM and used for matching the skyline extracted
from the image. For that, they use a vector cross correlation
(VCC) technique to find the candidate matches. After
further refinement and recalculation of the VCC for each peak
they can label the peaks with a high precision.
        </p>
        <p>
          All three approaches show good results for their issue,
but the need for GPS data for the processed image does
not match our problem specifications, different from Baatz
et al. [
          <xref ref-type="bibr" rid="ref12 ref2 ref36 ref47">2</xref>
          ], in which the focus lies on images without GPS
tag. They use an approach based on a cost function for
the belonging of a pixel to the sky respectively foreground.
        </p>
        <p>
          They combine this approach with a relevance feedback-like
user interference, where the user can mark parts of the sky or
the foreground. This user intervention was needed for 49% of
the images in their dataset, which was collected during there
research. Thankfully, they published this dataset, so that
it will be used in this paper. After the contour extraction,
they match the coded contourlet with the contours extracted
from a DEM at several points on a predefined grid. At
last, when they find a suitable match, they recalculate the
geo-position of the camera. Naval et al. [
          <xref ref-type="bibr" rid="ref15 ref39 ref5 ref50">5</xref>
          ] also try to
find the camera position and orientation, using a DEM to
position the camera on the world. For this purpose they
match the extracted skyline from an image with a synthetic
skyline from a DEM. Different to both works we try to get
an automatically cleaned silhouette, thus removing obstacles
or other artefacts, out of the processed image.
        </p>
        <p>
          Tao et al. [
          <xref ref-type="bibr" rid="ref22">12</xref>
          ] focus on the identification of the sky seen
in an image and the search for images with a specific sky
appearance. Therefore they define different sky attributes,
like for example the sun position, which they extract
individually afterwards. At last they present their complete
system SkyFinder, in which an attribute based search is
implemented. On top of that, they provide a sky replacement
algorithm for changing the sky in an image. However, the
recognition of the skyline is not part of this system.
3. SILHOUETTE RECOGNITION
        </p>
        <p>The silhouette recognition process is basically a process in
three steps. The first step is the extraction of the silhouette
from a given picture. This silhouette is stored as a polygonal
chain. During the second step, this silhouette is cleaned by
identifying and removing outliers. The cleaned silhouette
is then used as the input to the third and final step, which
consists of matching the silhouette against the reference data
in order to be able to identify the structure in the picture.</p>
        <p>
          Extracting the silhouette is the first step in the mountain
identification process described in this paper. The task of
this step is the separation of the sky from the rest of the
processed image. We therefore have a binary segmentation
task to solve, in which we check every pixel p of an image and
decide if p shows a part of the sky or not. For a human this
would be easy to do in most cases, even though it would
be too much work and time to segment great numbers of
pictures manually. Because of that, we use a growing seed
algorithm, like the algorithm described in [
          <xref ref-type="bibr" rid="ref21 ref45">11</xref>
          ], for which we
use the fact, that in most cases the pixels at the upper bound
of the image are part of the sky. In the following section,
we will first describe some difficulties, which can make the
segmentation task more complex. After that, our baseline
segmentation algorithm will be further explained.
        </p>
        <p>The segmentation of an image generally suffers from
different problems, like under-/overexposure, which results in
a smaller difference between the pixel colours, or blur, which
can be, for example, a result of a lossy compression of the
image. In addition, our binary segmentation task has even
some own problems to deal with. The first difficulty is a
consequence of the motif itself, because the weather in
mountainous terrain is very volatile. This and the fact that, for
example in the alps, many mountain peaks are covered with
snow, can make the extraction of the mountain silhouette
out of an image imprecise. Furthermore differently coloured
bands of cloud can lead to an extracted silhouette which lies
in the sky and is therefore not part of the real skyline. The
second one is a result of possible obstacles, which hide the
real silhouette of the mountain or lead to smaller segments
within the sky segment.</p>
        <p>Even though we are aware of these problems, our naive
segmentation algorithm cannot handle all of them. For the
identification of artefacts as result of segmentation errors,
we use the second step of our chain, which is described in
section 3.2. Our segmentation algorithm uses the upper row
of pixels as seed for the sky segment. This means that we
mark the upper pixels as sky and process every neighbouring
pixel to let this segment grow. For this purpose we first
convert the processed photo to a gray-scale image G. Now
we can define VG as overall variance of the brightness values.</p>
        <p>Having VG, we now process every pixel p(x,y) which is not a
part of the sky segment and mark it as sky candidate, if for
p(x,y) it holds that</p>
        <p>√</p>
        <p>Bp(x,y) − meanrp(x,y) &lt; γ · VG
with Bp(x,y) the brightness of the pixel p(x,y), meanrp(x,y) as
the mean of the brightness in an neighbourhood of the pixel
with the radius of r and γ as a factor to scale the impact
of the standard derivation. This means that we mark a
pixel, if its distance to a local mean of brightness values
is smaller than a fixed percentage of the global standard
derivation of all brightness values. The idea behind this
term is, that the border between sky and ground has in
most cases a stronger contrast than the rest of the image,
especially the sky. Therefore, the distance to the mean will
be higher at the skyline as it will be at the border of possible
clouds. With the connection of the upper bound to the
standard derivation, we want to take into account the images
where the brightness is very homogenous, for example due
to overexposure, and therefore the contrast of the skyline
decreases.</p>
        <p>
          In our experience this naive assumption shows good
results for r = 5 and γ = 0.1 on most images out of the swiss
dataset published in [
          <xref ref-type="bibr" rid="ref12 ref2 ref36 ref47">2</xref>
          ]. In the future we will test more
complex algorithms, like for instance the skyline extraction
algorithm proposed in [
          <xref ref-type="bibr" rid="ref18 ref42 ref8">8</xref>
          ], with the expectation that they
will yield even better results. After we have marked all
posp
0
y
−1
0
1
x
p
0
        </p>
        <p>1
−1
1</p>
        <p>−1
sible candidates, we can finally let the sky segment grow. For
that, we check for every pixel p(x,y), if it is a 4-connected
neighbour, for explanation see the left side of figure 1, to a
pixel of the sky segment and marked as sky candidate (see
the previous step). If so, the pixel will get marked as sky.</p>
        <p>This step is repeated until no more pixels can be added to
the sky segment. At this point, we have a binary image,
which represents the skyline as transition between the sky
and the ground, like the one shown in figure 2.</p>
        <p>For the silhouette extraction, we search a silhouette S =
(v1, . . . , vn) where every vertex vi = (xi, yi) is a two
dimensional point where xi describes the x-coordinate and yi
describes the y-coordinate of that point in the picture. We
start at the upper left pixel p(0,0) and search for the first
nonsky pixel as start vertex v1 for our polygonal chain, which
lies on the left pixel column with x1 = 0. Now, we have
two possibilities: First, we can find no pixel, which results
in checking the next column until we find a pixel or we have
reached the lower right pixel of the image. Otherwise, if a
possible skyline pixel was found, the algorithm tracks the
transition between the sky and the ground in the following
manner.</p>
        <p>Having vi as the last extracted vertex of the silhouette, the
algorithm checks the 8-connected neighbours of this point
(see the right side of figure 1) and chooses the non-sky point
as next vertex which has the lowest angle between the
incoming line, defined by the two last vertices vi−1 and vi,
and the outgoing line, defined by vi and the neighbouring
point. This can easily be done, as shown in figure 3, by
checking the 8-connected neighbours from vi in clockwise
direction, starting at the predecessor. The only exception is
the start point v1, where we set v0 = (−1, y1). This means
that we choose in this case the left direct neighbour, which
lies outside of the image, as predecessor.</p>
        <p>2
1
vi−1 0
3
vi
7
4
5
6</p>
        <p>Figure 3: An example how to choose the next
silhouette point. Starting at vi−1 as predecessor of the
current vertex vi, the algorithm searches in clockwise
direction for the next ground pixel (blue). Therefore
the third pixel will be chosen.</p>
        <p>Now, we have the border of the mountain as chain of
neighbouring pixels. To reduce the amount of vertices
without loosing any information, we eliminate all vertices which
bring no further information gain to the final silhouette in
the last step of the extraction phase. For this, we define the</p>
        <p>The schema S = {A1, . . . , An} for the contents in a window
is known. Hence, maintaining one circular buffer as in Section
3.3 for each attribute Ai ∈ S splits each incoming tuple into
its components. We propose to use a bucketing-operator that
is responsible for portioning the incoming windows such that
it holds n circular buffers, each buffering one attribute of
the incoming tuple. Since external subscribers S1, ..., S` are
known to the bucketing-operator, the operator adds itself
as ”internal” subscriber to each 1 ≤ j ≤ n circular buffers,
delegates the desired sizei for each external Si to all buffers.</p>
        <p>This leads to notification of all circular buffers to the operator
at the same time once sizei is achieved for some external
subscriber Si. Now, the operator packages the n portions
delivered to it into a collection, that is send to the external
subscriber.</p>
        <p>This allows a chain of operators where each consumes and
produces a column-oriented event representation. To convert
back to row-oriented event representation, another operator
performs the described operations backwards. Hence, to
revert the representation flip, another operator reads buckets
and outputs them as a stream of regular tuples.</p>
        <p>We propose to run these constructions in dedicated
operators, since this allows sharing the costs of window portioning
between several external subscribers and reverting the
operation.</p>
        <p>OPEN RESEARCH CHALLENGES</p>
        <p>Based on existing research and related work, we cannot
completely answer all relevant aspects. Therefore, we present
two open research challenges in the following section.
4.1</p>
        <p>Stream Processing on Modern Hardware</p>
        <p>We propose an additional bucketing-operator to support
event representation changes and window portioning to target
GPU-specialized counterparts of existing stream operators.</p>
        <p>
          On the other hand, current trends in hardware bring further
co-processors (e.g., Intel Xeon Phi or FPGA) with special
characteristics into view. Consequently, these co-processors
could be used to accelerate stream processing in addition to
the GPU. With the increasing amount of different devices,
we have to take care of optimized algorithms and execution
models for the respected processor to also reach optimized
performance [
          <xref ref-type="bibr" rid="ref17 ref18 ref41 ref42 ref7 ref8">7, 8</xref>
          ]. An essential part is to tune a given
operator to the used (co-)processor, because each processing
device has its own set of optimizations that can be applied [
          <xref ref-type="bibr" rid="ref19 ref43 ref9">9</xref>
          ].
        </p>
        <p>
          Furthermore, with the availability of different devices, we
have to decide where to execute a given operator to reach
optimal performance. Here, it is not only important to
find the device with the best performance for the given
operator, but also to distribute the load between the devices
similar to the work of Breß et al. [
          <xref ref-type="bibr" rid="ref16 ref40 ref51 ref6">6</xref>
          ]. As far as we can see,
further research should be investigated to find limitations
and benefits for applied modern hardware in this context.
4.2
        </p>
        <p>Scheduler for Heterogeneous Devices</p>
        <p>
          As proposed by Breß et al. [
          <xref ref-type="bibr" rid="ref16 ref40 ref51 ref6">6</xref>
          ], in the context of GPU
acceleration for columnar databases, heterogeneous devices with
dedicated memory are an opportunity since data transfer
from one memory to another is optional. Utilizing OpenCL’s
possibility to execute kernels on different devices, Karnagel
et al. suggest to use a unified kernel and a load balancer that
partitions the incoming data and distributes them either to
the CPU or GPU depending on the load [
          <xref ref-type="bibr" rid="ref28">18</xref>
          ]. This load
balancer contains a job queue and a dictionary that maps tasks
to several states. OpenCL takes free jobs as soon as a device
is available and deploys it to a specific device on its own.
        </p>
        <p>An interesting question is, how an advanced load balancer
improves execution performance even further, if the targeted
device runs a specialized kernel. This could be achieved with
a more high-level load balancer that could decide on its own
when to send jobs to device with an unified kernel, and when
to to a dedicated device with highly optimized execution
code that fits most to the device architecture.</p>
        <p>RELATED WORK</p>
        <p>
          The design space of DBMSs using GPU as co-processor
is well explored [
          <xref ref-type="bibr" rid="ref15 ref39 ref5 ref50">5, 26</xref>
          ] and already applied in many
applications [
          <xref ref-type="bibr" rid="ref10 ref14 ref20 ref23 ref32 ref38 ref4 ref44 ref49">4, 10, 13, 22</xref>
          ]. He et al. present a novel design and
implementation of relational join algorithms for GPUs by
introducing a set of data-parallel primitives [
          <xref ref-type="bibr" rid="ref24">14</xref>
          ]. Stream
processing could benefit from this research results in context
of DBMSs, but first progress is made. Karnagel et al. show
that a stream band-join might be computed faster with a
speedup of nearly 70x using a graphic card [
          <xref ref-type="bibr" rid="ref28">18</xref>
          ]. For Complex
Event Processing, an approach similar to stream processing,
Cugola et al. suggest in 2012 to run the pattern detection
automaton on parallelized hardware. They conclude that
GPU acceleration can bring speedups in this context but also
highlight limitations due to memory restrictions [
          <xref ref-type="bibr" rid="ref22">12</xref>
          ]. Hence,
current approaches for GPU accelerated stream processing
focus on specific topics; instead, we suggest an approach
to enable GPU-ready stream processing in general. While
we focus on a strategy to handle variable-length windows
to enable GPU-operators over fixed-sized batches with a
column-orientation (”buckets”), Karnagel et al. use a load
balancer that mainly deploys band-join computation tasks
to both CPU and GPU. Although these tasks also contain
tuple-batches from the input sources, our approach has
another focus since we do not actually address load balancing
and construct batches outside the responsibility of a specific
operator or balancer. Hence, we provide a stream of buckets,
built from a stream of windows, that can be consumed by
any operator. Bucket streams can be shared by different
operators and can form an operator chain before the buckets
are converted back to a regular tuple stream.
        </p>
        <p>
          To enable GPU processing capabilities it is reasonable to
process batches, since a GPU might outperform a CPU only
if a bulk of data is present at once. Some SPSs do only
support a tuple-at-a-time approach [
          <xref ref-type="bibr" rid="ref25 ref52 ref53">15, 25</xref>
          ] such that an
internal buffering per operator is required. However, our
approach enables those architectures to convert
tuple-at-atime windows to bucket streams. Other SPSs such as Aurora
offer batch-processing. Here, each operator stores its
output in an output queue that is accessible by subscribers
via pointers indicating the current ranges in-use. Aurora
cleans up these queues, if a tailed range is not used by any
subscriber anymore [
          <xref ref-type="bibr" rid="ref1 ref11 ref35 ref46">1</xref>
          ]. Since Aurora manages windowing
with output queues, these queues vary as the window content
and processing performance of subscriber vary. In contrast,
our approach uses a fixed-sized circular buffer and performs
window portioning and event representation changes rather
than managing window states as Aurora.
        </p>
        <p>In this paper we motivated and introduced a concept for a
dedicated stream processing operator, the bucketing-operator,
that consumes a stream of length-varying windows and
produces a stream of fixed-sized window portions with a
columnoriented event representation. We motivated the revertible
event representation transposition to match the GPU
architecture better, since a GPU uses the SIMD approach and
otherwise we would waste memory and increase transfer costs.</p>
        <p>However, we suggest a strategy to perform bucketing using a
fixed-sized circular buffer for each attribute of a given schema.</p>
        <p>This approach is efficient in time and space, since it mainly
depends linearly on the actual window content length and
could be stored in a predefined sized buffer per-attribute.</p>
        <p>We ensured here, that data corruption cannot occur using
our construction.</p>
        <p>Finally, we identified two research questions for
processing data streams on modern hardware and scheduling for
heterogeneous devices.</p>
        <p>ACKNOWLEDGMENTS</p>
        <p>We thank Bernhard Seeger for fruitful discussions that
heavily influenced this work.</p>
        <p>Where- und Why-Provenance für syntaktisch reiches SQL
durch Kombination von Programmanalysetechniken</p>
        <p>Tobias Müller</p>
        <p>Universität Tübingen</p>
        <p>Tübingen, Deutschland
to.mueller@uni-tuebingen.de
ABSTRACT
Das hier vorgestellte Verfahren ermöglicht die Analyse der
Data Provenance von beliebigen SQL-Queries. Von der
ebenfalls hier skizzierten Implementierung des Verfahrens
werden unter anderem unterstützt: Subqueries,
Aggregierungen, rekursive Queries und Window Functions.
Eingabequeries werden zunächst in eine imperative Programmiersprache
übersetzt. Der Programmcode wird mit einem neuen
Verfahren analysiert, das auf bekannte Techniken aus dem Bereich
der Programmanalyse aufbaut: Program Slicing,
Kontrollflussanalyse und abstrakte Interpretation. Dadurch erhält
man eine Berechnung von Where- und Why-Provenance auf
der Granularitätsebene einzelner Tabellenzellen.</p>
        <p>Categories and Subject Descriptors
General Terms
Languages
Keywords
Data provenance, SQL, program analysis</p>
        <p>
          Wir stellen einen neuen Ansatz für die Analyse der Data
Provenance [
          <xref ref-type="bibr" rid="ref15 ref39 ref5 ref50">5</xref>
          ] von SQL-Queries vor sowie eine
prototypische Implementierung davon. Der hier präsentierte Ansatz
erlaubt eine Analyse beliebiger (lesender) SQL-Queries. Die
algebraische Ebene wird nicht berührt, wodurch auch keine
algebraischen Restriktionen auftreten. Zum Beispiel ist [
          <xref ref-type="bibr" rid="ref1 ref11 ref35 ref46">1</xref>
          ]
eingeschränkt auf eine positive relationale Algebra.
        </p>
        <p>
          Die theoretische Anwendbarkeit auf beliebige Queries wird
dadurch erreicht, dass wir Eingabequeries zuerst in eine
imperative (Turing-vollständige) Programmiersprache
übersetzen, das resultierende Programm in eine linearisierte Form
(erläutert in Abschnitt 4) umwandeln und anschließend die
eigentliche Provenance-Analyse durchführen. Dieser von uns
entwickelte Ansatz basiert auf dem Prinzip des Program
Slicing [
          <xref ref-type="bibr" rid="ref10 ref13 ref20 ref3 ref37 ref44 ref48">10, 3</xref>
          ].
        </p>
        <p>
          Von bisherigen Arbeiten wurde sukzessive der Umfang der
analysierbaren SQL-Konstrukte erweitert. Dazu zählen
beispielsweise geschachtelte Subqueries [
          <xref ref-type="bibr" rid="ref16 ref40 ref51 ref6">6</xref>
          ] sowie
Aggregierungen [
          <xref ref-type="bibr" rid="ref1 ref11 ref35 ref46">1</xref>
          ]. Mit der in der vorliegenden Arbeit vorgestellten
Implementierung ist eine Analyse dieser Konstrukte ebenfalls
möglich. Nach dem Wissensstand der Autoren erlaubt
unsere Implementierung erstmalig auch die Analyse von Window
Functions und rekursiven Queries.
1.1
        </p>
        <p>BEISPIEL-QUERIES</p>
        <p>Im Folgenden werden zwei Beispiel-Queries und die
Ergebnisse der mit unserer Implementierung durchgeführten
Provenance-Analyse vorgestellt. Die erste Query greift ein
Beispiel aus der Literatur auf und die zweite wurde gewählt,
um die Mächtigkeit unseres Ansatzes zu demonstrieren.
agencies</p>
        <p>name based_in phone
t1 BayTours San Francisco 415-1200
t2 HarborCruz Santa Cruz 831-3000
externaltours</p>
        <p>name destination type
t3 BayTours San Francisco cable car
t4 BayTours Santa Cruz bus
t5 BayTours Santa Cruz boat
t6 BayTours Monterey boat
t7 HarborCruz Monterey boat
t8 HarborCruz Carmel train
Abbildung 1: Bootstouren-Beispiel: Where- und
Why-Provenance sind markiert mit sowie .</p>
        <p>Falls beides zutrifft, wird verwendet. Tupel sind
mit ti bezeichnet.</p>
        <p>SELECT e.name, a.phone
FROM agencies AS a,</p>
        <p>externaltours AS e
WHERE a.name = e.name
AND e.type = b’oat’
output</p>
        <p>name phone
HarborCruz 831-3000
BayTours 415-1200
BayTours 1 415-1200</p>
        <p>2
(a) SFW-Query (b) Ergebnis
Abbildung 2: Welche Agenturen bieten Bootstouren
an?
2.1</p>
        <p>Bootstouren</p>
        <p>
          Diese Beispiel-Query stammt aus [
          <xref ref-type="bibr" rid="ref14 ref38 ref4 ref49">4</xref>
          ] und reproduziert die
dort gefundene Data Provenance. In Abbildung 1 sind die
Eingabetabellen dargestellt: agencies enthält Stammdaten
von Reiseveranstaltern und externaltours enthält deren
angebotene Touren. Die Query in Abbildung 2(a) findet
diejenigen Veranstalter, die Bootstouren im Angebot haben.
        </p>
        <p>Die Ausgaberelation steht in Abbildung 2(b).</p>
        <p>Zelle 1 ist hier als Where-abhängig von t5: BayTours
markiert. Ein Blick auf die SQL-Query (SELECT e.name)
bestätigt dieses Ergebnis: denn hier werden Werte aus der
Eingabetabelle ins Resultat kopiert. Dies entspricht den
Kriterien von Where-Provenance, wie wir sie in Abschnitt 1
angegeben haben.</p>
        <p>Die Markierungen zeigen außerdem Why-Abhängigkeiten
von t1: BayTours , t5: BayTours und t5: boat . Diese drei
Werte werden im WHERE-Teil der SQL-Query für die
Joinund Filterkriterien benutzt.</p>
        <p>1 und 2 zeigen, dass die wertemäßig nicht
unterscheidbaren BayTours und BayTours anhand ihrer jeweiligen
Provenance (t5 oder t6) unterscheidbar werden.</p>
        <p>3 veranschaulicht, dass Data Provenance entgegen der
wörtlichen Bedeutung auch in Vorwärts-Richtung
funktioniert. Die Farbmarkierungen besagen, dass t1: 415-1200
mit zwei Werten von der Ausgabetabelle auf Werteebene
zusammenhängt. Konkret wird hier die Telefonnummer zwei
Mal kopiert.</p>
        <p>Die hier vorgestellte Provenance-Analyse einer rekursiven
Query ist nach dem Wissen der Autoren mit keiner anderen
existierenden Implementierung möglich. Die Query besteht
auch aus einer Anzahl von Funktionsaufrufen.
Interessante Ausschnitte des Ergebnisses unserer Provenance-Analyse
werden erneut mit farbigen Markierungen dargestellt.</p>
        <p>Abbildung 3(a) zeigt die Eingaberelationen. compounds
enthält chemische Summenformeln und ihre Bezeichnungen.</p>
        <p>In Tabelle fsm ist ein endlicher Automat codiert, der die
Syntax dieser Formeln überprüfen kann.</p>
        <p>Die SQL-Query in Abbildung 3(b) führt diesen
Automaten aus. Da alle Formeln in compounds parallel verarbeitet
werden, existieren mehrere Automaten parallel. In jedem
Schritt eines Automaten wird das erste Zeichen einer
Formel abgeschnitten und der entsprechende Zustandsübergang
durchgeführt. Aktueller Zustand und “Restformel” sind in
der Tabelle run gespeichert, die bei jedem Schritt der
Automaten neu berechnet wird. In Abbildung 3(c) sind zwei
Versionen von run abgebildet: direkt nach der
Initialisierung (step: 0) und nach drei Schritten (step: 3). Wenn die
Formeln vollständig verzehrt sind, beendet sich der rekursive
Teil der Query. Als Endresultat werden die
Ableitungsschritte für citrate (siehe Abbildung 3(d)) zurückgegeben.</p>
        <p>Die Where-Provenance von 4 zeigt an, von welchen
Werten O73- abgeleitet wurde. Dazu zählt erst einmal die
vollständige Summenformel t9: C6H5O73- . Aber auch alle
Zwischenzustände werden von der Analyse erfasst, wie anhand
der Markierungen in Abbildung 3(c) zu erkennen ist.</p>
        <p>Die interessantesten Why-Abhängigkeiten von 4 sind
innerhalb der Tupel t12 und t13 zu finden. Das sind nämlich
gerade die Kanten des Automaten, die besucht wurden, um
O73- abzuleiten.
compounds
compound
t9 citrate
t11 hydronium HC36HO1+2O6
t10 glucose
formula</p>
        <p>C6H5O73t12
t13
t14
t15
t16
t17
t18
(a) Eingabetabellen (b) Rekursive Query (c) Zwischenergebnisse (d) Ergebnis
Abbildung 3: Endlicher Automat, der die Syntax von chemischen Summenformeln überprüft.
1 def query(agencies , externaltours ):
2 #FROM clause: read source tables
3 rows = []
4 for tupVar2 in agencies:
5 for tupVar3 in externaltours:
6 rs = {"tupVar2": tupVar2 ,
7 "tupVar3": tupVar3 ,
8 "tmp": {},
9 }
10 rows.append(rs)
11 #WHERE clause: compute where predicate
12 rowIdx = 0
13 while rowIdx &lt; len(rows):
14 rs = rows[rowIdx]
15 col4 = rs["tupVar2"]["name"]
16 col5 = rs["tupVar3"]["name"]
17 res6 = col4 == col5
18 col7 = rs["tupVar3"]["type"]
19 val8 = "boat"
20 res9 = col7 == val8
21 res10 = res6 and res9
22 rs["tmp"]["where"] = res10
23 rowIdx = rowIdx + 1
24 #WHERE clause: apply where predicate
25 filtered = []
26 for rs in rows:
27 if rs["tmp"]["where"]:
28 filtered.append(rs)
29 rows = filtered
30 #SELECT clause: compute result columns
31 rowIdx = 0
32 while rowIdx &lt; len(rows):
33 rs = rows[rowIdx]
34 col11 = rs["tupVar3"]["name"]
35 col12 = rs["tupVar2"]["phone"]
36 rs["tmp"]["eval0"] = col11
37 rs["tmp"]["eval1"] = col12
38 rowIdx = rowIdx + 1
39 #SELECT clause: assemble result table
40 ship = []
41 for rs in rows:
42 row = {}
43 row["name"] = rs["tmp"]["eval0"]
44 row["phone"] = rs["tmp"]["eval1"]
45 ship.append(row)
46 return ship</p>
        <p>Listing 1: Übersetzung der Bootstouren-Query. Es
findet (noch) keine Code-Optimierung statt.</p>
        <p>Zuletzt wird mit 5 noch die Einsicht transportiert, dass
die Schrittzahl des Automaten keinerlei Einfluss auf die
Ableitung von citrate hat. Die Markierungen zeigen lediglich
eine Where-Provenance zwischen den Schritten 0 bis 8
an, die auf das Inkrementieren zurückzuführen ist. Es gibt
keine Why-Provenance, das heißt keine (versehentliche)
Beeinflussung des Endresultats durch die Schrittzählung.
3. SQL-ÜBERSETZUNG</p>
        <p>Die zu analysierenden SQL-Queries werden in unserer
Implementierung zunächst in Python-Programme übersetzt.</p>
        <p>Python hat als Zwischensprache den Vorteil, sehr
leichtgewichtig und daher für die weitere Analyse gut zugänglich</p>
        <p>Abbildung 4: Hauptelemente der
ProvenanceAnalyse
zu sein. Es wird außerdem von Kooperationspartnern
eingesetzt. Ein Nachteil von Python ist die schlechtere
Performance (gegenüber Sprachen wie C). Es gibt jedoch keinen
Hinderungsgrund, die mit Hilfe von Python erarbeiteten
Techniken der Provenance-Analyse nicht auf andere Sprachen wie
LLVM zu übertragen.</p>
        <p>
          Damit würden wir einem aktuellen Forschungstrend in der
Datenbank-Community folgen, SQL nicht länger mit dem
Volcano-Iterator-Model zu implementieren, sondern Queries
just-in-time zu kompilieren (siehe [
          <xref ref-type="bibr" rid="ref19 ref43 ref9">9</xref>
          ]).
        </p>
        <p>Aus Platzgründen wird der von uns verwendete
Übersetzer nur anhand eines Beispiels vorgestellt. Listing 1 zeigt,
wie die Übersetzung von Query 2(a) aussieht. Je Query oder
Sub-Query wird eine eigene Python-Funktion erzeugt. Die
Argumente und Rückgabewerte sind Tabellen, die in
Python als Listen von Dictionaries implementiert sind. Die
SQL-Klauseln einer Query werden in eine Reihenfolge
gebracht, die eine Berechnung im imperativen Paradigma
erlaubt: SFW wird beispielsweise zu FWS.
4. PROVENANCE-ANALYSE</p>
        <p>IN ZWEI STUFEN</p>
        <p>Wie in Abbildung 4 dargestellt, teilt sich die
ProvenanceAnalyse im Wesentlichen auf zwei Schritte auf: 1
Kontrollflussanalyse (dynamisch, zur Laufzeit) und 2 abstrakte
Interpretation (statisch, zur Kompilierzeit).</p>
        <p>Die Kontrollflussanalyse ist dafür zuständig, alle für den
Kontrollfluss benötigten Prädikate zu bestimmen und deren
Werte zu speichern. Beispielsweise würde bei der
Ausführung einer if-Anweisung die zugehörige
Kontrollflussinformation darin bestehen, ob entweder der if- oder der
elseRumpf ausgeführt wird. Die Information kann durch einen
einzelnen booleschen Wert codiert werden.</p>
        <p>In Phase 2 findet die eigentliche Provenance-Analyse
statt. Hier wird das Kontrollfluss-Log benutzt, um den
tatsächlichen Ausführungspfad nachvollziehen zu können, den
das Programm zur Laufzeit genommen hat.</p>
        <p>In Abschnitt 4.1 wird die Motivation für die soeben
skizzierte Struktur geschildert sowie ein Bezug zu Ergebnissen
der theoretischen Informatik hergestellt, die einer
Programmanalyse harte Grenzen setzt. Abschnitt 5 erläutert die
beiden Analyseschritte genauer sowie deren Implementierung in
Python.
4.1 Linearisierung</p>
        <p>Eine rein statische Provenance-Analyse ist im
Allgemeinen für Python-Programme nicht möglich, denn Python ist
eine Turing-vollständige Programmiersprache. Der Satz von
Rice besagt, dass nicht-triviale Laufzeiteigenschaften (wie
Data Provenance) für allgemeine Turing-Maschinen nicht
algorithmisch entscheidbar sind.</p>
        <p>Um den Konsequenzen des Satzes von Rice zu entgehen,
ändert dieses Verfahren die Voraussetzungen. Wie in
Abbildung 4 dargestellt, wird der zur Laufzeit
aufgezeichnete Kontrollfluss an die abstrakte Interpretation übergeben.</p>
        <p>Zu Kontrollflussanweisungen zählen unter anderem if- und
while-Anweisungen. Für diese Konstrukte besteht das
zugehörige Kontrollfluss-Log lediglich aus einer Folge von
booleschen Werten:
• Wird entweder if oder else ausgeführt?
• Wird der Rumpf von while (nochmal) ausgeführt oder</p>
        <p>wird die Schleife beendet?</p>
        <p>Dieses Log steht also während der statischen Analyse zur
Verfügung. Das heißt, die statische Analyse weiß für
jedes if x:, ob es in Wirklichkeit entweder ein if True: oder
if False: ist - je nachdem, ob True oder False im Log steht.</p>
        <p>Mit dem Kontrollfluss-Log findet deshalb eine
Linearisierung des Python-Programms statt. Die Abfolge der
Anweisungen im Programm ist statisch festgelegt, weil der
Kontrollfluss festgelegt ist. Kontrollfluss-Konstrukte verhalten
sich nun transparent und im einfachsten Fall besteht die
restliche Analyse des Programms nur noch darin,
Zuweisungen an Variablen zu betrachten.</p>
        <p>Dadurch liegt in 2 keine Turing-Vollständigkeit mehr
vor. Der Satz von Rice gilt nicht mehr und eine
ProvenanceAnalyse ist (quasi-statisch) möglich.</p>
        <p>Das Beispiel in Abschnitt 5 wird das verdeutlichen.
4.2</p>
        <p>Granularität und Auflösung</p>
        <p>
          Als Granularität (oder level of detail) wird in [
          <xref ref-type="bibr" rid="ref17 ref41 ref7">7</xref>
          ]
bezeichnet, was die kleinstmöglichen Datenstrukturen sind, die in
einer Provenance-Analyse berücksichtigt werden. Meist sind
das entweder Tupel oder Tabellenzellen. In dem hier
besprochenen Ansatz besteht die Granularität in Zellen.
        </p>
        <p>Orthogonal dazu wollen wir den Begriff Auflösung
verwenden, um damit die Größe der Programmfragmente zu
bezeichnen, für die am Ende der Analyse eine Data
Provenane ausgegeben wird.</p>
        <p>Beispielsweise könnte es in einer niedrigen Auflösung so
sein, dass das Programm nur als Ganzes analysiert wird.</p>
        <p>Das heißt, die Data Provenance bezieht sich gerade auf die
Ein/Ausgabedaten des Programms selbst und zeigt an, wie
die Ausgabedaten von den Eingabedaten abhängig sind.
Eine andere Variante bestünde darin, für jeden einzelnen
Ausdruck in diesem Programm eine Data Provenance
auszugeben. Das heißt, für einen Ausdruck wie b+c wird als Ergebnis
die Abhängigkeit von den Einzelwerten b sowie c
ausgegeben. Hier ist die Auflösung sehr hoch.</p>
        <p>Von uns wurde als Auflösung die Ebene von
Funktionsaufrufen benutzerdefinierter Funktionen gewählt. Im
Ergebnis der Provenance-Analyse sind deshalb die Parameter und
Rückgabewerte von Funktionsaufrufen aufgeführt sowie die
dazugehörende Data Provenance.
5. IMPLEMENTIERUNG</p>
        <p>Als Grundlage für die Implementierung der
ProvenanceAnalyse dient CPython in Version 3.4. Dabei handelt es sich
um die stabile und zum Zeitpunkt des Schreibens dieses
Artikels aktuelle Referenzimplementation von Python. Intern
übersetzt sie Quelltext in Bytecode, der anschließend in der
zugehörigen virtuellen Maschine (VM) ausgeführt wird. Als
Zwischenschritt während der Übersetzung erzeugt CPython
einen Abstract Syntax Tree (AST), auf dessen Basis wir das
Analyseverfahren implementiert haben.</p>
        <p>In Abbildung 5 ist dargestellt, wie die einzelnen
PythonKomponenten zusammenarbeiten. Mit weißem Hintergrund
dargestellt sind die ein/ausgehenden Datensätze
(Relationen) sowie der Python Programmcode, der analysiert
wer</p>
        <p>Abbildung 5:
Implementierung</p>
        <p>Komponenten
der</p>
        <p>Pythonden soll. Grau hinterlegt sind Komponenten der
CPythonImplementierung selbst, die unmodifiziert verwendet
werden. In schwarz ist, was wir zusätzlich implementiert haben.</p>
        <p>Während der Analyse wird das zu einem AST
kompilierte Eingabeprogramm zwei Mal verarbeitet. In Schritt 1
wird es zunächst instrumentiert. Dabei werden zusätzliche
Python-Anweisungen eingefügt, die einerseits die
vorhandene Funktionalität nicht verändern und andererseits für
das Schreiben des Kontrollfluss-Log zuständig sind. Das so
modifizierte Programm wird zu Bytecode kompiliert und
anschließend mit der VM ausgeführt. Während der
Ausführung werden Eingabe/Ausgabedaten gelesen/geschrieben
sowie das Kontrollfluss-Log produziert. Schritt 1 wird in
Abschnitt 5.1 genauer beschrieben.</p>
        <p>In Schritt 2 wird das unmodifizierte (nicht
instrumentierte) Eingabeprogramm erneut hergenommen und mit
Hilfe des Kontrollfluss-Logs die eigentliche Provenance-Analyse
durchgeführt. Eine genaue Beschreibung dieses Teils folgt in
Abschnitt 5.2. Bemerkenswert ist, dass hier keine
Eingabedaten benötigt werden. Die abstrakte Interpretation findet
auf symbolischer Ebene statt, das heißt es wird lediglich
ermittelt, wie die im Programm benutzten Variablen
voneinander abhängig sind. Dies genügt, um sowohl Why- als
auch Where-Provenance zu berechnen.
5.1</p>
        <p>Instrumentierung</p>
        <p>Allgemein gesprochen müssen diejenigen
Sprachkonstrukte instrumentiert werden, deren Verhalten bezüglich Data
Provenance sich nicht durch rein statische Analyse
bestimmen lässt. Bisher instrumentieren wir zwei Kategorien von
Sprachkonstrukten: (i) Kontrollfluss und (ii) Indexzugriff.</p>
        <p>Listing 2 zeigt ein bereits instrumentiertes
Programmfragment, das je ein Beispiel für beide Fälle enthält. Die
Funktion dow() erhält als Argumente den Wochentag als
Zahlenwert (num = 0...6) und eine Liste mit Namen von
Wochentagen. Sie liefert eine String-Repräsentation zurück.</p>
        <p>Sie unterstützt außerdem zwei verschiedene
Datumsformate: Wochenbeginn am Montag (fmt = True) oder am Sonntag
(fmt = False).
6
7
8
9
10
11
12
1 days = ["Sun","Mon","Tue",
2 "Wed","Thu","Fri","Sat"]
3 def dow(num , fmt , days ):
4 if fmt:
5 #true: week starts on Monday
logCtrl(True)</p>
        <p>Nachdem die Kontrollfluss-Logs erzeugt worden sind, kann
jetzt die eigentliche Ableitung der Data Provenance
stattfinden. Dazu werden wie in Abbildung 5 dargestellt, lediglich
das Eingabeprogramm zusammen mit den Logs verwendet.</p>
        <p>Daten sind an dieser Phase nicht beteiligt. Dementsprechend
werden auch keine Berechnungen von Werten ausgeführt,
was Systemressourcen spart.</p>
        <p>Die abstrakte Interpretation wird durchgeführt, indem alle
Anweisungen des Programms in derselben Reihenfolge
nachvollzogen werden, in der sie auch zur Laufzeit ausgeführt
wurden. Die richtige Reihenfolge einzuhalten ist dank des
aufgezeichneten Kontrollflusses sehr einfach. Immer dann,
wenn eine Kontrollflussentscheidung benötigt wird (zum
Beispiel: if- oder else-Block ausführen), kann diese Information
im Kontrollfluss-Log nachgeschlagen werden.</p>
        <p>Where-Provenance.</p>
        <p>Während die Anweisungen nacheinander interpretiert
wer1 days = [(),(),() ,
2 () ,() ,() ,()]
3 def dow(num , fmt , days ):
4 if fmt: #fmt: True
5 pos = (num +()) % ()
6 else:
7 pos = num
8 res = days[pos] #pos: 5
9 return res
10 dow((), (), days) #returns: ()</p>
        <p>Listing 3: Pseudocode aus Sicht der abstrakten
Interpretation.
den, wird eine Variablenumgebung gepflegt und mit jeder
interpretierten Anweisung gegebenenfalls aktualisiert. Die
Umgebung beinhaltet alle derzeit sichtbaren Variablen
zusammen mit ihren jeweiligen Abhängigkeiten von den
Eingabedaten.</p>
        <p>Der Aufbau dieser Umgebung ist ein inkrementeller
Prozess. Jede Zuweisung einer Variablen, wie zum Beispiel in
a = b, wird eine entsprechende Aktualisierung der
Umgebung nach sich ziehen. In diesem Beispiel müssten alle
Abhängigkeiten von b nach a kopiert werden.</p>
        <p>Auf diese Weise wird die Umgebung ständig aktuell
gehalten und referenziert in ihren Abhängigkeiten stets die
Eingabedaten. Am Ende der Analyse braucht nur noch die
gewünschte Variable, zum Beispiel res, in der Umgebung
nachgeschlagen zu werden.</p>
        <p>Why-Provenance.</p>
        <p>Die Ausführung von Anweisungen in einem if- oder
elseRumpf sind abhängig vom zugehörigen Prädikat des
if/elseKonstrukts. Diese Abhängigkeit modellieren wir als
WhyProvenance.</p>
        <p>In der Analyse wird dazu eine Menge an Abhängigkeiten
gepflegt, die dem Kontrollfluss selbst zugeordnet ist. Bei
Eintritt in den Rumpf einer if-Anweisung wird dem
Kontrollfluss eine Abhängigkeit vom Prädikat dieser if-Anweisung
zugeordnet. Allen Zuweisungen, die in diesem Rumpf
ausgeführt werden, werden dann wiederum die Abhängigkeiten
des Kontrollflusses in Form von Why-Provenance
hinzugefügt.</p>
        <p>Nachdem der if-Rumpf abgearbeitet ist, werden die
Abhängigkeiten des Kontrollflusses wieder zurückgesetzt. Ob
if- oder else-Rumpf ausgeführt werden, macht hier keinen
Unterschied: in beiden Fällen gilt dasselbe Prädikat. Die
Interpretation von Schleifen funktioniert analog.</p>
        <p>Beispiel-Analyse.</p>
        <p>In Listing 3 ist abgedruckt, wie sich das aus dem
Instrumentierungsschritt bereits bekannte Programmfragment in
Schritt 2 der Provenance-Analyse darstellen würde. Alle
vorkommenden atomaren Werte sind durch () ersetzt
worden. Code in dieser Form wird nicht erzeugt, doch das
Listing veranschaulicht, auf welcher Basis die abstrakte
Interpretation arbeitet.</p>
        <p>Anhand dieses Beispiels wird nun dargestellt, wie die
Ableitung der Data Provenance funktioniert. Das Ergebnis
dieser Analyse besteht gemäß der gewählten Granularität und
Auflösung (siehe Abschnitt 4.2) darin, wie die Variable res
von den Funktionsparametern abhängig ist.</p>
        <p>Um die Analyse zu initialisieren, werden die in den
Funktionsparametern vorkommenden Werte durch künstliche ids
repräsentiert. Abbildung 6 zeigt die im Beispiel gewählte
Repräsentation, die aus ansteigenden natürlichen Zahlen
besteht. Die Variable days ist eine Liste und enthält
dementsprechend für jedes Listenelement einen anderen
Repräsentanten. Das tiefgestellte e soll anzeigen, dass eine
WhereAbhängigkeit besteht (= Abhängigkeit vom Wert an
dieser Stelle). Why-Abhängigkeiten kommen später hinzu und
werden entsprechend durch y gekennzeichnet.</p>
        <p>Diese Repräsentanten ersetzen während der abstrakten
Interpretation die tatsächlichen Werte. Am Ende der Analyse
von dow() wird die Variable res nicht mit dem Wert "Fri"
belegt sein, sondern mit einer Menge von Repräsentanten.</p>
        <p>In Tabelle 1 sind die einzelnen Analyseschritte der
abstrakten Interpretation aufgeführt. In der ersten Spalte steht
die Zeilennummer des Python-Statements, das soeben
interpretiert wurde. Die mittlere Spalte enthält die
Abhängigkeiten des Kontrollflusses. Die letzte Spalte zeigt den Inhalt
der Variablenumgebung. Um die Übersichtlichkeit zu
verbessern, wird hier die Variable days nicht dargestellt.</p>
        <p>In Zeile 3 wird die Funktion betreten. Hier findet die
Initialisierung der Datenstrukturen statt, das heißt die ids 0..8
werden vergeben. num, fmt und days sind die Parameter der
Funktion und werden der Umgebung hinzugefügt.</p>
        <p>In Zeile 4 beginnt das if/else-Konstrukt. Hier werden
zunächst die Abhängigkeiten des if/else-Prädikats fmt den
Kontrollfluss-Abhängigkeiten hinzugefügt. Dabei findet eine
Transformation von 8e zu 8y statt. Die Umgebung bleibt
unverändert. Als dritter Punkt wird das Kontrollfluss-Log
gelesen, um festzustellen, ob der if- oder else-Rumpf
besucht werden soll. Das Log liefert ein True zurück, also wird
eine Analyse des if-Rumpfs durchgeführt.</p>
        <p>Zeile 5 enthält eine Zuweisung an die Variable pos.
Dazu wird zunächst der Ausdruck (num+()) % () analysiert. Die
beiden () haben hier keine Abhängigkeiten, werden also
einfach ignoriert. Die Abhängigkeiten von num werden kopiert:
7e. Außerdem werden die Kontrollflussabhängigkeiten
übernommen: 8y.</p>
        <p>Zuletzt findet in Zeile 8 ein Listenzugriff statt. Hier wird
das Indices-Log bemüht, das den Index 5 enthält. An 5.</p>
        <p>Stelle von days befindet sich 5e und wird nach res kopiert.</p>
        <p>Darüber hinaus hat der Index wie auch der Kontrollfluss
eine steuernde Funktion. Deshalb wird der Inhalt von pos als
Why-Provenance kopiert.</p>
        <p>Das Ergebnis der Analyse für res ist: [8y, 7y, 5e], also
Where-Abhängigkeit von "Fri" und Why-Abhängigkeit von
fmt: True und num: 4.</p>
        <p>ZUSAMMENFASSUNG UND AUSBLICK</p>
        <p>Unser hier vorgestellte Ansatz und seine konkrete
Implementierung erweitert die bisherigen Grenzen der
Provenance-Analyse von SQL. Window Functions und
rekursive Queries sind Bestandteile aktueller
DBMS-Implementierungen und können von unserem Prototypen analysiert
werden.</p>
        <p>Derzeit wird im Rahmen einer studentischen Arbeit eine
zusätzliche Python-Implementierung der hier vorgestellten
Provenance-Analyse entwickelt. Ihr Merkmal besteht darin,
dass sie Bytecode direkt analysiert (statt den Python-AST).</p>
        <p>Abhängigkeiten</p>
        <p>Kontrollfluss Variablen
Zeile
Wir versprechen uns eine Performanceverbesserung von
dieser neuen Implementierung.</p>
        <p>
          Als weitere Implementierung ist LLVM geplant, um
mittels [
          <xref ref-type="bibr" rid="ref19 ref43 ref9">9</xref>
          ] kompilierte Queries analysieren zu können.
        </p>
        <p>
          Habitat [
          <xref ref-type="bibr" rid="ref18 ref42 ref8">8</xref>
          ] ist ein SQL-Debugger, der eingesetzt wird, um
potentiell fehlerhafte Queries direkt auf SQL-Sprachebene
zu untersuchen. Dazu wird die verdächtige Query von
Habitat instrumentiert und vom RDBMS ausgeführt. Die
instrumentierte Query beobachtet (= zeichnet auf), wie die
potentiell fehlerhafte Ergebnisrelation berechnet wird und
präsentiert dem Benutzer diese Beobachtungen. Bei großen
Eingabetabellen besteht das Problem, dass man vielleicht
nur an der Beobachtung der Berechnung eines einzelnen
Ergebnistupels interessiert ist, aber auch tausende andere
Tupel zusätzlich beobachtet. Um genau die für ein bestimmtes
Ergebnistupel relevanten Eingabetupel herauszufinden, ist
Data Provenance genau das richtige Werkzeug. Eine
Kombination von diesen beiden Techniken wird von uns
angestrebt.
        </p>
        <p>Large-scale Analysis of Event Data
Stefan Hagedorn</p>
        <p>TU Ilmenau, Germany
stefan.hagedorn@tuilmenau.de</p>
        <p>Kai-Uwe Sattler
TU Ilmenau, Germany
kus@tu-ilmenau.de</p>
        <p>Michael Gertz
Heidelberg University,</p>
        <p>Germany
gertz@informatik.uniheidelberg.de
ABSTRACT
With the availability of numerous sources and the
development of sophisticated text analysis and information
retrieval techniques, more and more spatio-temporal data are
extracted from texts such as news documents or social
network data. Temporal and geographic information obtained
this way often form some kind of event, describing when
and where something happened. An important task in the
context of business intelligence and document exploration
applications is the correlation of events in terms of their
temporal, geographic or even semantic properties. In this
paper we discuss the tasks related to event data analysis,
ranging from the extraction of events to determining events
that are similar in terms of space and time by using skyline
processing and clustering. We present a framework
implemented in Apache Spark that provides operators supporting
these tasks and thus allows to build analysis pipelines.
1. INTRODUCTION</p>
        <p>
          Traditionally, research on querying and analyzing
spatiotemporal data focuses on data obtained from sensors that
record the evolution and movement of objects in 2- or
3dimensional space over time. Typical examples of such data
include trajectories of moving objects (e.g., [
          <xref ref-type="bibr" rid="ref17 ref41 ref7">7</xref>
          ]) and
remotelysensed data (e.g., [
          <xref ref-type="bibr" rid="ref10 ref20 ref44">10</xref>
          ]). Spatio-temporal data, however, do
not only arise in the context of sensor data or, more
generally, from observing objects with their spatial extent over
time. In this paper, we consider events as an important type
of spatio-temporal data that thus far have been neglected
in the context of data analysis. Events play an important
role in information retrieval and text analysis in general,
most prominently in the task of topic detection and
tracking (TDT) [
          <xref ref-type="bibr" rid="ref12 ref2 ref23 ref36 ref47">2, 13</xref>
          ]. An event is often described as “something
that happens at some place at some time”, e.g., [
          <xref ref-type="bibr" rid="ref34">24</xref>
          ]. Thus,
events inherently have a spatial and a temporal component.
        </p>
        <p>
          A prominent source for event data are textual
information from newsfeeds, websites, and social media such as
blogs, tweets or social networks. Underlying the extraction
of such information about events are temporal taggers for
the temporal component and geo-taggers for the spatial or
geographic components [
          <xref ref-type="bibr" rid="ref31">21</xref>
          ]. Such taggers detect, extract,
and normalize respective expressions in textual data and
provide subsequent tools as the basis for further tasks such
as document clustering or classification. For example, from
the sentence “Obama visited Germany in April 2009”, a
temporal tagger would detect the expression “April 2009” and
normalize it to “2009-04”; similarly, a geo-tagger would
extract the expression “Germany” and often associate further
information with it. This might include the spatial extent in
the form of a polygonal description or that Germany is part
of Europe (using some concept hierarchy). Such a pair of
temporal component and geographic component then forms
an event. Given that today’s taggers become more and more
sophisticated, large repositories of event information can be
built from news articles, blog entries, social network
postings, and medical records, to name but a few. The task we
focus on in this paper is to find events that are correlated to
a given event in terms of its time and place of occurrence.
        </p>
        <p>The result of such a query is a list of pointers to documents
in which similar (correlated) events have been detected.</p>
        <p>For such correlation tasks, one is facing several challenges
ranging from extracting event data from documents,
dealing with imprecise event specifications resulting from the
extraction process, to exploiting different correlation
techniques for finding similar events, to scalable processing for
large datasets.</p>
        <p>In this paper, we describe a framework for analyzing event
data and detecting correlations between events. Based on
a model for spatio-temporal events at different granularities
we discuss corresponding distance measures. We present the
analysis tasks and discuss how these tasks can be supported
by a set of basic operators for extracting event data from text
documents, preparing the data, and analyzing event
correlations using top-k and skyline processing as well as clustering.</p>
        <p>We further describe how these operators are supported as
transformation operators in Apache Spark and outline the
support for explorative analyses.</p>
        <p>An important data analysis task is to find similar events,
i.e. events that share the same context or have other values
in common. In this paper, we consider the spatio-temporal
aspect of events for determining similarities, i.e., we focus
on the similarity of their respective location and/or time of
occurrence.</p>
        <p>For our analysis framework, we assume an event model in
which information about events has been extracted from
some document (see Sect. 4) and is represented by useful
and necessary information like ID, description, origin, etc.
as well as a temporal and a geographic component,
describing the when and where. The expressions underlying these
components are based on concept hierarchies for time and
space, as shown in Figure 1.</p>
        <p>year
month
day
country
state
city</p>
        <p>The temporal as well as the spatial expressions can be
of different granularities. For temporal expressions we
consider days to be of the finest and years of the coarsest
granularity. Of course one could also extend this model with
further granularity levels, such as weeks, hours, or minutes.</p>
        <p>In this paper, however, and for the sake of simplicity, we
will only consider days, months, and years. We denote the
corresponding domains as T = {Tday, Tmonth, Tyear}. For
example, “2001-05-20”, “2013-05”, and “1995” are all valid
temporal expressions from these three different domains.</p>
        <p>Analogously, geographic expressions are taken from the
domains in G = {Gcity, Gstate, Gcountry}. We assume that
with each expression a spatial object in the form of a single
polygon (without holes) is associated. For example, the
geographic expressions “Heidelberg” and “Germany” are both
valid expressions of type Gcity and Gcountry, respectively.</p>
        <p>Definition. (Event) Given concept hierarchies T and G for
temporal and geographic expressions, respectively. An
event e = ht, gi consists of a temporal expression t
with t.type ∈ T and a geographic expression g with
g.type ∈ G.</p>
        <p>Examples of (imprecise) event specifications are
(2013-0902, Munich), (1955, Germany), or (2000-04, Bavaria). To
account for these types of uncertainties, in our framework
we make the following assumptions:
1. Temporal and geographic expressions of the finest
gran</p>
        <p>ularity are certain.
2. Every temporal (resp. geographic) expression of type</p>
        <p>P 0 that refines a given temporal (resp. geographic)
expression of type P , with P 0 being of finer granularity
than P , is equally likely.</p>
        <p>Distance Measures. To determine the similarity between
events, a distance measure is needed that takes both the
temporal and the geographic component of an event into
account, both of which can be imprecise.</p>
        <p>Precise events are those events for which both the location
and temporal information is given as a fine-grained concept,
i.e., they are defined on the city and day level. For such
events, calculating the distance is trivial resulting in a scalar
value for time (e.g., distance in days) and location (e.g.
distance in meters). Both values can be combined into a single
(weighted) result. Although we cannot use the traditional
distance functions for events that are imprecise in at least
one component, we can specify new distance functions
accordingly. However, the definition of such functions is
beyond the scope of this paper and we will give only a brief
overview below.</p>
        <p>First, we convert the imprecise event data into intervals
and regions. As imprecise temporal data is defined as a
month or year (to be imprecise the day part is missing), we
can create an interval of days that starts with the minimal
possible day, i.e., the first day of the corresponding month or
a year and ends with the maximal possible day, which is the
last day of the month or year, respectively. Each
subinterval is called a valid instance of this interval. As an example
consider the imprecise temporal expression “2014-05” that is
mapped to the (right-open) interval i = [2014-05-01,
201405-30]). Note that any subinterval in i is a valid instance
of the temporal expression. Analogously, for imprecise
geographic expression, i.e., expressions not at the city level,
a polygon (or its minimum bounding box) is used. Then,
a function that calculates the distance between such
intervals and between polygons/boxes is needed. Such distance
function can yield a scalar value, which may be the average
distance between points in the respective intervals or
polygons, or it can yield an interval, representing the minimum
and maximum distance between the intervals/polygons.</p>
        <p>The Hausdorff distance is a typical approach to calculate
the distance between two intervals or polygons as a scalar
value. Its main idea is to compute the maximum distance
between any point in one interval to any other point of the
second interval. For two temporal intervals t1 and t2, the
distance can be computed as
dH (t1, t2) := max{max dh(i1, t2), max dh(i2, t1)}</p>
        <p>i1∈t1 i2∈t2
where the distance dh(i, t) between a day i and a temporal
interval t defined as dh(i, t) := mini0∈t(|i − i0|).</p>
        <p>For polygons/boxes, the Hausdorff distance can be defined
as follows:
dH (g1, g2) := max</p>
        <p>x∈g1 ym∈ign2 ||x − y||</p>
        <p>This is the greatest distance from a point in g1 to the
closest point in g2. However, the calculation of this distance
measure can become very expensive as the distance from
every point in the first interval to every other point in the
second interval has to be computed. For temporal intervals
this is not a big problem, because when taking years as the
most imprecise and days as most precise level, such an
interval can have only 365 (or 366) points at most. However,
for polygons the set of inner points is in principle infinite.</p>
        <p>On the one hand, one could use the cities that are located
in the respective region. This approach may not lead to
good results as many cities may be clustered around a large
metropolis, whereas in rural regions only very few cities can
be found. On the other hand, one could impose a raster
on the respective regions using a fixed grid. Then, only
the points of this grid will be used for calculations. Then,
however, the definition of the grid size may be difficult since
choosing a small grid step size may lead to many data points
that will take part in the calculation and thus, will not
improve the computation time. Choosing a large grid size will
result in only very few data points, which might again
result in incorrect distance values. In order to use common
distance functions, one could reduce a polygon to a single
point that represents this polygon, e.g., the center point.</p>
        <p>However, these simplifications result in distances that may
not necessarily reflect the real distances. Therefore, more
sophisticated distance functions are needed.</p>
        <p>Analysis of event data comprises several tasks. Depending
on the sources of events (structured data, text documents)
and the specific questions different tasks have to be
combined in an analysis pipeline. In addition, such analyses
are often interactive and explorative processes requiring a
flexible combination of a set of powerful extraction and
correlation operators. The whole process is depicted in Fig. 2.</p>
        <p>In the following, we describe a basic set of tasks that our
framework supports by dedicated operators.
3.1</p>
        <p>Prior to any analysis task event information needs to be
extracted from the text documents of a given corpus, such
as Wikipedia or news articles. As an event is assumed to be
composed of a temporal expression describing the “when” of
an event and a geographic expression describing the “where”
of an event, respective event components need to be
determined in a given text and mapped to some standard
format. The function of a temporal tagger is to determine such
temporal information and to map each piece of information
found to a temporal expression. One typically distinguishes
between explicit, implicit and relative information
temporal information. Explicit temporal information refers to a
sequence of tokens that describe an exact date, month in a
year or year, e.g., “April 1, 2015”. Implicit temporal
information often refers to holidays or some named events, such
as “Independence Day 2015” or “Summer Olympics 2012”.</p>
        <p>
          Finally, relative temporal information can only be
determined using the context or document in which the token
sequence appears. For example, in this paper, the string
“last year” would refer to the year 2014. Popular
temporal taggers such as HeidelTime [
          <xref ref-type="bibr" rid="ref31">21</xref>
          ] are able to detect such
information and map them to a standard format, which is
mostly based on the TIMEX3 annotation standard. For
example, the above explicit temporal information “April 1,
2015” would be mapped to the temporal expression
“201504-01”.
        </p>
        <p>Similarly, for geographic information in documents, a
geotagger is employed. Popular tools include GeoNames1 or
Yahoo! Placemaker2. Mapping token sequences found in a text
to some standardized format, however, is less trivial. For
example, most taggers would map the string “Magdeburg” to
a latitude/longitude pair rather than to some complex
polygon description. Also, several geo-taggers also include some
information about the granularity of the geographic
expression based on concept hierarchies.</p>
        <p>Once a temporal tagger and a geo-tagger have extracted
and mapped temporal expressions from a given text, events
are formed. In the most simple case, an event is a pair
consisting of a temporal expression and a geographic expression
found in close text proximity, typically at the sentence level.
1http://www.geonames.org/
2https://developer.yahoo.com/boss/geo/</p>
        <p>All events extracted from a document or document
collection are then stored based on our event model described
in Sect. 2. For each event detected, it describes the
normalized temporal and geographic expression, the granularity of
the expressions, and also some offset information (in what
document and at what position each of the two components
have been determined).
3.2</p>
        <p>Nearest Neighbor Queries.</p>
        <p>A straightforward solution to find correlated, i.e., similar,
events is to find the neighbors of a given reference event.</p>
        <p>Given a set of events E, a reference event er and a
distance function dist, the task is to find the set kNN(er) of
the k nearest events. In the case of our spatio-temporal
event data this requires a single distance measure, which is
usually defined using weights for the spatial and temporal
distances. These weights are necessary, because we cannot
directly combine the spatial distance with the temporal
distance into one distance measure. However, with the weights
we can adjust the impact of the spatial and temporal
distance to the overall distance:</p>
        <p>
          dist(e1, e2) = wg · distg(e1, e2) + wt · distt(e1, e2)
where wt, wg ∈ [
          <xref ref-type="bibr" rid="ref1 ref11 ref35 ref46">0, 1</xref>
          ] and wt + wg = 1.
        </p>
        <p>Skyline.</p>
        <p>In contrast to the Nearest Neighbor search, Skyline queries
do not need weights for the spatial and temporal distance,
which are often difficult to determine. Adapted to our
scenario, the notion of the Skyline algorithm is to find those
events in E that “match” a query event q = htq, gqi best.</p>
        <p>Since we consider two dimension for events, time and space,
it is thus intuitive to employ a skyline-based approach as
there might be events that match tq well but not gq, and
vice versa. A core concept of skylines is the dominance
relationship. The skyline Sq consists of all events that are not
dominated by any other event in E with respect to q:</p>
        <p>Sq = {ei|ei ∈ E ∧ ¬∃ej ∈ E : ej 6= ei ∧ ej q ei}
where q denotes a dominance relationship with ej q ei
meaning that ej is “in closer proximity to q” than ei. Because
the dominance of an event with respect to another event
is determined based on their respective distances to q, the
distance function outlined before comes into play.</p>
        <p>Clustering.</p>
        <p>
          Other than in the two approaches mentioned before, for
clustering, a definition of a reference event is not needed. It
is typically understood as the task of grouping objects based
on the principle of maximizing the intra-class similarity and
minimizing the inter-class similarity. However, there is a
rich diversity in specific definitions of clustering and many
different techniques exist [
          <xref ref-type="bibr" rid="ref1 ref11 ref35 ref46">1</xref>
          ].
        </p>
        <p>The clusters can be formed using distance values between
other events. Thus, events that belong to the same cluster
can be considered to be correlated as they occur around the
same time and place.</p>
        <p>Text documents
Contextual Information
(e.g., GeoNames)</p>
        <p>Vocabularies</p>
        <p>Extraction</p>
        <p>Mapping &amp;
Normalization</p>
        <p>Event
Correlation &amp;</p>
        <p>Resolution
Raw event</p>
        <p>data</p>
        <p>Processing pipeline</p>
        <p>After the events have been extracted from the text
document using the approach as outline in Section 2, the events
are fed into the correlation pipeline. This pipeline is
implemented using the Apache Spark3 platform. However, it can
be easily ported to other platforms like Apache Flink4 or
even Google’s new DataFlow SDK5 if they provide a
Scalabased API. We chose Spark over other MapReduce based
approaches, e.g., Pig, because it provides a very efficient data
structure called resilient distributed datasets (RDD). RDDs
are immutable, in-memory partitioned collections that can
be distributed among the cluster nodes. With the help of
such a data structure, the performance of the computations
is significantly faster than in MapReduce programs that
materialize their intermediate results to disk. Furthermore,
Spark allows to implement iterative models that are needed
for our computations as well as for programs following the
MapReduce paradigm.</p>
        <p>dominates</p>
        <p>SkylineOp</p>
        <p>EventSkyline
RawEventData</p>
        <p>PrepareEvents</p>
        <p>EventData</p>
        <p>GeoDB
distance
reference
event</p>
        <p>CalcDistance
EventDistanceData
time, location
k, weights
TopKOp
EventList</p>
        <p>EventCluster</p>
        <p>distance-func</p>
        <p>ClusteringOp</p>
        <p>The Spark operators represent transformations on these
RDD. Fig. 3 gives an overview of the correlation pipeline,
where the tasks of the operators is described below:
PrepareEvents: This operator transforms a set of raw
(textual) event data into a set of event records ht, qi
conforming to our framework. This means that textual
temporal and geographic properties are normalized into
numerical values, i.e., date/time values and points or
polygons for the spatial descriptions such as names of
cities or locations.
3http://spark.apache.org
4http://flink.apache.org
5https://cloud.google.com/dataflow/</p>
        <p>CalcDistance: This implements a transformation operator
for calculating the geographic and temporal distance
dist of each event of an RDD to a given reference event.</p>
        <p>TopKOp: This operator computes the k nearest neighbors as
a top-k list of events from an input RDD produced by
CalcDistance. Parameters to this operator are k as
well as the weights for the geographic (wg) and
temporal (wt) distance.</p>
        <p>
          SkylineOp: This operator computes the skyline of event
records from an RDD produced by CalcDistance. Our
implementation adopts the grid-based approach using
bitsets described in [
          <xref ref-type="bibr" rid="ref24">14</xref>
          ] for the Spark platform. The
dominance relation can be passed as parameter to the
operator.
        </p>
        <p>
          ClusteringOp: Finding groups of correlated events is
realized by the ClusteringOp operator implementing a
parallel variant of DBSCAN [
          <xref ref-type="bibr" rid="ref19 ref43 ref9">9</xref>
          ] for spatio-temporal
data. Parameters are the standard clustering
parameters ε and MinPts as well as a global distance function
taking both geographic and temporal distances into
account.
        </p>
        <p>TOWARDS AN INTERACTIVE
EXPLO</p>
        <p>RATION OF EVENT CORRELATIONS</p>
        <p>We will use the above processing pipeline to build an
event repository that makes the extracted event data
publicly available as Open Data. As an underlying data
structure we are going to use the Linked Data principle, which
allows for a flexible schema for different types of events and
also makes the information contained in the event itself
machine readable. Furthermore, one can easily add links
between events that have been identified to be correlated and
thus make these correlations also available for querying and
processing. Adding links to other datasets like YAGO2 or
DBpedia will enrich our event repository with even more
useful and broader information that can be used for data
analysis and exploration.</p>
        <p>The event repository will be free to download and will also
be made queryable via web services. Via an API users can
run Spark programs (using operators introduced in Sect. 3)
or SPARQL queries.</p>
        <p>Next to the event repository we plan to develop a data
exploration platform that will allow users to interactively
analyze the data. Different from traditional business
intelligence frameworks that provide only a predefined set of tools
for reporting and visualization, our planned platform allows
very different interaction paradigms. We integrate the idea
of notebooks that was inspired by Mathematica’s
interactive documents and IPython’s (and Jupyter’s) notebooks.</p>
        <p>With the help of such notebooks users can create their own
programs that fit their needs and run them in a managed
cluster environment without the need to set up any hardware
or other software before. The idea of web-based notebooks
allows users to organize text, scripts, and plots on a single
webpage so that all information for data analytics can be
kept in one place.</p>
        <p>For our data exploration tool we chose the Apache
Zeppelin6, because it already has support for Spark programs
and also provides the possibility to visualize script results.</p>
        <p>
          Content in the format of CSV, HTML, or images can
directly be visualized as tables, bar charts, line graphs, and
scatter plots. A notebook in Zeppelin is organized in
paragraphs where each of them can contain and execute a script
of a different (supported) language. On execution, the script
content of a paragraph is sent to the server, which will
forward it to the appropriate interpreter. The interpreter is
chosen by a magic keyword given by the user at the
beginning of the script, e.g. %spark. When the execution has
finished, the interpreter will return the results to the server,
which in turn will publish them on the website. Figure 4
shows a screenshot of a notebook in Zeppelin that executed
a Pig [
          <xref ref-type="bibr" rid="ref26">16</xref>
          ] script and shows the results of that script in a bar
chart.
        </p>
        <p>Zeppelin currently supports shell scripts and Spark
programs written in Scala or Python out of the box and can
6https://zeppelin.incubator.apache.org
also make use of Spark modules like SparkSQL and Spark
Streaming. Although the Spark support lets users create
efficient data analytics programs, it may be hard for a
nonprogrammer to create such programs.</p>
        <p>
          We argue that a declarative approach will be easier to use
for users that are not familiar with the Spark API and the
concepts of their RDDs. For this reason, we integrate a new
interpreter that allows to run Pig scripts. Since our event
repository uses Linked Data, we do not use the conventional
Pig interpreter, but our extended Pig version that allows to
use SPARQL-like features, such as BGP, in Pig scripts [
          <xref ref-type="bibr" rid="ref21 ref45">11</xref>
          ].
        </p>
        <p>
          To do so, we enhanced Pig’s FILTER operator. This allows
the user to easily define queries on the Linked Data sets with
a more powerful language than SPARQL. Though, the triple
structure of the Linked Data concept is not very well suited
for a tuple-based execution environment as it requires a lot
of (self-)joins to reconstruct all details of an entity from the
triples. To solve this issue, in [
          <xref ref-type="bibr" rid="ref21 ref45">11</xref>
          ] we introduced a new triple
bag format (based on the concept introduced in [
          <xref ref-type="bibr" rid="ref22">12</xref>
          ]) that
keeps the flexibility of triples with the convenience of tuples.
        </p>
        <p>We also showed that this format can lead to significant
performance gains.</p>
        <p>However, since Pig programs are compiled into
MapReduce programs, the execution of these programs will take
longer than for Spark programs. Thus, to combine the
advantages of both approaches, in our ongoing work we use
the Pig Latin language and compile it into Spark programs.</p>
        <p>This will allow users to write intuitive data flow scripts
without the need to know a specific API and characteristics of
the underlying platform and to get very efficient programs
that will execute faster than MapReduce programs.</p>
        <p>For our event correlation framework, we employ concepts
developed in different areas of information extraction, event
similarity especially for spatio-temporal similarity, as well
as skylines and clustering algorithms for distributed
environments.</p>
        <p>
          To extract the spatial and temporal information from
textual data, we use concepts that were described, e.g., in [
          <xref ref-type="bibr" rid="ref32 ref33">22,
23</xref>
          ]. In addition to these works, the notions of event
similarity and relationships between events has also been studied
in the context of social media, e.g., [
          <xref ref-type="bibr" rid="ref13 ref27 ref28 ref3 ref37 ref48">3, 17, 18</xref>
          ].
        </p>
        <p>
          Our correlation operators mainly focus on Skylines and
clustering. Among the numerous techniques that build on
the concept of skyline queries [
          <xref ref-type="bibr" rid="ref15 ref39 ref5 ref50">5</xref>
          ], there also has been some
work that study skylines for geographic and uncertain or
probabilistic data. These include spatial skyline queries [
          <xref ref-type="bibr" rid="ref29 ref30">19,
20</xref>
          ] where no temporal aspects are considered for data points.
        </p>
        <p>
          To compute skylines for large datasets, new algorithms
have been proposed that allow the computation in
MapReduce environments. Here, an important challenge is to
partition the data in a way, that the partitioning itself is efficient
and data is distributed to all nodes equally to ensure that
all nodes get approx. the same workload to avoid one node
having to do all the work while the others are idle. In [
          <xref ref-type="bibr" rid="ref24">14</xref>
          ]
an approach using a grid based partitioning is introduced,
and [
          <xref ref-type="bibr" rid="ref16 ref40 ref51 ref6">6</xref>
          ] shows an angular based partitioning approach.
        </p>
        <p>
          For clustering, density based algorithms like DBSCAN [
          <xref ref-type="bibr" rid="ref19 ref43 ref9">9</xref>
          ]
are chosen if the number of clusters is not known apriori. For
dealing with spatio-temporal data an extension to DBSCAN
has been proposed in [
          <xref ref-type="bibr" rid="ref14 ref38 ref4 ref49">4</xref>
          ], that uses two ε parameters (one for
spatial and one for temporal distance). To run the clustering
algorithms in a distributed environment for MapReduce, we
rely on concepts developed in [
          <xref ref-type="bibr" rid="ref18 ref25 ref42 ref52 ref53 ref8">15, 8</xref>
          ].
7. SUMMARY
        </p>
        <p>In this paper we presented our approach for an event
correlation framework based on Apache Spark. The framework
provides operators for importing data as well as for
clustering, skylines and k nearest neighbor queries. We chose
Apache Zeppelin for our exploration tool to allow an
incremental creation of scripts and an immediate visualization of
results.</p>
        <p>Acknowledgements
This work was funded by the German Research Foundation
(DFG) under grant no. SA782/22.</p>
        <p>REFERENCES
Cornelius A. Ludmann</p>
        <p>Universität Oldenburg</p>
        <p>Escherweg 2
26121 Oldenburg, Germany
cornelius.ludmann@unioldenburg.de</p>
        <p>Marco Grawunder
Universität Oldenburg</p>
        <p>Escherweg 2
26121 Oldenburg, Germany
marco.grawunder@unioldenburg.de</p>
        <p>H.-Jürgen Appelrath</p>
        <p>Universität Oldenburg</p>
        <p>Escherweg 2
26121 Oldenburg, Germany
appelrath@unioldenburg.de
ZUSAMMENFASSUNG
In dieser Arbeit wird eine flexible, erweiterbare und
doma¨nenunbha¨ngige Integration von Online-RecSys-Funktionen in
ein Datenstrommanagementsystem (DSMS) vorgestellt.
Dazu werden neue logische Operatoren eingefu¨hrt, mit der
Nutzer eines DSMS auf einer abstrakten Ebene
RecSys-Funktionen nutzen ko¨nnen. Des Weiteren wird eine beispielhafte
Realisierung durch physische Operatoren vorgestellt, wie sie
aus den logischen Operatoren durch Transformationsregeln
erzeugt werden kann. Durch dieses Konzept ko¨nnen
Benutzer ein RecSys mit Hilfe einer Anfragesprache auf die
doma¨nenspezifischen Bedu¨rfnisse anpassen und mit anderen
Funktionen eines DSMS kombinieren. Des Weiteren bringt
ein DSMS einige Eigenschaften (z. B.
Anfrageplanoptimierung, Fragmentierung, Scheduling etc.) mit, von denen ein
Online-RecSys profitieren kann. Die Flexibilita¨t eines DSMS
ermo¨glicht den Vergleich und die Evaluation verschiedener
RecSys-Algorithmen durch den Benutzer.</p>
        <p>Keywords
recommender system, collaborative filtering, data stream
management system, stream processing</p>
        <p>EINLEITUNG</p>
        <p>Recommender-Systeme (RecSys) haben das Ziel, das
Interesse eines Benutzers an einem bestimmten Objekt zu
scha¨tzen, um dem Benutzer aus einer großen Menge an
Objekten die subjektiv interessantesten Objekte zu empfehlen.</p>
        <p>Eine ga¨ngige Methode ist das modellbasierte, kollaborative
Filtern (CF), bei dem aufgrund von bekannten
Objektbewertungen verschiedener Benutzer (z. B.
Produktbewertungen) ein Modell angelernt wird, mit dem gescha¨tzt werden
kann, wie ein Benutzer unbekannte Objekte bewerten
wu¨rde. Durch die Entwicklung von Online-Algorithmen fu¨r das
CF ko¨nnen neue Bewertungen von Benutzern in die
Modelle integriert werden, ohne dass das Modell von Grund
auf neu gelernt werden muss. Das ermo¨glicht eine neue
Betrachtung des RecSys-Problems: Wa¨hrend bisherige
Methoden das RecSys-Problem als periodisches Anlernen eines
Modells basierend auf einen statischen und endlichen Datensatz
betrachten, kann durch Online-Algorithmen das Problem
als Verarbeitung von Bewertungs-Ereignissen eines
kontinuierlichen und potenziell unendlichen Datenstroms
betrachtet werden. Das hat den Vorteil, dass durch die sofortige
Integration neuer Bewertungsinformationen nicht nur das
grundsa¨tzliche Interesse, sondern auch das aktuelle
Interesse des Benutzers beru¨cksichtigt werden kann.</p>
        <p>Zur Konzeption eines datenstrombasierten RecSys
schlagen wir vor, auf ein anwendungsunabha¨ngiges und
generisches Datenstrommanagementsystem (DSMS)
aufzubauen. Die Eingabedaten werden als kontinuierlich auftretende,
zeitannotierte Ereignisse eines potenziell unendlichen
Datenstroms betrachtet. Das DSMS berechnet mit Hilfe von
Datenstrom-Operatoren und Anfragepla¨nen kontinuierlich ein
RecSys-Modell. Dieser Ansatz hat folgende Vorteile:</p>
        <p>(1) Die Modellierung der Daten als Datenstro¨me kommt
dem realen Einsatz eines RecSys na¨her als die Verwendung
von statischen Datensa¨tzen.</p>
        <p>(2) Ein DSMS bringt als Grundlage fu¨r ein RecSys bereits
Konzepte und Operatoren zur effizienten Verarbeitung von
Datenstro¨men mit temporal koha¨renten Ereignissen mit.</p>
        <p>(3) In einem DSMS kann ein RecSys in logische Teile
zerlegt werden, welche jeweils durch einen Operator
repra¨sentiert werden. Das ermo¨glicht eine flexible und auf die
konkrete Anwendung angepasste Komposition von
RecSys-Operatoren mit Standardoperatoren, z. B. fu¨r die Datenvor- bzw.
-nachbearbeitung, Kontextmodellierung etc.</p>
        <p>(4) Eine Aufgabe, zum Beispiel das Modelllernen, kann
durch austauschbare Operatoren mit gleicher Semantik aber
unterschiedlicher Implementierung realisiert werden. Das
ermo¨glicht den Vergleich sowie den bedarfsgerechten Einsatz
von verschiedenen Lernalgorithmen.</p>
        <p>Ziel der Arbeit ist die Einfu¨hrung eines generischen
Konzepts zur Integration von RecSys-Funktionen in ein DSMS.</p>
        <p>Dazu fu¨hren wir im folgenden Abschnitt zuna¨chst die
Grundlagen ein und stellen in Abschnitt 3 verwandte Arbeiten
vor. Danach beschreiben wir die logischen Operatoren fu¨r
die Umsetzung eines RecSys (Abschnitt 4) und stellen eine
Transformation in physische Operatoren vor (Abschnitt 5).</p>
        <p>In Abschnitt 6 diskutieren wir anschließend einige
Entscheidungen unseres Konzepts und stellen Alternativen vor. Zum
Schluss pra¨sentieren wir in Abschnitt 7 unsere prototypische
Implementierung in ein Open-Source-DSMS und zeigen die
Machbarkeit durch eine Evaluation, bevor wir mit einer
Zusammenfassung und einem Ausblick die Arbeit beenden.</p>
        <p>GRUNDLAGEN</p>
        <p>Ein RecSys hat die Aufgabe einem aktiven Benutzer u0 ∈
U eine Menge an Objekten aus I (Menge aller Objekte) zu
empfehlen, fu¨r die dieser sich interessiert
(Empfehlungsmenge). Dazu scha¨tzt das RecSys fu¨r jedes zur Empfehlung
infrage kommende Objekt eine Bewertung rˆ ∈ R, welche das
Interesse des Benutzers an dem Objekt quantifiziert. Die
Menge der infrage kommenden Objekte wird als Menge der
Empfehlungskandidaten bezeichnet. Die Empfehlungsmenge
wird durch die K Objekte der Empfehlungskandidaten
gebildet, die die ho¨chsten Bewertungen haben (Top-K-Menge).</p>
        <p>Um die Bewertung eines Objekts fu¨r einen Benutzer
bestimmen zu ko¨nnen, ermittelt das RecSys (z. B. mit der
MatrixFaktorisierung) eine Anna¨herung fˆR an eine wahre aber
unbekannte Bewertungsfunktion fR : U × I → R.</p>
        <p>Seit den 1970er/1980er Jahren sind relationale
Datenbankmanagementsysteme (DBMS) die bedeutendste Technik,
Daten dauerhaft zu speichern. Ein DBMS abstrahiert von der
Komplexita¨t der Datenspeicherung und sorgt fu¨r eine
effiziente Verarbeitung von komplexen Anfragen, um Daten zu
speichern, zu lesen, zu aktualisieren und zu lo¨schen. DBMS
sind allerdings nicht mit dem Ziel entwickelt worden,
kontinuierlich erzeugte Daten zu verarbeiten. Diese Lu¨cke
schließen DSMS, die auf die fortlaufende Verarbeitung von
Datenstro¨men ausgelegt sind.</p>
        <p>Wa¨hrend ein DBMS wahlfreien Zugriff auf gespeicherte
Daten hat, erha¨lt ein DSMS die Daten von einem
kontinuierlichen Datenstrom (potenziell unendliche Sequenz von
Datenstromelementen). Die Datenstromelemente werden von
einer aktiven Quelle erzeugt und an das DSMS u¨bertragen.</p>
        <p>
          Ein DSMS hat keine Kontrolle u¨ber die Reihenfolge, in der
die Datenstromelemente von der Quelle gesendet werden –
weder innerhalb eines Datenstroms, noch zwischen
verschiedenen Datenstro¨men. Sobald ein Element verarbeitet ist,
wird es verworfen oder archiviert. Das DSMS kann nicht
erneut auf bereits verarbeitete Elemente zugreifen, es sei denn,
sie werden explizit im Arbeitsspeicher gehalten (one-pass
paradigma). Dies kann allerdings nur fu¨r einen begrenzten Teil
der Datenstromelemente geschehen, da der Speicher im
Gegensatz zum Datenstrom in der Gro¨ße begrenzt ist [
          <xref ref-type="bibr" rid="ref14 ref38 ref4 ref49">4</xref>
          ].
        </p>
        <p>
          Die Verarbeitung der Daten in einem DBMS erfolgt
u¨blicherweise mit Hilfe von Einmal-Anfragen. Diese werden
einmalig auf aktuellem Datenbestand ausgefu¨hrt und der
anfragende DBMS-Benutzer erha¨lt einmalig eine Antwort. Bei
der Verarbeitung von kontinuierlichen Datenstro¨men stellt
der Benutzer eine kontinuierliche Anfrage. Diese wird
einmalig dem DSMS u¨bergeben und produziert kontinuierlich
Ergebnisse [
          <xref ref-type="bibr" rid="ref14 ref38 ref4 ref49">4</xref>
          ]. Zur Verarbeitung von relationalen
Datenstro¨men kann ein DSMS eine datenstrombasierte Variante der
relationalen Algebra einsetzen. Eine kontinuierliche
Anfrage wird, wie bei Anfragen in DBMSs, in einer
Anfragesprache formuliert. Beispiele fu¨r DSMS-Anfragesprachen sind die
SQL-a¨hnliche Sprache CQL [
          <xref ref-type="bibr" rid="ref13 ref3 ref37 ref48">3</xref>
          ] und die PQL [
          <xref ref-type="bibr" rid="ref12 ref2 ref36 ref47">2</xref>
          ].
        </p>
        <p>
          Eine Anfrage wird von einem DSMS in einen
Anfrageplan u¨bersetzt. Dieser besteht aus Operatoren, die durch
Warteschlangen miteinander verbunden sind. Ein
Anfrageplan kann als gerichteter Graph interpretiert werden,
dessen Knoten die Operatoren und Kanten die Warteschlangen
darstellen. Die Ausfu¨hrung der Operatoren koordiniert ein
Scheduler [
          <xref ref-type="bibr" rid="ref14 ref38 ref4 ref49">4</xref>
          ]. Zu einer Anfrage wird ein logischer
Anfrageplan, bestehend aus logischen Operatoren, erzeugt. Auf
einem logischen Anfrageplan ko¨nnen Optimierungen
ausgefu¨hrt werden (z. B. Vera¨nderung der
Operatorreihenfolge), ehe er in einen physischen Anfrageplan mit physischen
Operatoren u¨berfu¨hrt wird. Physische Operatoren
enthalten konkrete Implementierungen fu¨r die Verarbeitung der
Daten. Das DSMS wa¨hlt zu jedem logischen Operator ein
oder mehrere physische Operatoren, die fu¨r die Operation
am geeignetsten sind.
        </p>
        <p>VERWANDTE ARBEITEN</p>
        <p>
          Verschiedene Vero¨ffentlichungen u¨ber inkrementelle oder
online Algorithmen fu¨r CF (z. B. [
          <xref ref-type="bibr" rid="ref10 ref20 ref21 ref44 ref45">10, 11</xref>
          ]) zeigen wie neue
Lerndaten in CF-Modelle integriert werden ko¨nnen, ohne
dass das Modell komplett neu gelernt werden muss.
Diese Algorithmen bieten die Basis fu¨r eine
datenstrombasierte Verarbeitung von Bewertungsdaten fu¨r RecSys. Die
Arbeit von Diaz-Aviles et al. [
          <xref ref-type="bibr" rid="ref17 ref41 ref7">7</xref>
          ] stellt eine Methode zur
datenstrombasierten Verarbeitung von Bewertungsdaten zum
Lernen eines Matrix-Faktorisierungs-Modells vor. Dazu wird
das Modell mit Daten aus einem Reservoir aktualisiert,
welches eine Stichprobe des Datenstroms vorha¨lt. Im Gegensatz
zu diesen Arbeiten stellen wir keinen neuen Algorithmus vor,
sondern setzen den Fokus auf die Komposition eines flexiblen
RecSys mithilfe von Datenstromoperatoren, in denen diese
Algorithmen als Operatoren integriert werden ko¨nnen.
        </p>
        <p>
          Einige Vero¨ffentlichungen nutzen Frameworks zur
Implementierung eines RecSys, die bei der Entwicklung von
datenstrombasierten Systemen unterstu¨tzen. Zum Beispiel setzt
Ali et al. [
          <xref ref-type="bibr" rid="ref1 ref11 ref35 ref46">1</xref>
          ] Apache Storm ein, um einen CF-Algorithmus
zu realisieren. Das datenstrombasierte
Data-Mining-Framework Massive Online Analysis (MOA) [
          <xref ref-type="bibr" rid="ref15 ref39 ref5 ref50">5</xref>
          ] ermo¨glicht die
Evaluation unter anderem von datenstrombasierten
RecSysAlgorithmen. Im Gegensatz zu unserem Konzept bieten
diese Arbeiten keinen anwendungsunabha¨ngigen, erweiterbaren
und flexiblen Ansatz, der auf die Komposition von
Datenstromoperatoren setzt. Unser Ansatz kann außerdem von
diversen DSMS-Funktionen profitieren.
        </p>
        <p>
          Mit StreamRec stellen Chandramouli et al. [
          <xref ref-type="bibr" rid="ref16 ref40 ref51 ref6">6</xref>
          ] einen
Ansatz zur Nutzung eines DSMS fu¨r ein RecSys vor. Dort
wird das DSMS Microsoft StreamInsight genutzt. Im
Gegensatz zu unserem Konzept werden in StreamRec
ausschließlich Basisoperatoren eines DSMS eingesetzt und es ist auf
die Berechnung von Objekta¨hnlichkeiten zur Bestimmung
der Empfehlungsmenge beschra¨nkt. Unser Konzept verfolgt
einen generischeren Ansatz, der auch die Integration von
modellbasierten Lernalgorithmen erlaubt und durch logische
RecSys-Operatoren eine logische Abstraktionsebene fu¨r den
Nutzer des DSMS bietet.
        </p>
        <p>LOGISCHE OPERATORSICHT</p>
        <p>Betrachtet man die Ein- und Ausgabedaten eines
RecSys, so kann man diese als folgende Datenstro¨me
auffassen: Erstens u¨bertra¨gt die Benutzeranwendung
BenutzerObjekt-Bewertungs-Tripel (u, i, r) fu¨r jede Bewertung, die
ein Benutzer vornimmt. Zweitens werden von einem
Benutzer u Empfehlungen angefordert (z. B. dann, wenn ein
Benutzer die Empfehlungsseite der Benutzeranwendung
o¨ffnet; im folgenden Empfehlungsanforderungen – engl.
Request for Recommendations, RfR – genannt). Drittens
sendet das RecSys eine Empfehlungsmenge zuru¨ck an die
Benutzeranwendung. Des Weiteren ko¨nnen die Eingabedaten</p>
        <p>Learning</p>
        <p>Requests for
Recommendations
Learning Data
Window
Recommending
Recomm. Candidates Recommend.</p>
        <p>Candidates</p>
        <p>Abbildung 1: Logische Sicht auf die Operatoren eines DSMS-basierten RecSys
um ein Benutzerfeedback erga¨nzt werden. Im folgenden
erwarten wir das Benutzerfeedback in der selben Form wie
neue Bewertungen (u-i-r-Tripel). Mo¨chte man das RecSys
kontinuierlich evaluieren, so erha¨lt man einen zusa¨tzlichen
Ausgabedatenstrom mit Fehlerwerten, der den Modellfehler
angibt.</p>
        <p>Zwischen den Ein- und Ausgabedatenstro¨men
verarbeiten Datenstromoperatoren einer oder mehrerer Anfragen die
Daten. Um ein RecSys mit Hilfe eines DSMS zu realisieren,
muss mit Hilfe einer Anfrage aus den Eingabedatenstro¨men
(u-i-r-Tripel und Empfehlungsanforderungen) als Antwort
ein Datenstrom an Empfehlungsmengen erzeugt werden, der
fu¨r jede Empfehlungsanforderung eine aktuelle und
personalisierte Liste an Empfehlungen entha¨lt.</p>
        <p>Die Anfrage fu¨r ein RecSys haben wir in logische
Operatoren zerlegt, die jeweils einen Teil der RecSys-Funktionalita¨t
u¨bernehmen. Diese Operatoren bilden eine
Abstraktionsebene, sodass der DSMS-Benutzer diese in der Anfrage nutzen
kann, ohne die genaue Umsetzung durch physische
Operatoren kennen zu mu¨ssen. Wo dies mo¨glich ist, werden diese
Operatoren bei der Transformation zu physischen
Operatoren durch vorhandene Operatoren ersetzt.</p>
        <p>Abbildung 1 zeigt eine U¨ bersicht u¨ber die logischen
Operatoren und wie diese in einer Beispielanfrage
zusammenha¨ngen. Auf der linken Seite sehen wir die
Eingabedatenstro¨me und auf der rechten Seite die Ausgabedatenstro¨me.</p>
        <p>Die dazwischenliegenden Operatoren ko¨nnen in drei
Kategorien eingeteilt werden: Operatoren zum Lernen des
RecSysModells (mittig), zum Empfehlen von Objekten (unten) und
zum Evaluieren (oben).</p>
        <p>Die Anfrage besteht aus folgenden logischen Operatoren:
Window: Ein zeitbasiertes Fenster (umgesetzt durch einen
WINDOW-Operator) ermo¨glicht, die Gu¨ltigkeit der
Bewertungsdaten zu beschra¨nken. Das kann sinnvoll sein, um ein
Modell anzulernen, welches sich auf die neuesten Daten
beschra¨nkt und a¨ltere Daten verwirft (z. B. um Concept Drifts
zu beru¨cksichtigen). Zusa¨tzlich beschra¨nkt es die Menge der
Bewertungsdaten, die im Speicher gehalten werden mu¨ssen.</p>
        <p>Sollen alle Daten fu¨r immer behalten werden, so kann dieser
Operator entfernt werden.</p>
        <p>Train RecSys Model: Dieser Operator lernt aus den
Bewertungsdaten ein Modell an. Wenn neue Daten hinzugefu¨gt
werden gibt es ein aktualisiertes Modell aus. Das Modell ist
fu¨r eine bestimmte Zeitspanne gu¨ltig, sodass zu jedem
Zeitpunkt genau ein Modell fu¨r die Vorhersage der Bewertung
zusta¨ndig ist.</p>
        <p>Recomm. Candidates: Fu¨r jede Empfehlungsanforderung
bestimmt dieser Operator die Empfehlungskandidaten. Diese
sind in der Regel alle Objekte, die von dem anfordernden
Benutzer noch nicht bewertet wurden.</p>
        <p>Predict Rating: Dieser Operator wird sowohl fu¨r die
Bestimmung der Empfehlungsmenge als auch fu¨r die
Evaluation genutzt. Er scha¨tzt die Bewertung des Benutzers fu¨r
jeden Empfehlungskandidaten bzw. fu¨r jedes Testtupel ab.</p>
        <p>Mit diesem Operator wird sichergestellt, dass genau das
Model genutzt wird, welches zum gleichen Zeitpunkt wie die
Empfehlungsanforderung bzw. das Testtupel gu¨ltig ist. Das
stellt eine deterministische Verarbeitung der Daten sicher,
was insbesondere fu¨r die Evaluation von Vorteil ist.</p>
        <p>Recommend: Aus den bewerteten Empfehlungskandidaten
werden die Objekte ausgewa¨hlt, die dem Benutzer
empfohlen werden sollen. Das sind in der Regel die K Objekte mit
den ho¨chsten, gescha¨tzten Bewertungen (Top-K-Menge).
Eine weitere Mo¨glichkeit besteht darin, nur Elemente mit einer
minimalen Bewertung zu beru¨cksichtigen.</p>
        <p>Extract Test Data: Um das RecSys zu evaluieren, gibt
dieser Operator neben den Lerndaten auch Testdaten aus. Eine
mo¨gliche Implementierung filtert 10 % der Bewertungsdaten
als Testdaten aus und leitet die restlichen Daten als
Lerndaten an den Modelllerner weiter.</p>
        <p>Test Prediction: Dieser Operator implementiert eine
Evaluationsmetrik, z. B. Root Mean Square Error (RMSE).
Dabei vergleicht er die wahren Bewertungen aus den Testdaten
mit den gescha¨tzten Bewertungen zu den Testdaten oder die
wahre Position in einem Ranking mit der Position aufgrund
der gescha¨tzten Bewertungen. Der daraus resultierende
Modellfehler wird zu einem gleitenden Durchschnittswert oder
einem gesamten Durchschnittswert aggregiert.
5. PHYSISCHE OPERATORSICHT</p>
        <p>Die logischen Operatoren werden durch
Transformationsregeln in physische Operatoren u¨berfu¨hrt. Abbildung 2 zeigt
ein Beispiel fu¨r einen physischen Anfrageplan, der aus einer
Anfrage generiert wird, der die logischen Operatoren nutzt.</p>
        <p>Die linke Spalte entha¨lt die Operatoren fu¨r die Evaluation
(entspricht dem oberen Teil von Abbildung 1), die mittlere
Spalte die Operatoren fu¨r das Lernen des Modells (mittlerer
Teil von Abbildung 1) und die rechte Spalte die
Operatoren fu¨r die Berechnung der Empfehlungsmenge (unterer Teil
von Abbildung 1). Dabei sind die Operatoren, die zu einem
logischen Operator aus Abbildung 1 geho¨ren, durch ein
gestricheltes Ka¨stchen zusammengefasst. Wo es mo¨glich ist,</p>
        <p>Test
Prediction</p>
        <p>Predict
Rating
Extract</p>
        <p>Test
Data
Bind</p>
        <p>Input
Stream
send
RMSE
map
aggregate
time
window
map
predict
rating
cross
product
ITTT
access
ratings str.</p>
        <p>
          Abbildung 2: Physischer Operatorplan
werden die logischen Operatoren durch vorhandene
physische Basisoperatoren (Operatoren mit durchgezogener
Linie) implementiert. Neue, speziell fu¨r die RecSys-Funktion
implementierte physische Operatoren (mit gestrichelter,
dicker Linie) sind:
– ITTT: Impl. der Evaluationsmethode ITTT [
          <xref ref-type="bibr" rid="ref18 ref42 ref8">8</xref>
          ].
– BRISMF: Impl. des Lernalgorithmus’ BRISMF [
          <xref ref-type="bibr" rid="ref21 ref45">11</xref>
          ].
– RECOMM CAND: Empfehlungskandidaten.
– PREDICT RATING: Scha¨tzung von Bewertungen.
        </p>
        <p>Im folgenden wird die Verarbeitung der
Datenstromelemente anhand des physischen Anfrageplans aus Abbildung 2
na¨her erla¨utert. Dazu werden die drei Teilgraphen Lernen
des Modells, Bestimmung der Empfehlungsmenge und
Berechnung des Modellfehlers in jeweils einem Abschnitt
behandelt.</p>
        <p>Von Bewertungsdaten zu Modellen
Der ACCESS-Operator ist fu¨r die Anbindung von
Datenstro¨men zusta¨ndig. Mit ihm werden das Transportprotokoll
sowie das Datenformat festgelegt. Aus jedem ankommenden
Datenstromelement wird ein Tupel in der Form (u, i, r)
erzeugt, das die Benutzer-ID u, die Objekt-ID i sowie die
Bewertung r des Benutzers u fu¨r das Objekt i entha¨lt.
Außerdem wird der Gu¨ltigkeitszeitraum des Datenstromelements
festgelegt. Gibt die Datenquelle einen Zeitstempel mit, so
kann dieser als Startzeitpunkt des Gu¨ltigkeitsintervalls
genutzt werden. Andernfalls wird der aktuelle Zeitpunkt als
Startzeitpunkt genutzt. Bewertungsdaten sind initial
unendlich gu¨ltig und erhalten somit als Endzeitpunkt des
Gu¨ltigkeitsintervals den Wert ∞.</p>
        <p>Der Operator ITTT implementiert die
Evaluationsmethode Interleaved Test-Than-Train (ITTT), die aus den
Bewertungsdaten Tupel als Lern- und Testdaten erzeugt. Als
Lerndaten werden alle Bewertungsdaten ohne A¨ nderung
weitergeleitet. Auf die Erzeugung der Testdaten wird spa¨ter bei
der Beschreibung der Evaluation na¨her eingegangen.</p>
        <p>Ein TIME-WINDOW-Operator beschra¨nkt die Gu¨ltigkeit
der Lerndaten. So kann zum Beispiel festgelegt werden, dass
die Lerndaten in dem BRISMF-Operator nur fu¨r 30 Tage lang</p>
        <p>send
recomm set
top K
select
predict
rating
cross
product
recomm
cand
cross
product
time
window
access
RfR stream
Recommend
Predict
Rating
Recomm.</p>
        <p>
          Candidates
beru¨cksichtigt werden sollen. Der BRISMF-Operator
implementiert den Lernalgorithmus BRISMF [
          <xref ref-type="bibr" rid="ref21 ref45">11</xref>
          ], der ein Modell
mit den neuen Daten aktualisiert. Er legt das
Gu¨ltigkeitsintervall des Modells fest, sodass zu jedem Zeitpunkt genau
ein Modell gu¨ltig ist. Der Operator muss sicherstellen, dass
alle Lerndaten beru¨cksichtigt wurden, die im
Gu¨ltigkeitsintervall des Modells gu¨ltig sind.
        </p>
        <p>Von Empf.-Anforderungen zu Empf.-Mengen
Zu jeder Empfehlungsanforderung eines Benutzers u soll
eine Menge an Empfehlungen ermittelt werden. Dazu bindet
ein ACCESS-Operator den Eingabedatenstrom mit den
Anforderungen und ein TIME-WINDOW-Operator setzt deren
Gu¨ltigkeit. Das Gu¨ltigkeitsintervall wird so gesetzt, dass
diese nur zum Zeitpunkt der Empfehlungsanforderung gu¨ltig
sind und nach Verarbeitung direkt verworfen werden.</p>
        <p>Zur Bestimmung der Empfehlungskandidaten werden der
Datenstrom der Empfehlungsanforderungen und der
Datenstrom der Modelle, der von dem BRISMF-Operator erzeugt
wird, mit einem Kreuzprodukt-Operator zusammengefu¨hrt.</p>
        <p>Dieser Operator beru¨cksichtigt die Gu¨ltigkeitsintervalle,
sodass nur Datenstromelemente mit u¨berlappenden
Intervallen zusammengefu¨hrt werden. Da der BRISMF-Operator
Modelle in der Art erzeugt, so dass zu jedem Zeitpunkt genau
ein Modell gu¨ltig ist, wird jeder Empfehlungsanforderung
genau ein Modell zugeordnet. Der RECOMM-CAND-Operator
bekommt anschließend die Anforderungen mit den
passenden Modellen und erzeugt einen Datenstrom, der fu¨r jedes
in dem Modell nicht bewertete Objekt i des Benutzers u ein
Tupel (u, i) mit dem anfordernden Benutzer und dem nicht
bewerteten Objekt entha¨lt.</p>
        <p>Im na¨chsten Schritt wird fu¨r jeden
Empfehlungskandidaten eine Bewertung gescha¨tzt. Dazu wird mit einem
Kreuzprodukt-Operator zu jedem Empfehlungskandidaten das
temporal passende Modell zugeordnet. Der
PREDICT-RATINGOperator nutzt nun das jeweilige Modell zu Bestimmung
der Scha¨tzung und gibt zu jedem Empfehlungskandidaten
ein Tupel (u, i, rˆ) aus, welches den Benutzer u, den
Empfehlungskandidaten i und die gescha¨tzte Bewertung rˆ entha¨lt.</p>
        <p>Anschließend werden aus den bewerteten
Empfehlungskandidaten die Objekte fu¨r die Empfehlungsmenge
ausgewa¨hlt. In der Beispielanfrage in Abbildung 2 werden dazu
mit einem SELECT-Operator die Kandidaten entfernt, deren
gescha¨tzte Bewertung kleiner als ein bestimmter Schwellwert
ist (z. B. 3,5). Von den verbleibenden Kandidaten werden
mit dem TOP-K-Operator die K Objekte mit den gro¨ßten
Bewertungen ausgewa¨hlt (z. B. K = 8) und an den
Ausgabedatenstrom u¨bergeben.</p>
        <p>Von Bewertungsdaten zu Modellfehlerwerten
Fu¨r die Evaluation werden vom ITTT-Operator Testdaten
erzeugt. Ein Testdatum (u, i, r) wird als ein
Empfehlungskandidat i fu¨r einen anfragenden Benutzer u betrachtet und
vom PREDICT-RATING-Operator um eine gescha¨tzte
Bewertung rˆ erweitert. Die PREDICT-RATING-Operatoren fu¨r
die Berechnung der Empfehlungen und fu¨r die
Evaluation haben die gleiche Implementierung: Sie erhalten vom
vorgelagerten CROSS-PRODUCT-Operator ein Tupel,
welches einen Benutzer u, ein Objekt i, ein Modell fˆ und evtl.
beliebig weitere Attribute besitzt. Die Ausgabe ist in
beiden Fa¨llen ein Tupel mit dem Benutzer u, dem Objekt i,
der gescha¨tzten Bewertung rˆ durch Anwendung des Modells
rˆ = fˆ(u, i) und alle weiteren Attribute des Eingabetupels
(ohne das Modell fˆ, welches nach der Berechnung von rˆ im
folgenden Verlauf nicht mehr beno¨tigt wird). Fu¨r die
Evaluation za¨hlt zu den weiteren Attributen des Eingabetupels
insbesondere die wahre Bewertung r, die auch im
Ausgabetupel enthalten ist. Somit gibt der
PREDICT-RATING-Operator fu¨r die Evaluation ein Tupel (u, i, r, rˆ) aus.</p>
        <p>Im nachfolgenden Verlauf wird nun ein Fehlerwert
berechnet. In unserer Beispielanfrage wird dazu ein gleitender
RMSE berechnet. Dazu berechnet zuerst ein MAP-Operator den
quadratischen Fehler se = (r − rˆ)2 der Scha¨tzung.
Anschließend wird mit einem TIME-WINDOW-Operator die
gleitende Zeitspanne festgelegt, u¨ber die der Fehlerwert aggregiert
werden soll (z. B. die letzten 24 Stunden). Der nachfolgende
AGGREGATE-Operator berechnet das arithmetische Mittel
der quadratischen Fehler, die sich in einem
Aggregationsfenster befinden (z. B. alle Werte der letzten 24 Stunden).</p>
        <p>Abschließend berechnet der letzte MAP-Operator die
Quadratwurzel aus dem aggregierten Fehlerwert, welches dem
RMSE u¨ber das Aggregationsfenster entspricht. Diese
Werte werden an den Ausgabedatenstrom u¨bergeben.</p>
        <p>Fu¨r die Evaluation ist es wichtig, dass zum Testen des
Modells das zu testende Datum nicht im Modell enthalten ist.</p>
        <p>
          Eine einfache Mo¨glichkeit dies sicherzustellen ist die
Trennung von Test- und Lerndaten. Dies kann durch einen
ROUTE-Operator realisiert werden, der zufa¨llig 10 % der Daten
als Testdaten und die restlichen Daten als Lerndaten
weiterleitet. Der hier vorgestellte Operator implementiert
stattdessen die Evaluationsmethode Interleaved Test-Than-Train
[
          <xref ref-type="bibr" rid="ref18 ref42 ref8">8</xref>
          ]. Mit dieser werden alle Daten sowohl zum Lernen als auch
zum Testen genutzt. Dabei wird ein Testdatum zuerst zum
Testen des Modells genutzt und anschließend in das Modell
integriert. Das hat die Vorteile, dass mehr Testdaten genutzt
werden und keine Daten fu¨r das Lernen des Modells verloren
gehen. Letzteres ist insbesondere wichtig, wenn ein RecSys
im laufenden Betrieb evaluiert werden soll (in dem Fall
wu¨rde das aussortieren von Daten als Testdaten die Scha¨tzungen
fu¨r die realen Benutzer beeinflussen) und wenn temporale
Zusammenha¨nge in den Daten beim Modelllernen
beru¨cksichtigt werden sollen (in dem Fall wu¨rden fehlende Daten
ggf. erschweren, die temporalen Zusammenha¨nge zu
erkennen).
        </p>
        <p>Um sicherzustellen, dass zur Scha¨tzung der Bewertung
eines jeden Testdatums ein Modell genutzt wird, dass nicht
das Testdatum, aber ansonsten so viele Lerndaten wie
mo¨glich entha¨lt, wird das Gu¨ltigkeitsintervall des Testdatums
vom ITTT-Operator angepasst. Ist ein Lerndatum im
Gu¨ltigkeitsintervall [ts, te) mit dem Startzeitpunkt ts und dem
Endzeitpunkt te gu¨ltig, so wird die Gu¨ltigkeit des
Testdatums so gesetzt, dass dieses ungu¨ltig wird, gerade bevor das
¨aquivalente Lerndatum gu¨ltig wird. Bei einem Lerndatum
von einem Gu¨ltigkeitsintervall [45, ∞) erha¨lt das Testdatum
das Gu¨ltigkeitsintervall [44, 45). Es ist genau wie die
Empfehlungsanforderungen nur ein Zeitpunkt gu¨ltig: zum
Zeitpunkt t1 = 44 ist es gu¨ltig und zum Zeitpunkt t2 = 45
bereits ungu¨ltig (wegen des halboffenes Intervalls). Wie
bereits weiter oben gefordert, soll ein Modell genau alle
Lerndaten enthalten, welche im Gu¨ltigkeitsintervall des Modells
ebenfalls gu¨ltig sind. Der BRISMF-Operator erzeugt also ein
Modell mit dem Lerndatum, welches ab t2 = 45 gu¨ltig ist
und das vorherige Modell wird somit zum Zeitpunkt t2 = 45
ungu¨ltig. Der CROSS-PRODUCT-Operator vor dem
PREDICT-RATING-Operator der Evaluation fu¨hrt nun unter
Beru¨cksichtigung der Gu¨ltigkeitsintervalle Testdatum und
MoWindow
Recomm. Candidates</p>
        <p>Recommend
Abbildung 3: Gegenu¨berstellung: Drei Operatoren
vs. ein Operator fu¨r die Bewertungssch¨atzung
dell zusammen. Da sich die Gu¨ltigkeitsintervalle des
Testdatums und des Modells, welches das zum Testdatum
a¨quivalente Lerndatum entha¨lt, nicht u¨berschneiden, werden diese
nicht zusammengefu¨hrt. Dafu¨r u¨berschneidet sich das
vorherige Modell mit dem Testdatum und wird somit, wie bei
der ITTT-Methode gefordert, zur Bewertungsscha¨tzung
genutzt.</p>
        <p>DISKUSSION
Die Aufteilung der Bewertungsschätzung in drei
Operatoren
Bei dem hier vorgestellten Konzept haben wir das
RecSysProblem der Scha¨tzung von Bewertungen im Wesentlichen
auf drei Operatoren aufgeteilt: TRAIN RECSYS MODEL,
RECOMM. CANDIDATES und PREDICT RATING. Das hat den
Nachteil, das eine Kopie des gelerntes Modells vom
TRAINRECSYS-MODEL-Operator an die anderen beiden
Operatoren als Datenstromelement u¨bertragen werden muss. Das
fu¨hrt, insbesondere bei großen Modellen, zu einem
zusa¨tzlichen Aufwand. Eine Alternative wa¨re, alle drei Operatoren
zu einem Operator zu vereinen (vgl. Abbildung 3). Dies
ha¨tte folgende Nachteile:</p>
        <p>Durch die Aufteilung in drei Operatoren kann jeder
Operator fu¨r sich verschiedene Implementierungen (physische
Operatoren) haben. Zum Beispiel kann man sich ein
RecSys fu¨r Filme vorstellen, bei dem der Benutzer angeben
kann, dass er z. B. eine Komo¨die und keinen Actionfilm
sehen mo¨chte. Dies wu¨rde die Empfehlungsanforderung um
eine Genre-Angabe erweitern. Ein fu¨r diese Anwendung
angepasster RECOMM-CAND-Operator kann von vornherein
als Empfehlungskandidaten nur die Objekte
beru¨cksichtigen, die unter die Kategorie Komo¨die fallen. Alternativ
ko¨nnte man zwischen RECOMM CAND und PREDICT RATING
einen Selektionsoperator einfu¨gen, der alle Kandidaten, die
nicht unter Komo¨die fallen, herausfiltert. Die anderen
Operatoren bleiben davon unberu¨hrt. Die Aufteilung sorgt somit
fu¨r klare Zusta¨ndigkeiten der Operatoren und ermo¨glicht
eine einfachere Erweiterung der Anfrage.</p>
        <p>Der TRAIN-RECSYS-MODEL-Operator bestimmt die
Gu¨ltigkeit eines Modells, so dass zu jeden Zeitpunkt genau ein
Modell gu¨ltig ist. Durch die Zusammenfu¨hrung von
Modell und Empfehlungsanforderung durch einen
Kreuzprodukt-Operator findet eine deterministische, temporale
Zuordnung statt. Diese Zuordnung basiert alleine auf den
Gu¨ltigkeitsintervallen und ist nicht davon abha¨ngig, ob aufgrund
der Steuerung des Schedulers oder anderer Latenzen zuerst
das Lerndatum oder die Empfehlungsanforderung den
Operator erreicht. Das Zeitmodell des DSMS sorgt dafu¨r, dass
genau das zusta¨ndige Modell reproduzierbar fu¨r die
Vorhersage genutzt wird. Des Weiteren kann der
TRAIN-RECSYSMODEL-Operator das Modell fu¨r den Gu¨ltigkeitszeitraum
anpassen, z. B. um temporale Verzerrungen aufgrund von
Concept Drift zu beru¨cksichtigen.</p>
        <p>Die Ausgabe der Empfehlungskandidaten
Der RECOMM-CAND-Operator gibt fu¨r jeden
Empfehlungskandidaten einer Empfehlungsanforderung ein
Datenstromelement aus. Eine Alternative wa¨re die Ausgabe eines
Datenstromelements je Empfehlungsanforderung, welches eine
Liste von Empfehlungskandidaten entha¨lt. Das ha¨tte den
Nachteil, dass der PREDICT-RATING-Operator fu¨r die
Bestimmung der Empfehlungen und fu¨r die Evaluation andere
Eingabedaten verarbeiten ko¨nnen mu¨sste: im ersten Fall eine
Liste von Benutzer-Objekt-Paaren, im zweiten Fall einzelne
Benutzer-Objekt-Paare.</p>
        <p>Der RECOMM-CAND-Operator gibt nur die
Empfehlungskandidaten ohne Modell aus. Dieser Operator ko¨nnte auch
das Modell den Empfehlungskandidaten beifu¨gen, so ko¨nnte
man auf den CROSS-PRODUCT-Operator vor PREDICT
RATING verzichten. Das hier vorgestellte Konzept hat den
Vorteil, dass BRISMF an RECOMM CAND und PREDICT
RATING unterschiedliche Modelle u¨bergeben kann. Wenn zum
Beispiel aus dem Modell fu¨r die Scha¨tzung der Bewertung
gar nicht hervorgeht, welche Objekte ein Benutzer nicht
bewertet hat (und somit zu den Empfehlungskandidaten
geho¨rt), so kann an RECOMM CAND ein Modell u¨bergeben
werden, dass die Zuordnung von Benutzer zu unbewerteten
Objekten ermo¨glicht, dafu¨r aber keine Scha¨tzung der
Bewertung vornehmen kann (z. B. ein einfaches Mapping u 7→
unbewertete Objekte).
7. IMPLEMENTIERUNG UND
EVALUATI</p>
        <p>ON</p>
        <p>
          Das vorgestellte Konzept haben wir mit dem
erweiterbaren Open-Source-DSMS Odysseus1 [
          <xref ref-type="bibr" rid="ref12 ref2 ref36 ref47">2</xref>
          ] umgesetzt. Dazu
haben wir Odysseus um neue Operatoren und
Transformationsregeln erweitert.
        </p>
        <p>
          Die Machbarkeit des Konzepts und die korrekte
Implementierung konnten wir durch den Vergleich der
Evaluationsergebnisse mit MOA und dem MovieLens-Datensatz
nachweisen. Dazu haben wir als BRISMF-Operator die
MOAImplementierung des BRISMF-Algorithmus’ [
          <xref ref-type="bibr" rid="ref21 ref45">11</xref>
          ] integriert,
der eine inkrementelle Matrix-Faktorisierung implementiert.
        </p>
        <p>Da MOA die Gu¨ltigkeit von Lerndaten nicht begrenzt,
haben wir den WINDOW-Operator entfernt und die RMSE
u¨ber den gesamten Datensatz berechnet (kein gleitender
RMSE). Den MovieLens-Datensatz haben wir, wie MOA,
zeilenweise eingelesen um einen Datenstrom zu simulieren und
haben nach jedem getesteten Tupel den RMSE ausgegeben.</p>
        <p>Die RMSE-Werte stimmen dabei mit denen von MOA exakt
u¨berein. Das zeigt, dass die temporale Zuordnung von
Lernund Testdaten mit den Modellen sowie die Umsetzung der
Evaluationsmethode korrekt funktionieren.</p>
        <p>In dieser Arbeit haben wir ein Konzept fu¨r die
Umsetzung eines modellbasierten und kollaborativen RecSys mit
einem auf Operatoren basierten DSMS vorgestellt. Dazu
haben wir logische Operatoren definiert, die fu¨r Teilaufgaben
eines RecSys zusta¨ndig sind. Zu einem Beispiel eines
logischen Anfrageplans fu¨r ein RecSys haben wir eine
beispielhafte Umsetzung durch einen physischen Anfrageplan
gezeigt und die Umsetzung und deren Alternativen diskutiert.</p>
        <p>Unser Konzept haben wir durch eine Implementierung in
dem DSMS Odysseus und dem Vergleich der
Evaluationsergebnisse mit MOA validiert.</p>
        <p>
          Um die Praxistauglichkeit nachzuweisen, soll das Konzept
in Zukunft unter realen Bedingungen, z. B. in einem Living
Lab wie Newsreel2 [
          <xref ref-type="bibr" rid="ref19 ref43 ref9">9</xref>
          ], evaluiert werden. Dazu stehen
insbesondere die fu¨r den Datenstromkontext wichtige
Parameter Latenz, Durchsatz und Speicheranforderungen im
Vordergrund. Des Weiteren sollen weitere Algorithmen fu¨r die
Empfehlungen und die Evaluation (z. B. Ranking-basierte
Methoden) implementiert werden.
        </p>
        <p>REFERENCES
1http://odysseus.informatik.uni-oldenburg.de/
2http://www.clef-newsreel.org/</p>
        <p>Das PArADISE-Projekt
Big-Data-Analysen für die Entwicklung von Assistenzsystemen</p>
        <p>(Extended Abstract)∗</p>
        <p>Andreas Heuer
Lehrstuhl DBIS, Institut für Informatik</p>
        <p>Universität Rostock
18051 Rostock, Deutschland
heuer@informatik.uni-rostock.de
ZUSAMMENFASSUNG
Bei der Erforschung und systematischen Entwicklung von
Assistenzsystemen fallen eine große Menge von
Sensordaten an, aus denen Situationen, Handlungen und
Intentionen der vom Assistenzsystem unterstu¨tzten Personen
abgescha¨tzt (modelliert) werden mu¨ssen. Neben
Privatheitsaspekten, die bereits wa¨hrend der Phase der Modellbildung
beru¨cksichtigt werden mu¨ssen, sind die Performance des
Analysesystems sowie die Provenance (Ru¨ckverfolgbarkeit
von Modellierungsentscheidungen) und die Preservation (die
langfristige Aufbewahrung der Forschungsdaten) Ziele
unserer Projekte in diesem Bereich. Speziell sollen im
Projekt PArADISE die Privatheitsaspekte und die
Performance des Systems beru¨cksichtigt werden. In einem
studentischen Projekt wurde innerhalb einer neuen experimentellen
Lehrveranstaltung im reformierten Bachelor- und
MasterStudiengang Informatik an der Universita¨t Rostock eine
Systemplattform fu¨r eigene Entwicklungen geschaffen, die auf
Basis von klassischen zeilenorientierten Datenbanksystemen,
aber auch spaltenorientierten und hauptspeicheroptimierten
Systemen die Analyse der Sensordaten vornimmt und fu¨r
eine effiziente, parallelisierte Verarbeitung vorbereitet. Ziel
dieses Beitrages ist es, die Ergebnisse dieser studentischen
Projektgruppe vorzustellen, insbesondere die Erfahrungen
mit den gewa¨hlten Plattformen PostgreSQL, DB2 BLU,
MonetDB sowie R (als Analysesystem) zu pra¨sentieren.</p>
        <p>Ein Forschungsschwerpunkt am Institut fu¨r Informatik
der Universita¨t Rostock ist die Erforschung und
systematische Entwicklung von Assistenzsystemen, etwa im
DFGGraduiertenkolleg MuSAMA. Da in Assistenzsystemen
unterstu¨tzte Personen durch eine Vielzahl von Sensoren
beobachtet werden, mu¨ssen bei der datengetriebenen
Modellie∗Eine Langfassung dieses Artikels ist erha¨ltlich als [HM15]
unter http://www.ls-dbis.de/digbib/dbis-tr-cs-04-15.pdf</p>
        <p>Holger Meyer
Lehrstuhl DBIS, Institut für Informatik</p>
        <p>Universität Rostock
18051 Rostock, Deutschland
hme@informatik.uni-rostock.de
rung von Situationen, Handlungen und Intentionen der
Personen aus großen Datenmengen mittels
Machine-LearningMethoden entsprechende Modelle abgeleitet werden: ein
Performance-Problem bei einer
Big-Data-Analytics-Fragestellung.</p>
        <p>Da Personen beobachtet werden, mu¨ssen auch
Privatheitsaspekte bereits wa¨hrend der Phase der Modellbildung
beru¨cksichtigt werden, um diese bei der konkreten
Konstruktion des Assistenzsystems automatisch in den Systementwurf
zu integrieren. Somit gibt es fu¨r die Datenbankforscher unter
anderem die Teilprobleme der performanten Berechnung der
Modelle als auch der Wahrung der Privatheitsanspru¨che des
Nutzers, die zu lo¨sen sind und die in einer langfristigen
Projektgruppe des Datenbanklehrstuhls angegangen werden: im
Projekt PArADISE (Privacy AwaRe Assistive Distributed
Information System Environment) werden effiiziente
Techniken zur Auswertung von großen Mengen von Sensordaten
entwickelt, die definierte Privatheitsanspru¨che der spa¨teren
Nutzer per Systemkonstruktion erfu¨llen.</p>
        <p>Wa¨hrend wir in [Heu15] ausfu¨hrlicher auf die Verknu¨pfung
der Aspekte Privatheit (Projekt PArADISE) und
Provenance (Projekt METIS) eingegangen sind, werden wir uns in
diesem Beitrag auf die beiden Schwerpunkte des
PArADISEProjektes konzentrieren, das ist neben der Privatheit die
Performance durch Parallelita¨t und Verteilung.</p>
        <p>Um seine Assistenzaufgaben zu erfu¨llen, besteht ein
Assistenzsystem u¨blicherweise aus fu¨nf Schichten [Heu15]. In
der untersten Schicht werden sta¨ndig viele Daten (etwa von
Sensoren) erzeugt, in der obersten Schicht wird aber nur im
Bedarfsfall (also eher selten) ein akustischer oder optischer
Hinweis, also eine geringe Datenmenge, ausgegeben.</p>
        <p>In der mittleren der fu¨nf Schichten mu¨ssen Sensordaten
gefiltert, erfasst, ausgewertet, verdichtet und teilweise
langfristig verwaltet werden. Aufgrund der extrem großen
Datenmenge (Big Data) muss die Verarbeitung verteilt
erfolgen: teilweise eine Filterung und Verdichtung schon im
Sensor, im na¨chsterreichbaren Prozessor (etwa im Fernseher
oder im Smart Meter in der Wohnung) und im Notfall u¨ber
das Internet in der Cloud. Neben Daten des
Assistenzsystems mu¨ssen auch fremde Daten etwa u¨ber das Internet
beru¨cksichtigt werden, beispielsweise Wartungspla¨ne beim
Auto oder die elektronische Patientenakte beim Patienten.
Allgemein ko¨nnen hier natu¨rlich auch die Daten sozialer
Netz</p>
        <p>Die Forschungsschwerpunkte der Rostocker
Datenbankgruppe lassen sich in diesem Zusammenhang mit vier P
charakterisieren, die im Folgenden na¨her erla¨utert werden
sollen.</p>
        <p>Forschung und Entwicklung: In der Forschungs- und
Entwicklungsphase eines Assistenzsystems ist das
vorrangige Ziel, eine effiziente Modellbildung auf großen
Datenmengen zu unterstu¨tzen. Dabei sollte mo¨glichst automatisch eine
Selektion der Daten (Filterung wichtiger Sensordaten nach
einfachen Merkmalen) und eine Projektion der Daten (die
Beschra¨nkung der großen Sensormenge auf wenige,
besonders aussagekra¨ftige Sensoren) vorgenommen werden. Die
no¨tige Effizienz in dieser Phase fu¨hrt auf unser
Forschungsthema P3: Performance. Da wa¨hrend der Entwicklung bei
fehlerhafter Erkennung von Handlungen und Intentionen die
dafu¨r zusta¨ndigen Versuchsdaten ermittelt werden mu¨ssen,
fu¨hrt die Ru¨ckverfolgbarkeit der Analyseprozesse in der
Entwicklung auf unsere Forschungsthemen P2: Provenance
Management und P4: Preservation
(Langfristarchivierung von Forschungsdaten).</p>
        <p>Einsatz: In der Einsatzphase eines Assistenzsystems sind
dagegen Privatheitsanspru¨che vorherrschend, die im
Gesamtsystem durch stufenweise Datensparsamkeit erreicht werden
ko¨nnen (unser Forschungsthema P1: Privatheit). Eine
weitere Verdichtung (auch Reduktion und Aggregation) der live
ausgewerteten Daten unterstu¨tzen aber nicht nur die
Privatheit, sondern auch die Performance.</p>
        <p>Die vier P behandeln wir in drei langfristigen
Forschungsprojekten (METIS, PArADISE, HyDRA), in diesem Beitrag
konzentrieren wir uns auf den Aspekt P3 (Performance)
des PArADISE-Projektes.</p>
        <p>Die in MuSAMA bisher verwendete Lo¨sung mit Plain R
wies dabei die schlechteste Effizienz auf, auch wenn man den
Prozess des initialen Ladens der Daten in den Hauptspeicher
herausrechnet. Unter den Varianten mit einer Analyse in
reinem SQL-92 (Regression per Hand mit Aggregatfunktionen
umgesetzt) war die MonetDB-Lo¨sung etwas besser als die
DB2-Variante, PostgreSQL fiel sta¨rker ab. Die
SQL:2003Lo¨sung konnte in MonetDB mangels vorhandener
OLAPund Rekursions-Fa¨higkeiten nicht umgesetzt werden, DB2
war hier wiederum deutlich besser als PostgreSQL.
Weiterhin bemerkt man im Vergleich von SQL-92 und SQL:2003,
dass der Optimierer von DB2 als auch PostgreSQL die
direkte Verwendung der OLAP-Funktionen belohnt. Die beste
Performance aller Varianten erreichte jedoch MonetDB mit
integrierten R-Funktionen.
5.</p>
        <p>DANKSAGUNGEN</p>
        <p>Wir danken der studentischen Projektgruppe PArADISE
im Wintersemester 2014/2015, die im Rahmen einer
experimentellen Projekt-Lehrveranstaltung die Basis fu¨r die
softwaretechnische Umsetzung des PArADISE-Projektes gelegt
hat: Pia Wilsdorf, Felix Ko¨ppl, Stefan Lu¨dtke, Steffen
Sachse, Jan Svacina, Dennis Weu.</p>
      </sec>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>Y.</given-names>
            <surname>Amsterdamer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Deutch</surname>
          </string-name>
          , and
          <string-name>
            <given-names>V.</given-names>
            <surname>Tannen</surname>
          </string-name>
          .
          <article-title>Provenance for Aggregate Queries</article-title>
          .
          <source>In Proc. PODS</source>
          , pages
          <fpage>153</fpage>
          -
          <lpage>164</lpage>
          . ACM,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>P.</given-names>
            <surname>Buneman</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Khanna</surname>
          </string-name>
          , and
          <string-name>
            <given-names>W.-C.</given-names>
            <surname>Tan</surname>
          </string-name>
          .
          <article-title>Why and Where: A Characterization of Data Provenance</article-title>
          .
          <source>In Proc. ICDT</source>
          , pages
          <fpage>316</fpage>
          -
          <lpage>330</lpage>
          . Springer,
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>J.</given-names>
            <surname>Cheney</surname>
          </string-name>
          .
          <source>Program Slicing and Data Provenance. IEEE Data Engineering Bulletin</source>
          ,
          <volume>30</volume>
          (
          <issue>4</issue>
          ):
          <fpage>22</fpage>
          -
          <lpage>28</lpage>
          ,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>J.</given-names>
            <surname>Cheney</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Chiticariu</surname>
          </string-name>
          , and
          <string-name>
            <given-names>W.-C.</given-names>
            <surname>Tan</surname>
          </string-name>
          . Provenance in Databases: Why, How, and
          <string-name>
            <surname>Where</surname>
          </string-name>
          . Foundations and Trends in Databases,
          <volume>1</volume>
          (
          <issue>4</issue>
          ),
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>Y.</given-names>
            <surname>Cui</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Widom</surname>
          </string-name>
          , and
          <string-name>
            <given-names>J.</given-names>
            <surname>Wiener</surname>
          </string-name>
          .
          <article-title>Tracing the Lineage of View Data in a Warehousing Environment</article-title>
          .
          <source>ACM TODS</source>
          ,
          <volume>25</volume>
          (
          <issue>2</issue>
          ),
          <year>2000</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>B.</given-names>
            <surname>Glavic</surname>
          </string-name>
          and
          <string-name>
            <given-names>G.</given-names>
            <surname>Alonso</surname>
          </string-name>
          .
          <article-title>Provenance for Nested Subqueries</article-title>
          .
          <source>In Proc. EDBT</source>
          , pages
          <fpage>982</fpage>
          -
          <lpage>993</lpage>
          . ACM,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>B.</given-names>
            <surname>Glavic</surname>
          </string-name>
          and
          <string-name>
            <given-names>K.</given-names>
            <surname>Dittrich</surname>
          </string-name>
          .
          <article-title>Data Provenance: A Categorization of Existing Approaches</article-title>
          . In BTW, volume
          <volume>7</volume>
          , pages
          <fpage>227</fpage>
          -
          <lpage>241</lpage>
          . Citeseer,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>T.</given-names>
            <surname>Grust</surname>
          </string-name>
          and
          <string-name>
            <given-names>J.</given-names>
            <surname>Rittinger</surname>
          </string-name>
          .
          <article-title>Observing SQL Queries in their Natural Habitat</article-title>
          .
          <source>ACM TODS</source>
          ,
          <volume>38</volume>
          (
          <issue>1</issue>
          ),
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>T.</given-names>
            <surname>Neumann</surname>
          </string-name>
          .
          <article-title>Efficiently Compiling Efficient Query Plans for Modern Hardware</article-title>
          .
          <source>In Proc. VLDB</source>
          ,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>M.</given-names>
            <surname>Weiser</surname>
          </string-name>
          .
          <source>Program Slicing. IEEE Transactions on Software Engineering</source>
          , SE-
          <volume>10</volume>
          (
          <issue>4</issue>
          ),
          <year>1984</year>
          .
          <article-title>Correlations on event data can be computed in different ways, depending on specific applications. In the following, we discuss the three operations for correlation computations</article-title>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>C. C.</given-names>
            <surname>Aggarwal</surname>
          </string-name>
          and
          <string-name>
            <given-names>C. K.</given-names>
            <surname>Reddy</surname>
          </string-name>
          .
          <article-title>Data clustering: algorithms and applications</article-title>
          . CRC Press,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>J.</given-names>
            <surname>Allan</surname>
          </string-name>
          , editor.
          <source>Topic detection and tracking: event-based information organization</source>
          . Kluwer Academic Publishers,
          <year>2002</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>H.</given-names>
            <surname>Becker</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Naaman</surname>
          </string-name>
          , and
          <string-name>
            <given-names>L.</given-names>
            <surname>Gravano</surname>
          </string-name>
          .
          <article-title>Learning similarity metrics for event identification in social media</article-title>
          .
          <source>In WSDM</source>
          , pages
          <fpage>291</fpage>
          -
          <lpage>300</lpage>
          ,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>D.</given-names>
            <surname>Birant</surname>
          </string-name>
          and
          <string-name>
            <given-names>A.</given-names>
            <surname>Kut. ST-DBSCAN</surname>
          </string-name>
          :
          <article-title>An algorithm for clustering spatial-temporal data</article-title>
          .
          <source>Data &amp; Knowledge Engineering</source>
          ,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>S.</given-names>
            <surname>Bo</surname>
          </string-name>
          ¨rzso¨nyi,
          <string-name>
            <given-names>D.</given-names>
            <surname>Kossmann</surname>
          </string-name>
          , and
          <string-name>
            <given-names>K.</given-names>
            <surname>Stocker</surname>
          </string-name>
          .
          <article-title>The skyline operator</article-title>
          .
          <source>In ICDE</source>
          , pages
          <fpage>421</fpage>
          -
          <lpage>430</lpage>
          ,
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>L.</given-names>
            <surname>Chen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Hwang</surname>
          </string-name>
          , and
          <string-name>
            <given-names>J.</given-names>
            <surname>Wu. MapReduce Skyline Query</surname>
          </string-name>
          <article-title>Processing with a New Angular Partitioning Approach</article-title>
          . In IPDPSW, May
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>L.</given-names>
            <surname>Chen</surname>
          </string-name>
          , M. T. O¨zsu, and
          <string-name>
            <given-names>V.</given-names>
            <surname>Oria</surname>
          </string-name>
          .
          <article-title>Robust and fast similarity search for moving object trajectories</article-title>
          .
          <source>In SIGMOD</source>
          ,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>B.-R.</given-names>
            <surname>Dai</surname>
          </string-name>
          and
          <string-name>
            <given-names>I.-C.</given-names>
            <surname>Lin</surname>
          </string-name>
          .
          <article-title>Efficient Map/Reduce-Based DBSCAN Algorithm with Optimized Data Partition</article-title>
          . In CLOUD,
          <year>June 2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>M.</given-names>
            <surname>Ester</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H. P.</given-names>
            <surname>Kriegel</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Sander</surname>
          </string-name>
          , and
          <string-name>
            <given-names>X.</given-names>
            <surname>Xu</surname>
          </string-name>
          .
          <article-title>A Density-Based Algorithm for Discovering Clusters in Large Spatial Databases with Noise</article-title>
          .
          <source>KDD</source>
          ,
          <year>1996</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>A.</given-names>
            <surname>Ganguly</surname>
          </string-name>
          ,
          <string-name>
            <given-names>O.</given-names>
            <surname>Omitaomu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Fang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Khan</surname>
          </string-name>
          , and
          <string-name>
            <given-names>B.</given-names>
            <surname>Bhaduri</surname>
          </string-name>
          .
          <article-title>Knowledge discovery from sensor data for scientific applications</article-title>
          .
          <source>In Learning from Data Streams</source>
          .
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>S.</given-names>
            <surname>Hagedorn</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Hose</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          K.-U. Sattler.
          <article-title>Sparqling pig - processing linked data with pig latin</article-title>
          . In BTW, March
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>H.</given-names>
            <surname>Kim</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Ravindra</surname>
          </string-name>
          , and
          <string-name>
            <given-names>K.</given-names>
            <surname>Anyanwu</surname>
          </string-name>
          .
          <article-title>From SPARQL to MapReduce: The Journey Using a Nested TripleGroup Algebra</article-title>
          .
          <source>PVLDB</source>
          ,
          <volume>4</volume>
          (
          <issue>12</issue>
          ):
          <fpage>1426</fpage>
          -
          <lpage>1429</lpage>
          ,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>J.</given-names>
            <surname>Makkonen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Ahonen-Myka</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M.</given-names>
            <surname>Salmenkivi</surname>
          </string-name>
          .
          <article-title>Topic detection and tracking with spatio-temporal evidence</article-title>
          .
          <source>In Advances in Information Retrieval</source>
          , volume
          <volume>2633</volume>
          , pages
          <fpage>251</fpage>
          -
          <lpage>265</lpage>
          .
          <year>2003</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>K.</given-names>
            <surname>Mullesgaard</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. L.</given-names>
            <surname>Pederseny</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Lu</surname>
          </string-name>
          , and
          <string-name>
            <given-names>Y.</given-names>
            <surname>Zhou</surname>
          </string-name>
          .
          <article-title>Efficient Skyline Computation in MapReduce</article-title>
          . In EDBT,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>M.</given-names>
            <surname>Noticewala</surname>
          </string-name>
          and
          <string-name>
            <given-names>D.</given-names>
            <surname>Vaghela</surname>
          </string-name>
          .
          <article-title>MR-IDBSCAN: Efficient Parallel Incremental DBSCAN Algorithm using MapReduce</article-title>
          .
          <source>Intl J Computer Applications</source>
          ,
          <volume>93</volume>
          (
          <issue>4</issue>
          ):
          <fpage>13</fpage>
          -
          <lpage>17</lpage>
          ,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>C.</given-names>
            <surname>Olston</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Reed</surname>
          </string-name>
          , U. Srivastava,
          <string-name>
            <given-names>R.</given-names>
            <surname>Kumar</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Tomkins</surname>
          </string-name>
          .
          <article-title>Pig latin: a not-so-foreign language for data processing</article-title>
          .
          <source>In SIGMOD</source>
          ,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>W.</given-names>
            <surname>Ribarsky</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Skau</surname>
          </string-name>
          ,
          <string-name>
            <given-names>X.</given-names>
            <surname>Wang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>W.</given-names>
            <surname>Dou</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M. X.</given-names>
            <surname>Zhou</surname>
          </string-name>
          . Leadline:
          <article-title>Interactive visual analysis of text data through event identification and exploration</article-title>
          .
          <source>VAST</source>
          ,
          <volume>0</volume>
          :
          <fpage>93</fpage>
          -
          <lpage>102</lpage>
          ,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref28">
        <mixed-citation>
          [18]
          <string-name>
            <surname>A. D. Sarma</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          <string-name>
            <surname>Jain</surname>
            , and
            <given-names>C.</given-names>
          </string-name>
          <string-name>
            <surname>Yu</surname>
          </string-name>
          .
          <article-title>Dynamic relationship and event discovery</article-title>
          .
          <source>In WSDM</source>
          , pages
          <fpage>207</fpage>
          -
          <lpage>216</lpage>
          ,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref29">
        <mixed-citation>
          [19]
          <string-name>
            <given-names>M.</given-names>
            <surname>Sharifzadeh</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Shahabi</surname>
          </string-name>
          , and
          <string-name>
            <given-names>L.</given-names>
            <surname>Kazemi</surname>
          </string-name>
          .
          <article-title>Processing spatial skyline queries in both vector spaces and spatial network databases</article-title>
          .
          <source>TODS</source>
          ,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref30">
        <mixed-citation>
          [20]
          <string-name>
            <given-names>W.</given-names>
            <surname>Son</surname>
          </string-name>
          , M.-
          <string-name>
            <given-names>W.</given-names>
            <surname>Lee</surname>
          </string-name>
          , H.
          <article-title>-</article-title>
          <string-name>
            <surname>K. Ahn</surname>
          </string-name>
          , and S. won Hwang.
          <article-title>Spatial skyline queries: An efficient geometric algorithm</article-title>
          .
          <source>In SSTD</source>
          , pages
          <fpage>247</fpage>
          -
          <lpage>264</lpage>
          ,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref31">
        <mixed-citation>
          [21]
          <string-name>
            <given-names>J.</given-names>
            <surname>Stro</surname>
          </string-name>
          <article-title>¨tgen and M. Gertz. Multilingual and cross-domain temporal tagging</article-title>
          .
          <source>Language Resources and Evaluation</source>
          ,
          <volume>47</volume>
          (
          <issue>2</issue>
          ):
          <fpage>269</fpage>
          -
          <lpage>298</lpage>
          ,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref32">
        <mixed-citation>
          [22]
          <string-name>
            <given-names>J.</given-names>
            <surname>Stro</surname>
          </string-name>
          <article-title>¨tgen and M. Gertz. Proximity2-aware ranking for textual, temporal, and geographic queries</article-title>
          .
          <source>In CIKM</source>
          , pages
          <fpage>739</fpage>
          -
          <lpage>744</lpage>
          ,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref33">
        <mixed-citation>
          [23]
          <string-name>
            <given-names>J.</given-names>
            <surname>Stro</surname>
          </string-name>
          ¨tgen, M. Gertz, and
          <string-name>
            <given-names>C.</given-names>
            <surname>Junghans</surname>
          </string-name>
          .
          <article-title>An event-centric model for multilingual document similarity</article-title>
          .
          <source>In SIGIR</source>
          , pages
          <fpage>953</fpage>
          -
          <lpage>962</lpage>
          ,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref34">
        <mixed-citation>
          [24]
          <string-name>
            <given-names>Y.</given-names>
            <surname>Yang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Pierce</surname>
          </string-name>
          , and
          <string-name>
            <given-names>J.</given-names>
            <surname>Carbonell</surname>
          </string-name>
          .
          <article-title>A study of retrospective and on-line event detection</article-title>
          .
          <source>In SIGIR</source>
          , pages
          <fpage>28</fpage>
          -
          <lpage>36</lpage>
          ,
          <year>1998</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref35">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>M.</given-names>
            <surname>Ali</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C. C.</given-names>
            <surname>Johnson</surname>
          </string-name>
          , and
          <string-name>
            <given-names>A. K.</given-names>
            <surname>Tang</surname>
          </string-name>
          .
          <article-title>Parallel collaborative filtering for streaming data</article-title>
          . University of Texas Austin,
          <source>Tech. Rep</source>
          ,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref36">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>H.-J.</given-names>
            <surname>Appelrath</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Geesen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Grawunder</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Michelsen</surname>
          </string-name>
          , and
          <string-name>
            <given-names>D.</given-names>
            <surname>Nicklas</surname>
          </string-name>
          .
          <article-title>Odysseus: A highly customizable framework for creating efficient event stream management systems</article-title>
          .
          <source>In DEBS'12</source>
          , pages
          <fpage>367</fpage>
          -
          <lpage>368</lpage>
          . ACM,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref37">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>A.</given-names>
            <surname>Arasu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Babu</surname>
          </string-name>
          , and
          <string-name>
            <given-names>J.</given-names>
            <surname>Widom</surname>
          </string-name>
          .
          <article-title>The CQL continuous query language: semantic foundations and query execution</article-title>
          .
          <source>VLDB Journal</source>
          ,
          <volume>15</volume>
          (
          <issue>2</issue>
          ):
          <fpage>121</fpage>
          -
          <lpage>142</lpage>
          ,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref38">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>B.</given-names>
            <surname>Babcock</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Babu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Datar</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Motwani</surname>
          </string-name>
          , and
          <string-name>
            <given-names>J.</given-names>
            <surname>Widom</surname>
          </string-name>
          .
          <article-title>Models and issues in data stream systems</article-title>
          .
          <source>In PODS 2002</source>
          , pages
          <fpage>1</fpage>
          -
          <lpage>16</lpage>
          . ACM,
          <year>2002</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref39">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>A.</given-names>
            <surname>Bifet</surname>
          </string-name>
          , G. Holmes,
          <string-name>
            <given-names>R.</given-names>
            <surname>Kirkby</surname>
          </string-name>
          , and
          <string-name>
            <given-names>B.</given-names>
            <surname>Pfahringer</surname>
          </string-name>
          . MOA:
          <article-title>Massive online analysis</article-title>
          .
          <source>The Journal of Machine Learning Research</source>
          ,
          <volume>11</volume>
          :
          <fpage>1601</fpage>
          -
          <lpage>1604</lpage>
          ,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref40">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>B.</given-names>
            <surname>Chandramouli</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. J.</given-names>
            <surname>Levandoski</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Eldawy</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M. F.</given-names>
            <surname>Mokbel</surname>
          </string-name>
          .
          <article-title>StreamRec: A Real-time Recommender System</article-title>
          .
          <source>In SIGMOD'11</source>
          , pages
          <fpage>1243</fpage>
          -
          <lpage>1246</lpage>
          . ACM,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref41">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>E.</given-names>
            <surname>Diaz-Aviles</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Drumond</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Schmidt-Thieme</surname>
          </string-name>
          , and
          <string-name>
            <given-names>W.</given-names>
            <surname>Nejdl</surname>
          </string-name>
          .
          <article-title>Real-Time Top-N Recommendation in Social Streams</article-title>
          .
          <source>In ACM RecSys</source>
          , pages
          <fpage>59</fpage>
          -
          <lpage>66</lpage>
          ,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref42">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>J.</given-names>
            <surname>Gama</surname>
          </string-name>
          ,
          <string-name>
            <surname>I. Zliobaite</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Biefet</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Pechenizkiy</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Bouchachia</surname>
          </string-name>
          .
          <article-title>A Survey on Concept Drift Adaptation</article-title>
          . ACM Comp. Surveys,
          <volume>1</volume>
          (
          <issue>1</issue>
          ),
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref43">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>F.</given-names>
            <surname>Hopfgartner</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Kille</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Lommatzsch</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Plumbaum</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Brodt</surname>
          </string-name>
          , and
          <string-name>
            <given-names>T.</given-names>
            <surname>Heintz</surname>
          </string-name>
          .
          <article-title>Benchmarking news recommendations in a living lab</article-title>
          .
          <source>In CLEF'14, LNCS</source>
          , pages
          <fpage>250</fpage>
          -
          <lpage>267</lpage>
          . Springer Verlag,
          <year>09 2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref44">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>X.</given-names>
            <surname>Luo</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Xia</surname>
          </string-name>
          , and
          <string-name>
            <given-names>Q.</given-names>
            <surname>Zhu</surname>
          </string-name>
          .
          <article-title>Incremental collaborative filtering recommender based on regularized matrix factorization</article-title>
          .
          <source>Knowledge-Based Systems</source>
          ,
          <volume>27</volume>
          :
          <fpage>271</fpage>
          -
          <lpage>280</lpage>
          ,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref45">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>G.</given-names>
            <surname>Taka</surname>
          </string-name>
          <article-title>´cs, I. Pila´szy, B</article-title>
          . N´emeth, and
          <string-name>
            <given-names>D.</given-names>
            <surname>Tikk</surname>
          </string-name>
          .
          <article-title>Scalable collaborative filtering approaches for large recommender systems</article-title>
          .
          <source>The Journal of Machine Learning Research</source>
          ,
          <volume>10</volume>
          :
          <fpage>623</fpage>
          -
          <lpage>656</lpage>
          ,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref46">
        <mixed-citation>
          1.
          <article-title>Umsetzung von Regression und Korrelation in StandardSQL-92 (also per Hand, da keine Analysefunktionen außer den klassischen Aggregatfunktionen wie COUNT, SUM und AVG vorhanden)</article-title>
          .
        </mixed-citation>
      </ref>
      <ref id="ref47">
        <mixed-citation>2. Umsetzung in SQL:2003 mit den entsprechenden OLAPFunktionen.</mixed-citation>
      </ref>
      <ref id="ref48">
        <mixed-citation>
          3.
          <article-title>Umsetzung mit rekursivem oder iterativem SQL, sofern in den Systemen mo¨glich.</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref49">
        <mixed-citation>
          4.
          <string-name>
            <given-names>Eine</given-names>
            <surname>Integration der SQL-Anfrage mit</surname>
          </string-name>
          R-Auswertungen.
        </mixed-citation>
      </ref>
      <ref id="ref50">
        <mixed-citation>
          5.
          <string-name>
            <surname>Eine</surname>
            <given-names>R</given-names>
          </string-name>
          -Auswertung
          <source>pur ohne Kopplung an SQL.</source>
        </mixed-citation>
      </ref>
      <ref id="ref51">
        <mixed-citation>
          6. LITERATUR [Heu15]
          <string-name>
            <surname>Heuer</surname>
            ,
            <given-names>A.:</given-names>
          </string-name>
          <article-title>METIS in PArADISE: Provenance Management bei der Auswertung von Sensordatenmengen fu¨r die Entwicklung von Assistenzsystemen</article-title>
          .
          <source>In: Lecture Notes in Informatics, Band</source>
          <volume>242</volume>
          , BTW 2015 Workshop-Band,
          <fpage>131</fpage>
          -
          <lpage>135</lpage>
          ,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref52">
        <mixed-citation>
          [HM15]
          <string-name>
            <surname>Heuer</surname>
            ,
            <given-names>A</given-names>
          </string-name>
          .; Meyer, H.:
          <article-title>Das PArADISE-Projekt: Big-Data-Analysen fu¨r die Entwicklung von Assistenzsystemen</article-title>
          .
          <source>Technischer Bericht CS-04-15</source>
          , Institut fu¨r Informatik,
          <source>Universita¨t Rostock</source>
          ,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref53">
        <mixed-citation>
          [Mar15]
          <string-name>
            <surname>Markl</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          :
          <string-name>
            <surname>Gesprengte Ketten - Smart Data</surname>
          </string-name>
          , deklarative Datenanalyse,
          <source>Apache Flink. Informatik Spektrum, Band</source>
          <volume>38</volume>
          ,
          <string-name>
            <surname>Nr</surname>
            . 1,
            <given-names>S.</given-names>
          </string-name>
          10-
          <fpage>15</fpage>
          ,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>