=Paper=
{{Paper
|id=None
|storemode=property
|title=Cloud-Services und effiziente Anfrageverarbeitung für Linked Open Data
|pdfUrl=https://ceur-ws.org/Vol-850/paper_betz.pdf
|volume=Vol-850
|dblpUrl=https://dblp.org/rec/conf/gvd/BetzS12
}}
==Cloud-Services und effiziente Anfrageverarbeitung für Linked Open Data==
Cloud-Services und effiziente Anfrageverarbeitung für
Linked Open Data
[Work in Progress]
Heiko Betz, Kai-Uwe Sattler
Department of Computer Science and Automation
TU Ilmenau, Germany
{first.last}@tu-ilmenau.de
ABSTRACT QL [2] auf. Dies ist eine graph-basierte Anfragesprache für
Der Verbreitungsgrad von Linked Open Data hat in den RDF-Daten. Sie definiert neben der Möglichkeit Daten abzu-
letzten Jahren massiv zugenommen. Stetig erscheinen neue fragen, ähnlich dem SQL aus der Datenbankwelt, ein Trans-
Quellen, die RDF-Daten frei zur Verfügung stellen. Aktu- portprotokoll zwischen verschiedenen SPARQL-Endpoints.
ell diskutiert die Bundesregierung über ein neues Gesetz, In SPARQL selbst werden Basic Graph Patterns (BGP) für
welches zur Offenlegung von Daten der öffentlichen Hand die Abfrage von Daten verwendet, die aus einem oder meh-
verpflichtet. Durch diese Maßnahme, steigt u. a. die Menge reren Tripeln bestehen. Hierdurch ergeben sich joinintensive
an Linked Open Data sehr schnell an. Es werden neue Ver- Abfragen, die eine weitere detaillierte Betrachtung benöti-
fahren benötigt, die mit sehr vielen RDF-Daten gleichzeitig gen.
eine effiziente, skalierbare und mit Garantien versehene Ab-
frage von Daten mittels SPARQL gewährleistet. In dieser Fallunterscheidung.
Arbeit wird ein reines In-Memory Shared-Nothing-System Für die Beantwortung von (komplexen) quellenübergrei-
vorgestellt, das die genannten Anforderungen in effizienter fenden Anfragen müssen nun zwei Fälle unterschieden wer-
Weise erfüllt. Hierfür werden verschiedenste Optimierungs- den [7]:
maßnahmen ergriffen, die das Potenzial moderner Hardware
umfassend ausnutzen. 1. Verteilter Ansatz: Daten bleiben in den Quellen. An-
fragen werden von einem Koordinator entgegengenom-
men, in Subanfragen aufgesplittet, den entsprechenden
1. EINFÜHRUNG Quellen zugesandt, von diesen bearbeitet und das Re-
Die Anzahl an verfügbaren Quellen für Linked Open Data sultat vom Koordinator entgegengenommen.
(LOD) wächst stetig an1 . Unter anderem wurde vor kurzem
von der Bundesregierung die Open Data-Initiative gestartet. 2. Data Warehouse Ansatz: Daten werden von verschie-
Es sollen Daten, die durch Steuergelder finanziert wurden, denen Quellen geladen, vorverarbeitet und lokal abge-
der Öffentlichkeit frei zur Verfügung stehen2 . Insgesamt geht legt (materialisiert). Anfragen können direkt durchge-
die Anzahl an verfügbaren LOD-Quellen in diesem hochver- führt werden. Die Quellen bleiben gleichzeitig erhalten.
teilten System in die Hunderttausende bzw. Millionen über.
Es werden disjunkte bzw. teils überlappende Daten bereit- Punkt 1 besitzt mehrere potenzielle Vorteile. Durch die Ver-
gestellt, die häufig untereinander verlinkt sind, jedoch nicht teilung wird ein Single Point of Failure (SPOF) vermieden.
immer einem gemeinsamen Qualitätsstandard entsprechen. Der Koordinator muss keine Daten speichern, da sie alle
Die innere Struktur von LOD entspricht dem Ressource in den Quellen vorliegen. Er muss nur einen geringen Spei-
Description Framework [1] (RDF) Aufbau. In diesem wer- cherplatz und nur eine geringe Rechenkapazität zur Verfü-
den Daten als Tripel repräsentiert (Subjekt, Prädikat und gung stellen. Ein wichtiger Punkt, der für eine Verteilung der
Objekt). Hierauf baut wiederum die Abfragesprache SPAR- Quellen spricht, ist, dass die Daten nicht an andere Unter-
1
nehmen herausgegeben werden müssen. Es können ’Firmen-
Die LOD-Cloud, welche nur einen minimalen Ausschnitt geheimnisse’ bewahrt werden. Als Nachteile ergeben sich je-
darstellt und unter http://www4.wiwiss.fu-berlin.de/ doch einige Punkte. Die Zerlegung von Anfragen in Subque-
lodcloud/state/ zu finden ist, umfasst mittlerweile ca. 31
Milliarden Einträge. ries und alle daraus folgenden Schritte sind ein hoch komple-
2
http://heise.de/-1429179 xes Problem (Parsing, Normalisierung, eingebettete Anfra-
gen ’herausdrücken’, Vereinfachung, Datenlokalisation, Op-
timierung). Zwei weiter nicht zu unterschätzende Nachtei-
le sind die fehlenden Kontroll- und Überwachungsmechanis-
men der Quellen. Die Antwortzeit in einem solchen Szenario
ist nach oben unbeschränkt. Es ergibt sich, dass keinerlei Ga-
rantien abgegeben werden können. Weiterhin ist durch die
Verteilung das verwendete Schema dem Koordinator gänz-
lich unbekannt. Viele Quellen sind zudem nicht in der Lage,
24th GI-Workshop on Foundations of Databases (Grundlagen von Daten-
banken), 29.05.2012 - 01.06.2012, Lübbenau, Germany. SPARQL-Anfragen zu verarbeiten. Sie liefern nur die Quel-
Copyright is held by the author/owner(s). len über einen Webserver aus. Wären SPARQL-Anfragen
möglich, wären Analyseanfragen à la Data Warehouse-Anfragen hierbei als Framework und nicht als reine Datenablage an-
auch nur bedingt möglich. gesehen werden. Neben SPARQL-Anfragen soll es den Be-
Die zentralen Nachteile des Punktes 2 sind die (i.) benötig- nutzer im gesamten Workflow unterstützen. Unter Work-
te Zeit zum Einsammeln aller Daten, die (ii.) Durchführung flow werden die Folgenden Operationen verstanden: Einfü-
einer Vorberechnung und das Problem, dass niemals gewähr- gen/Löschen/Ändern von Tripeln sowie die Abfrage/Analy-
leistet werden kann, dass (iii.) alle Daten aktuell sind. Zu- se von Daten. Unter dem Stichpunkt Analyse fallen sämtli-
dem wird (iv.) ein SPOF, sowie ein (v.) extrem hoher Spei- che Data-Mining-Aufgaben, die in einem Data-Warehouse-
cherplatz an einer einzigen zentralen Instanz in Kauf genom- Szenario möglich sind. Ein weiteres Ziel ist die Unterstüt-
men. Ein weiterer Nachteil beider Fälle ist das (vi.) unbe- zung von SLAs. Neben dem Garantieren von maximalen
kannte Schema und die (vii.) geringe Datenqualität. Im zen- Antwortzeiten sollen auch Garantien bezüglich der Verfüg-
tralisierten Fall kann jedoch auf die letzten beiden Probleme barkeit und der Aktualität von Daten, sowie einige ande-
effizient reagiert werden, indem entsprechende Indizes ange- re mehr beachtete werden. Letztendlich soll das System als
legt und/oder verschiedenste Optimierungen durchgeführt ein Cloud-Service für LOD-Daten propagiert werden. Das
werden. Eine entsprechende Datenvorverarbeitung kann zu- Ziel hierbei ist, Kosten für den Endbenutzer einzusparen.
dem davor gestartet werden, um die Datenqualität zu ver- Er möchte nur für den von ihm selbst verursachten Aufwand
bessern. Beides wird durch die einheitliche Form der Daten bezahlen (Service on Demand). Im alternativen Fall müsste
als reine Tripel unterstützt. Der große Vorteil, der sich aus eine eigene Infrastruktur aufgebaut werden, was häufig zu
dem zentralisierten Ansatz ergibt, ist die Möglichkeit, An- viel höheren Kosten führt.
fragezeiten zu einem bestimmten Prozentsatz zu gewährleis- Diese Arbeit beschäftigt sich mit einem Teil aus dem so-
ten, da sich das gesamte System unter der Kontrolle einer eben beschriebenen Zieles. Es soll ein erster Ansatz für einen
Instanz befindet. Weiterhin kann ein Scale-Out (Erhöhung Datenspeicher für Linked Open Data aufgezeigt werden, der
der Speicherkapazität (v.), Verbesserung der Antwortzeiten) mit sehr großen Datenmengen eine effiziente Anfrageverar-
und eine Replikation (Beseitigung SPOF (iv.), Verbesserung beitung ermöglicht. Hierfür ist ein zuverlässiges Scale-Out-
der Antwortzeiten) angestrebt werden. Zur Verringerung der Verfahren notwendig, welches vorgestellt wird. Des Weiteren
Speicherkapazität (v.) können effiziente Kompressionstech- soll das gewählte Verfahren auf eine wechselnde Anfragelast
niken verwendet werden, die zugleich lese- und schreibopti- reagieren können.
miert sind, was zu einer weiteren Verringerung des benötig-
ten Speicherplatzes führt. Durch die Verwendung von push 2. STATE-OF-THE-ART
und Bulk Load-Techniken zur Datenintegration anstelle von
Für die Verarbeitung von LOD existieren bereits viele
reinen pull-Techniken kann garantiert werden, dass die abge-
verschiedene Systeme, die RDF-Daten entgegennehmen und
fragten Daten aktuell (iii.) sind. Das Einsammeln von Daten
SPARQL-Queries ausführen. Einige bekanntere System sind
ist nur zu Beginn einmal nötig, wenn eine neue Datenquelle
Virtuoso [5], MonetDB [3], Hexastore [14], Jena [15] und
erschlossen wird (i. und ii.).
RDF-3X [11]. Virtuoso ist ein weitverbreitetes relationales
Der Mechanismus des Scale-Outs und der Replikation be-
Datenbanksystem, das aus allen Kombinationen des Subjek-
dingen jedoch, dass eine Zerlegung der Anfrage durchgeführt
tes, Prädikates und Objektes Indizes erzeugt. Somit kann
werden muss. Wobei dieser eine Nachteil durch die oben ge-
sehr schnell auf Daten zugegriffen werden. MonetDB ist ein
nannten Vorteile aufgewogen wird. Insgesamt sprechen viele
OpenSource Column-Store, der eine Menge von Zwischen-
Faktoren für die Verwendung eines zentralisierten Ansatzes.
ergebnissen im Speicher hält, um neue und ähnliche An-
Garantien bezüglich den soeben erwähnten Antwortzei-
fragen schneller bearbeiten zu können. Hexastore ist eine
ten sind äußerst komplex in ihrer Umsetzung und benötigen
In-Memory-Lösung. Es erzeugt aus allen möglichen Kom-
im extremen Fall viele vorallokierte Kapazitäten, die wäh-
binationen von Tripeln Indizes, die daraufhin in einer Lis-
rend normaler Nutzung brachliegen und hohe Kosten ver-
te abgelegt werden. Für die Vermeidung von Dopplungen
ursachen. Stattdessen werden sie nur während Lastspitzen
und zur Kompression werden Strings in einem Wörterbuch
benötigt. Folglich werden aus diesem Grund häufig prozen-
abgelegt. Jena ein bekanntes OpenSource-Projekt kann ver-
tuale Werte angegeben. Es sollen beispielsweiße 99,99 % aller
schiedene Datenspeicher verwenden. Einerseits können die
Anfragen in der maximal erlaubten Zeitspanne beantwortet
Daten in einem eigenen Format abgelegt werden, anderer-
werden. Erst ein solches Vorgehen erlaubt es, dass während
seits in einer relationalen Datenbank. Auch Jena verwendet
einer Lastspitze neue Kapazitäten hinzugenommen werden
ein Wörterbuch zur Kompression. RDF-3X verwendet auch
können (automatisierter Scale-Out). Das Ziel hierbei ist, zu-
mehrere Indizes, um alle möglichen Kombinationen abzu-
künftige Anfragen wieder innerhalb der gesetzten Antwort-
speichern und legt diese in B+-Bäumen ab. Zudem enthält
zeit beantworten zu können. Am Ende der Lastspitze wer-
es eine ausgeklügelte Anfrageoptimierung, die speziell auf
den die zusätzlich allokierten Ressourcen wieder freigege-
die Besonderheiten von RDF abgestimmt ist.
ben. Letztendlich werden hierdurch Kosten für den Betrei-
Werden alle vorgestellten Systeme genauer betrachtet, stellt
ber des Services eingespart. Wichtig zu erwähnen ist, dass
man fest, dass diese einige Nachteile besitzen. Entweder sind
die Garantie bezüglich der Antwortzeit nicht für jede belie-
diese auf bestimmte Operationen (lesen, ändern) und/oder
bige SPARQL-Anfrage garantiert werden kann. Stattdessen
Domänen getrimmt und/oder sind nicht skalierbar im Sinne
soll dies nur für gewöhnliche“ Anfragen gelten.
” eines Scale-Outs und somit ungeeignet für sehr große Da-
tenmengen. Stattdessen setzten sie auf die Leistung einer
Projektziel. einzigen Maschine, was zu einem erheblichen Performance-
Das Ziel dieses Projektes ist es, ein hochverfügbares, - , Speicherplatz- und Verfügbarkeitsproblem werden kann.
skalierbares und -effizientes System aufzubauen, welches meh- Weiterhin unterstützt keines der erwähnten Systeme Garan-
rere hundert Milliarden bzw. mehrere Billionen Tripel von tien bezüglich Antwortzeiten. Sie setzen zudem auf einen
RDF-Daten in einer materialisierten Form vorhält. Es soll Permanentspeicher, welcher I/O-Zugriffe erfordert. Dies er-
Query geführt werden. Die Verwendung einer reinen In-Memory
Pull Lösung basiert auf der Grundlage, zukünftig Antwortzeiten
... garantieren zu können.
Linked Open Data bestehen ausschließlich aus Tripeln, die
Datenquellen wiederum aus Strings bestehen. Werden die darin abgespei-
cherten Werte genauer untersucht, stellt man fest, dass die-
Push selben Stringwerte mehrmals auftreten. Hier ist eine Kom-
pression nützlich, um Speicherplatz einzusparen. Dies fällt
Innere Aufbau umso mehr ins Gewicht, da der Data-Warehouse Ansatz an-
gestrebt wird. Die naheliegenste Technik, ist der Einsatz ei-
nes rein lokalen Wörterbuches. In einem solchen wird jeder
Figure 1: Aufbau des Systems mit mehreren un- Stringwert auf eine eindeutige ID gemappt. Hierfür ist wie-
abhängigen Knoten, die untereinander verbunden derum eine effiziente Anfrageverarbeitung von Nöten, die im
sind. Annahme einer Query und Weitergabe an ei- folgenden Abschnitt beschrieben wird.
nem beliebigen Knoten. Einspielen von neuen Da-
tenquellen durch Push und Pull.
Kombinierte Row- und Column-Store.
Ein Chunk besteht intern aus einer Kombination von Row-
und Column-Store [9]. Jede logische Zeile enthält drei Spal-
höht wiederum sehr schnell die Antwortzeit. Eine Gewäh-
ten für Subjekt, Prädikat und Objekt, wobei in einem je-
rung von Garantien wird erschwert. Einige dieser Ansätze
den Feld nur ein einzelner Integerwerte abgelegt ist. Werden
sind zudem bereits mit wenigen Milliarden Tripeln über-
nun alle einzelnen Integerwerte eines Tripels mittels Shift-
fordert (Jena). Andere verwenden alte Konzepte für neuere
Operationen disjunkt zu einem Wert vereint, ergibt sich ein
Probleme (Virtuoso), was nicht immer zu einer optimalen
Wort mit 96 Bit Breite, wenn jeweils 32 Bit für Subjekt,
Lösung beiträgt.
Prädikat und Objekt angenommen werden. Somit wird die
Bezüglich den Garantien von Antwortzeiten, beschreiben
Datenzeile aus drei logischen Spalten zu einer physischen
die Autoren in [12] und [9] ein Verfahren zur Beantwortung
Spalte vereint, die in einem theoretischen Drittel der Zeit
von Anfragen in einem konstanten Zeitintervall. Dies wird
überprüft werden kann.
durch verschiedenste Optimierungen erreicht. Unter ande-
Moderne CPUs besitzen interne SIMD3 -Register die ei-
rem wird beschrieben, wie ein Row- und Column-Store mit-
ne Breite von 256-Bit besitzen. Diese wurde mit dem neu-
einander verschmolzen wird und trotzdem eine effiziente An-
en AVX4 -Befehlsatz von Intel eingeführt. In einem solchen
frageverarbeitung ermöglicht wird.
Register werden mehrere logisch getrennte Einheiten zu ei-
ner physischen Einheit verbunden, die in einer Instruktion
3. ARCHITEKTUR gleichzeitig bearbeitet werden können. Hierfür müssen die
Die Architektur des Gesamtsystems ist in Abbildung 1 einzulesenden Daten auf eine volle 2-er Potenz ergänzt und
aufgezeigt. Sie folgt dem typischen Scale-Out-Paradigma mit die Wortgrenze bekannt sein.
verschiedenen Shared-Nothing-Systemen (Kreise in der Mit- Werden die Fakten vereint, muss zuerst das 96 Bit Wort
te), die alle gleichberechtigt sind. Anfragen können von be- auf 128 Bit, ergänzt werden. Mit Hilfe der verfügbaren 256-
liebigen Knoten entgegengenommen werden. Im nächsten Bit können nun zwei logische Datenzeilen mit jeweils 128-
Schritt wird ein Queryrewriting durchgeführt und an die ent- Bit gleichzeitig überprüft werden. Theoretisch ergibt sich
sprechenden Knoten weitergegeben. Die Empfänger nehmen eine bis zu sechsfache Performancesteigerung. Mittels der
die umgeschriebenen Anfragen entgegen, bearbeiten diese Vermeidung von Sprung- und sonstigen Befehlen, die Leer-
und senden letztendlich das Ergebnis zurück. Nachdem alle lauf produzieren, ist dieses Verfahren sehr Cache freundlich.
Einzelergebnisse eingetroffen sind werden diese mittels ver- Einmal verwendete Daten können stur linear abgearbeitet
schiedener Join-Operationen zu einem Ergebnis verknüpft. werden. Zugriffe auf dem langsamen RAM werden damit
Dieses wird letztlich an den ursprünglich anfragenden Cli- vermieden. Insgesamt wird die Struktur moderner Hardware
ent als Ergebnis zurück gesandt. Auf der rechten Seite der sehr gut ausgenutzt und eine Performancesteigerung ergibt
Grafik ist ersichtlich, dass neue Daten mittels push- oder sich.
pull-Techniken eingespielt werden können und dies während Wie oben erwähnt, muss in diesem Fall eine Ergänzung
der Laufzeit, mit Einhaltung der Antwortzeitgarantien. von 96-Bit auf 128-Bit durchgeführt werden. Es verbleiben
32 ungenützte Bit. Diese können für eine weitere Spalte ver-
3.1 Lokale Verarbeitung wendet werden. In dieser kann die Sprache bzw. der Daten-
Die lokale Verarbeitungseinheit liegt auf einem Knoten typ des (Literal)Objektes vermerkt werden [1]. Sollten ent-
und besteht aus einem Java-Programm, sowie vorwiegend sprechende Filterbedingungen auftreten, können diese direkt
aus einer C++ In-Memory-Datenhaltung und Datenabfra- mit übernommen werden, was zu einer weiteren Performan-
gemöglichkeit, die LODCache genannt wird. Dies ist eine cesteigerung beiträgt. Andererseits können die 32-Bit pro
hochperformante, reine In-Memory Lösung für LOD, die den Spalte zu gering sein und entsprechend erweitert werden. Es
L2-, wenn vorhanden L3-Cache und die RAM-Struktur mo- ist auch eine Kombination aus beiden möglich (z. B. 40 Bit
derner Hardware effizient ausnutzt. Allokierte Datenfelder, pro Spalte und 8 Bit für Sprache und Datentyp).
sogenannte Chunks, entsprechen genau der Größe des L2- Durch die Verwendung von Integerwerten, die eine feste
Caches. Dies ermöglicht es sehr effizient auf Daten zuzugrei- Bitbreite besitzen, wird auf einen expliziten und unvorher-
fen, diese zu Bearbeiten und Berechnungen auf diesen durch-
3
zuführen. Des Weiteren können Anfragen an den LODCache Single instruction, multiple data
4
gestellt, sowie Änderungen und Einfügeoperationen durch- Advanced Vector Extensions
sehbar langen Stringvergleich verzichtet. Dies erhöht weiter 0 1 2
die Performance und verbessert die Antwortzeit. A
Wie zu erkennen ist, wird auf eine Erzeugung von zusätz- 0 1 2
lichen Indixes verzichtet. Dies ergibt sich aus der Speicherre- 0 2
B
1
striktion und dem nötigen Wartungsaufwand, der während
jeder Änderung anfällt. Hierdurch können Operationen un-
AB
201
vorhersehbar lange blockiert werden. Es sind keine Garan-
tien mehr möglich. Anstelle werden wie in einem gewöhn-
lichen Column-Store alle Elemente stetig geprüft. Dies ist Figure 2: Aufbau des Baumes nach dem Einfügen
durch moderne Hardware und der ständig steigenden Paral- von ’AB’ (Rechteck), welches über den Pfad 201 er-
lelisierung problemlos möglich. Sind c Cores gegeben, muss reichbar ist.
jeder Core nur maximal d cC c
e Elemente überprüfen, wobei
cC die Anzahl der Chunks angibt.
gleichzeitig effizient durchgeführt werden kann. Dies könnte
Lokale Anfrageverarbeitung. naiv erreicht werden, indem jeder nachfolgende Mapping-
Der LODCache besitzt keinerlei Logik für die Optimie- wert einige Zahlen zu seinem Vorgänger überspringt. Treten
rung von Anfragen. Aus diesem Grund ist eine vorgelagerte nun neue Einträge auf, können diese solange eingefügt wer-
Java-Applikation vorhanden. Diese nimmt SPARQL-Anfragen den, wie freie Plätze existieren. Ein Problem dieses Ansat-
entgegen, zerlegt diese, optimiert sie (lokale Optimierung) zes ist jedoch, dass nicht bekannt ist, in welcher Reihenfolge
und überführt sie in die Sprache des LODCaches. Dieser Strings auftreten und es ist gänzlich unbekannt an welcher
führt die entsprechende Operation durch und übergibt das freien Position ein Element eingefügt werden muss/soll (in
Ergebnis dem Java-Programm mittels JNI5 , dass die ermit- der Mitte, an der ersten oder letzten freien Position?). Eine
telten Daten an den Aufrufer sendet. falsche Position bedingt eine schnellere Reorganisation. Aus
Wird eine exakt Match Anfrage mit Subjekt1 , Objekt1 diesem Grund muss ein besser geeignetes Verfahren verwen-
und einem freien Prädikat ?p an den LODCache gesandt, det werden.
werden zuerst die Integerwerte der fest definierten Strings Ein solches wird für XML-Daten in [8] beschrieben. Die
gesucht und in ein Wort mittels Shift und logischen OR- Autoren zeigen ein rekursives Verfahren, um Daten in ei-
Operationen zu einer Maske (m) ergänzt. Dies wird mit- nem Baum abzulegen und eine eindeutige ID zu generie-
tels vier CPU-Operationen durchgeführt werden (COPY, ren. Hierfür wird auf jeder Ebene jede mögliche Verzweigung
SHIFT, OR, SHIFT). Die Operationen zum Filtern der Da- durchnummeriert6 . Nun wird zwischen geraden und ungera-
ten aus einem Chunk beschränken sich daraufhin nur noch den Elementen unterschieden. Die ungeraden Elemente sind
auf ein logisches AND und einen Vergleich (CMP), je Ein- vorhanden, um darin Werte sortiert aufzunehmen (durchge-
trag und Chunk. Die genaue Berechnung ist im Folgenden zogene Linie). Im Gegensatz zu den Ungeraden, denn die-
nochmals dargestellt. Wobei e das zu überprüfende Element se spannen einen neuen Unterbaum auf (gestrichelte Linie).
ist, m die Maske und r das Ergebnis als boolescher Wert. Soll ein neuer Wert eingefügt werden, wird dieser auf der
höchsten Ebene (sortiert) hinzugefügt, die (i.) mindestens
r = (e AND m) CMP m einen freien Platz besitzt und (ii.) lexikografisch den String
korrekt einordnet. Das neue Element kann nun über die Kon-
Werden Bereichsanfragen betrachtet, muss das Mapping katenation aller traversierten Baumverzweigungen eindeutig
der Strings auf Integerwerte eindeutig und ordnungserhal- identifiziert werden und wird sinnvollerweise in einem String
tend sein, da sonst immer das Wörterbuch zu Rate gezo- überführt. In Abbildung 2 ist ein Beispiel mit den Elementen
gen werden müsste. Dies bedeutet, jeder Integerwert muss ’A’, ’B’ und dem neuen Element ’AB’ gegeben. Durch die-
mit der lexikografischen Ordnung seines gegenüberliegenden sen Ansatz ist gewährleistet, dass sich neue Elemente immer
Strings übereinstimmen. Nur so können die in [9] aufge- zwischen zwei bereits bestehenden Elementen einsortieren
führten Operationen angewandt und die Performance von lassen. Problematisch an diesem Ansatz ist jedoch, dass be-
SIMD-Befehlen ausgenutzt werden. Hierfür muss zuerst der liebig viele Unterbäume generiert werden können, der Baum
minimale und maximale Integerwert der Bereichsanfrage er- zu einer Liste entartet und somit die Pfadlänge zu einem
mittelt werden. Daraufhin werden zwei Masken erstellt und Element sehr lang werden kann. Dies widerspricht jedoch
die Daten in den Chunks mit diesen, durch verschiedene lo- der oben genannten Forderung, nach einer festen Breite für
gische Operationen, verglichen. Elemente, sowie der Verwendung eines Integerwertes. Aus
diesem Grund muss eine Modifikation dieses Ansatzes ver-
Ordnungserhaltender Baum. wendet werden.
Ein Problem tritt jedoch beim Einfügen von neuen String- Anstelle eines Strings, um den Pfad eindeutig zu identifi-
werten auf. Diese werden meist lexikografisch zwischen zwei zieren, werden nun beispielsweise 32 Bit Werte verwendet.
bereits bestehenden Elementen eingeordnet. Somit müssten Im Folgenden werden weiterhin jeweils 2 Bit pro Ebene ver-
sich in einem naiven Ansatz alle IDs aller nachfolgenden wendet. Wobei für jede neue Ebene, die neu hinzukommen-
Stringwerte ändern. Das Wörterbuch und alle bestehenden den Bits an den bereits bestehenden Bits dahinter gehan-
Chunks müssen daraufhin überprüft und ggf. abgeändert gen werden (von der größten zur kleinsten Wertigkeit). Es
werden. ergeben sich insgesamt maximal 16 Ebenen. Von den mög-
Dies ist ein sehr großes und äußerst schwerwiegendes Pro- lichen vier (2b = 22 ) Werten pro Ebene können nur drei
blem, welches sich nicht vermeiden lässt. Es kann nur ver- verwendet werden (00, 01, 10). Dies ergibt sich daraus, da
sucht werden, dass die Reorganisation möglichst selten und der Wert 11 ungerade ist. In einem solchen müsste nach der
5 6
Java Native Interface In den weiteren Ausführungen wird von 0 gestartet.
00 01 10 Eingabe von Daten einen Hashwert, der genau einem Knoten
A 00 10
im Chord-Ring zugeordnet ist. Eine einfache Datenlokalisa-
01 tionsfunktion ist hierdurch gegeben. Der Vorteil, der hieraus
00 01 10 B entsteht ist ein globaler und flüchtiger Index, der keinerlei
Wartung benötigt und auf allen n Elementen gleichermaßen
AB
zur Verfügung steht.
100001 Für die Indizierung von RDF-Tripeln werden alle einstel-
ligen Kombinationen aus Subjekt, Prädikat und Objekt er-
Figure 3: Aufbau des Baumes nach dem Einfügen zeugt (s→op, p→so, o→sp). Diese werden nun mittels h(x)
von ’AB’ (Rechteck), welches über den Pfad 100001 auf den Ring verteilt, indem das zu indizierende Element in
erreichbar ist. h(x) gegeben wird und der entsprechende Knoten bestimmt
wird. Für dasselbe Literal ergibt sich immer derselbe Hash
und somit ist immer derselbe Knoten zuständig.
oben genannten Definition ein Element ablegt werden. Je-
doch existiert nach diesem kein weiteres gerades Element, Globale Anfrageverarbeitung.
womit nach einem falsch einsortierten Element kein weite- Im ersten Schritt wird eine beliebige SPARQL-Anfrage
res lexikografisch dahinter liegendes Element eingefügt wer- einem Client an einem beliebigen Knotenelement gesandt.
den kann. Dies würde eine frühere Reorganisation erzwingen, Der Empfänger wird zum Koordinator dieser Anfrage. Nun
was zu vermeiden ist. In Abbildung 3 ist das bereits weiter zerlegt er die SPARQL-Anfrage und überprüft, ob er alle
oben gezeigte Beispiel nochmals auf diesen Sachverhalt ab- Daten lokal besitzt. Ist dies der Fall, liest er die Daten aus
gebildet. und führt die gesamte Berechnung durch. Ansonsten leitet er
die umgeschriebenen Subanfragen an die zuständigen Kno-
Bewertung. ten weiter. Hierfür wird die Hashfunktion h(x) benötigt, in
Ein großes Problem dieses Ansatzes ist jedoch die geringe dem der nicht variable Teil einer jeden WHERE-Bedingung
Auslastung. So werden höchstens 50 % der möglichen Werte eingetragen wird. Während des Rewriting-Vorganges werden
verwendet und auch nur genau dann, wenn keine zusätzli- FILTER-Statements beachtet und in die Subqueries einbe-
chen Ebenen vorhanden sind. Somit treten wiederum sehr zogen, falls dies möglich ist (globale Optimierung). Durch
schnelle Reorganisationen auf. Auf der anderen Seite kann diese Technik arbeiten mehrere Knoten parallel an derselben
eine Reorganisation sehr schnell durchgeführt werden. Sie Ausgangsquery. Als Nebeneffekt wird die Datenmenge ver-
ist auf wenige logische Operationen pro Wörterbuch- und kleinert. Nach dem Erhalt der Subqueries arbeiten die Kno-
Chunk-Eintrag beschränkt (SHIFT- und OR-Operationen). ten diese ab (lokale Anfrageverarbeitung; siehe Kapitel 3.1)
Gleichzeitig kann durch eine Reorganisation die Ebenenan- und senden das Ergebnis an den Koordinator zurück. Die-
zahl verringert und somit die Anzahl an Bits pro Ebene ver- ser führt die benötigten Joins und die restlichen FILTER-,
größert werden. Die theoretisch mögliche Auslastungsgrenze GROUP BY-, HAVING-, ORDER BY-, LIMIT-, OFFSET-
steigt automatisch an. , Projektions-, usw. Operationen durch. Zum Schluss wird
das Ergebnis an den Client gesandt.
3.2 Globale Verarbeitung
Die globale Architektur besteht aus der Zusammenfassung Bewertung.
aller lokalen Verarbeitungseinheiten zu einer globalen Ein- Ein Problem dieses Ansatzes ist die mehrfache redundante
heit. Diese sind mittels der Technik eines Chord-Ringes [13] Datenhaltung derselben Daten in maximal drei verschiede-
miteinander verbunden. Er besteht aus n unabhängigen und nen Knoten und die dafür zweimal höhere Speicherkapazi-
gleichwertigen Elementen, die in einem geschlossenen Ring tät. Dies ist jedoch nur bedingt ein Nachteil. Durch den au-
angeordnet sind. Wobei jedes Element einen Vorgänger und tomatisierten Scale-Out-Mechanismus kann ein lokales Ele-
einen Nachfolger besitzt (siehe Abbildung 1; Doppeltpfeile ment entlastet werden, indem ein neuer Knoten einen Teil-
mit durchgehender Linie). Neben diesen Verbindungen exis- bereich der Hashwerte und die darin abgebildeten Daten für
tieren noch sogenannte Finger (siehe Abbildung 1; einfacher sich beansprucht. Ein weiterer Vorteil ist die Möglichkeit
Pfeil mit gestrichelter Linie). Dies sind zusätzliche unidirek- auf sehr große Anfragelasten dynamisch reagieren zu kön-
tionale Verbindungen, die mehrere Nachfolger überspringen nen. Es können automatisch neue Knoten hinzugefügt wer-
und somit für eine schnellere Kontaktaufnahme mit einem den, die einen Teil der Anfragelast übernehmen. Die Auftei-
beliebigen Element vorhanden sind. Wären diese nicht vor- lung des Speicherplatzes und Anfragelast, wird jeweils durch
handen, müsste eine Anfrage von einem Element zum an- die konsistente Hash-Funktion h(x) garantiert [10]. Durch
deren solange weitergereicht werden, bis der Empfänger er- den beschriebenen Scale-Out, wächst die maximale Pfad-
reicht ist (O(n)). Dies wird durch die Finger auf O(log2 n) länge nur bedingt an, da diese durch O(log2 n) definiert ist
verkürzt. (was einem Vorteil entspricht). Ein weiterer Vorteil ist, dass
zu jeder WHERE-Bedingung maximal ein Knoten involviert
Fragmentierungsfunktion. ist. Es müssen keine knotenübergreifenden Daten für bspw.
Für die Umsetzung eines Scale-Outs wird eine Fragmen- Bereichsanfrage gesammelt werden. Dies ist nur zwischen
tierungs- und Allokationsfunktion benötigt. Erstere definiert verschiedenen WHERE-Bedingungen nötig, die mittels Join
wie welche Daten aufgeteilt werden, letztere auf welchen verknüpft werden.
Knoten welches Element abgelegt wird. Beide sollten mög-
lichst einfach zu berechnen sein, da sie für jede Anfrage be-
nötigt werden (Datenlokalisation). Der Chord-Ring definiert 4. ZUSAMMENFASSUNG
hier bereits eine Hashfunktion h(x). Diese erzeugt durch die In dieser Arbeit wurde ein Ansatz vorgestellt, der mehre-
re Hundert Milliarden bzw. mehrere Billionen RDF-Tripel ge SPARQL-Anfragen ermittelt, die sich in Äquivalenzklas-
Linked Open Data effizient verwalten kann. Es wurde eine sen einteilen lassen. Den einfachen SPARQL-Anfragen, den
Unterscheidung in lokaler und globaler Verarbeitung durch- Anfragen, die eine Datenmanipulation erfordern sowie den
geführt. Die lokale Verarbeitungseinheit besteht aus einem analytischen SPARQL-Anfragen.
hochoptimierten In-Memory C++-Programm zur Datenhal-
tung und -abfrage, das die Strukturen moderner Hardware 6. REFERENCES
effizient ausnutzt. Im selben Abschnitt wurde eine Möglich- [1] Rdf - semantic web standards.
keit aufgezeigt, Bereichsanfragen effizient zu verarbeiten, in- http://www.w3.org/RDF.
dem ein ordnungserhaltendes Mapping von Strings auf In- [2] Sparql query language for rdf.
tegerwerten dargestellt wurde. Dies wird durch einen ord- http://www.w3.org/TR/rdf-sparql-query.
nungserhaltenden und updatefreundlichen Baum garantiert. [3] P. A. Boncz, M. L. Kersten, and S. Manegold.
Die globale Verarbeitungseinheit besteht aus dem Zusam- Breaking the memory wall in monetdb. Commun.
menschluss mehrerer lokaler Komponenten und verwendet ACM, 51(12):77–85, 2008.
hierzu die Technik des Chord-Ringes. Jedes Element ist gleich- [4] G. DeCandia, D. Hastorun, M. Jampani,
berechtigt, es existiert somit kein zentraler Koordinator. Für G. Kakulapati, A. Lakshman, A. Pilchin,
die Verbindung untereinander existieren Finger, die eine ma- S. Sivasubramanian, P. Vosshall, and W. Vogels.
ximale Anzahl an Weiterleitungen garantieren. Zur Verar- Dynamo: Amazon’s highly available key-value store.
beitung von beliebigen SPARQL-Anfragen werden diese von SIGOPS Oper. Syst. Rev., 41(6):205–220, 2007.
einem Knoten entgegengenommen, optimiert und an den be- [5] O. Erling and I. Mikhailov. RDF support in the
treffenden Knoten gesandt. Zur Datenlokalisation wird ei- virtuoso DBMS. In S. Auer, C. Bizer, C. Müller, and
ne einfache Hashfunktion und kein global zu pflegender In- A. V. Zhdanova, editors, CSSW, volume 113 of LNI,
dex benötig. Des Weiteren ist dieses Verfahren unabhän- pages 59–68. GI, 2007.
gig gegenüber der Anzahl an Tripeln und dem benötigten
[6] FU-Berlin. Berlin sparql benchmark.
Speicherplatz, da ein automatischer Scale-Out-Mechanismus
http://www4.wiwiss.fu-
existiert.
berlin.de/bizer/berlinsparqlbenchmark.
[7] A. Harth, K. Hose, M. Karnstedt, A. Polleres, K.-U.
5. AUSBLICK Sattler, and J. Umbrich. Data summaries for
In der weiteren Forschung müssen einige Punkte näher be- on-demand queries over linked data. In WWW, pages
trachtet werden, die als Motivation zu diesem Ansatz dienen. 411–420, 2010.
Hierunter fällt die Einhaltung der garantierten Antwortzeit [8] M. P. Haustein, T. Härder, C. Mathis, and M. W.
aller Anfragen bis zu einem vorher definierten Prozentsatz. 0002. Deweyids - the key to fine-grained management
Zur Unterstützung dieser Forderung ist eine Replikation der of xml documents. JIDM, 1(1):147–160, 2010.
Daten denkbar. [9] R. Johnson, V. Raman, R. Sidle, and G. Swart.
Dies führt zum nächsten Problem, der effizienten Replika- Row-wise parallel predicate evaluation. PVLDB,
tion. Bis zu diesem Zeitpunkt werden alle Daten nur auf ei- 1(1):622–634, 2008.
nem Knoten vorgehalten. Stürzt dieser ab, sind all seine Da- [10] D. R. Karger, E. Lehman, F. T. Leighton,
ten verloren und nachfolgende Anfragen können nicht mehr R. Panigrahy, M. S. Levine, and D. Lewin. Consistent
beantwortet werden. Als Ausweg bestünde die Möglichkeit, hashing and random trees: Distributed caching
ein ähnliches Vorgehen umzusetzen, wie es in Amazons Dy- protocols for relieving hot spots on the world wide
namo [4] implementiert ist. web. In F. T. Leighton and P. W. Shor, editors,
Zur weiteren Performancesteigerung ist es notwendig den STOC, pages 654–663. ACM, 1997.
LODCache weiter zu optimieren. Es existiert zum Beispiel
[11] T. Neumann and G. Weikum. RDF-3X: A RISC-Style
die Möglichkeit auf einer SandyBridge-CPU eine Schleife di-
Engine for RDF. In VLDB, Auckland, New Zealand,
rekt im CPU eigenen Loop-Cache abzulegen. Eine Perfor-
2008.
mancesteigerung von über 100 % soll möglich sein. Jedoch
[12] V. Raman, G. Swart, L. Qiao, F. Reiss, V. Dialani,
ist die Bedingung hierfür, dass alle Instruktionen höchstens
D. Kossmann, I. Narang, and R. Sidle. Constant-time
28 µ-Operationen lang sind.
query processing. In G. Alonso, J. A. Blakeley, and
Der oben beschriebene Ansatz zum Mapping von Strings
A. L. P. Chen, editors, ICDE, pages 60–69. IEEE,
auf ordnungserhaltende Integerwerte muss weiter erforscht
2008.
werden. Es ist u. a. notwendig, die Operationen zur Reor-
ganisation effizienter anzuordnen. Eine Möglichkeit zur Er- [13] I. Stoica, R. Morris, D. Liben-Nowell, D. R. Karger,
höhung der Auslastung wird außerdem angestrebt. In die- M. F. Kaashoek, F. Dabek, and H. Balakrishnan.
sem Zusammenhang soll gleichzeitig ein Verfahren entwi- Chord: a scalable peer-to-peer lookup protocol for
ckelt werden, um Updates auf bestehende Daten möglichst internet applications. IEEE/ACM Trans. Netw.,
effizient durchzuführen. 11(1):17–32, 2003.
Für die weitere Entwicklung und Evaluierung des Systems [14] C. Weiss, P. Karras, and A. Bernstein. Hexastore:
wird zukünftig ein Benchmark eingesetzt. Es wurde der Ber- Sextuple Indexing for Semantic Web Data
lin SPARQL Benchmark [6] ausgewählt. Dieser erzeugt ak- Management. In VLDB, Auckland, New Zealand,
zeptierte Resultate und ist für das Testen von beliebigen 2008.
SPARQL-Systemen entwickelt worden. Für Skalierungstests [15] K. Wilkinson, C. Sayers, H. Kuno, and D. Reynolds.
kann ein Skalierungsfaktor angepasst werden, der die Anzahl Efficient RDF storage and retrieval in Jena2. In Proc.
an automatisch erzeugten Tripeln vergrößert. First International Workshop on Semantic Web and
Die Performanz des Systems wird durch verschiedenarti- Databases, 2003.