Verteilte Dictionaries in einer SPARQL-Datenbank

- Bachelor-/Masterarbeit -


Beschreibung:

Das Semantic Web erhält eine immer größer werdende Bedeutung, welches sich unter anderem an der steigenden Anzahl von entwickelten und im Einsatz befindlichen Semantic Web Tools und Applikationen fest machen läßt. Die Kernidee des Semantic Webs ist es, durch Einbeziehung der Bedeutung von Symbolen die maschinelle Verarbeitung zu präzisieren.

Im BigSIot-Projekt entwickeln wir die Semantic-Web-Datenbank Luposdate3000. Zur effizienten Auswertung von Anfragen werden Spalteniteratoren verwendet. Die Datenbank ist komplett in Kotlin geschrieben. Diese Programmiersprache ermöglicht es den gleichen Quellcode für unterschiedliche Plattformen wie Java, JS, Windows, Linux, Android, IOS, ... zu kompilieren. Zusätzlich bietet Kotlin einige Sprachfeatures wie z.B. "inline", wodurch zur Compilezeit wesentliche Optimierungen durchgeführt werden können.

Um in einer Datenbank möglichst viele Werte kompakt abzuspeichern, sowie die Berechnungen zu Beschleunigen, werden häufig Dictionaries verwendet. Diese Dictionaries verwalten ein bidirektionales und eindeutiges Mapping zwischen einem Wert (String) und einer ID (Integer). Der wesentliche Vorteil ist, dass die eigentlichen Daten dann nur noch aus einer Folge von Integern bestehen. Dies reduziert die zu übertragenden Daten, und erleichtert die Adressierung in der restlichen Datenbank, da alle Werte exakt 4-Byte belegen.

Es gibt viele Möglichkeiten, wie genau ein Dictionary implementiert werden kann, sodass jeweils verschiedene Eigenschaften besser/schlechter unterstützt werden.

Wesentliche Eigenschaften von lokalen Dictionaries sind:

  • Speicherbedarf - sowohl auf der Festplatte, als auch im Arbeitsspeicher
  • Anzahl der temporären Objekte, da diese den Speicher-Allokator belasten
  • Anzahl großer Adress-Sprünge, da dies die Festplatte sowie das Caching stark belastet
  • Lese-Geschwindigkeit (Abbildung von ID->Wert)
  • Schreib-Geschwindigkeit (Abbildung von Wert->ID)
  • Speicher-Modell (Seitenbasiert wie bei Datenbanken üblich, oder eigenständiges Speicher/Cache-Management)

Bei verteilten Datenbanken ist zusätzlich noch wichtig:

  • die Caching-Fähigkeit des Dictionaries für Werte, die eigentlich woanders gespeichert sind
  • die Gleichmäßigkeit der Verteilung der Daten
  • die Menge der übertragenen Daten in dem Fall, dass ein Wert nicht gecacht aber (auf einer anderen Datenbank Instanz) vorhanden ist.

In der Bachelor/Master-Arbeit sollen verschiedene Verfahren implementiert und gegeneinander bezüglich Ihrer Eigenschaften verglichen werden.

Anforderungen/Kenntnisse:
Kotlin, Datenbank-Grundkenntnisse

Betreuung:

Benjamin Warnke
Institut für Informationssysteme
Ratzeburger Allee 160 ( Gebäude 64 - 2. OG)
23562 Lübeck
Telefon: 0451 / 3101 5718

Prof. Dr. rer.nat. habil. Sven Groppe
Institut für Informationssysteme
Ratzeburger Allee 160 ( Gebäude 64 - 2. OG)
23562 Lübeck
Telefon: 0451 / 3101 5706