2016 GEN

Ippolito Luca

MySQL-Storage-Engine für VulcanosDB

Durchführung: 08.02.2016 bis 18.03.2016

MySQL-Storage-Engine für VulcanosDB
In der FPT Motorenforschung AG werden tagtäglich viele Werte gemessen, ausgewertet und gesichert. Zurzeit werden diese Datensätze grösstenteils über das Datenbanksystem MySQL abgelegt. Die interne Softwareabteilung arbeitet jedoch seit geraumer Zeit an einem eigenen Datenbanksystem mit dem Namen ""VulcanosDB"". Grund für dieses Projekt ist, dass bei MySQL gewünschte Features nicht vorhanden sind. Durch die Entwicklung von VulcanosDB war die Implementierung dieser Funktionen jedoch möglich. Diese sind nachfolgend genauer beschrieben.

Feature 1: Versionierung von Datensätzen und der Datenbankstruktur
VulcanosDB erstellt bei jeder Veränderung an einem Datensatz oder an der Datenbankstruktur eine neue Version. Dadurch kann die History eines Datensatzes nachverfolgt werden. Auf ein reales Element abgebildet (beispielsweise ein Motor) wird klar, dass so genau nachvollzogen werden kann, wann welche Änderungen an diesem Element durchgeführt wurden.

Feature 2: Bidirektionale Referenzierung
Referenzen in VulcanosDB ermöglichen es, jene Datensätze zu bestimmen, von wo aus auf ein bestimmtes Element verwiesen wird. Dies ist in MySQL über Umwege wie komplexe Subselects ebenfalls möglich. VulcanosDB hingegen liefert diese Daten als Kenninformationen eines einzelnen Datensatzes und ist somit wesentlich einfacher zu handhaben.

In Zukunft werden möglichst viele Datenbestände von MySQL entfernt und bei Vulcanos abgelegt. Da aber bei vielen Programmen MySQL als Datenbankschnittstelle verwendet wird, wäre die Folge, dass bei zahlreichen Applikationen Anpassungen vorgenommen werden müssten. Um dies zu Umgehen wäre der Einsatz einer eigens entwickelten MySQL-Storage-Engine denkbar. Es handelt sich dabei um ein Plugin des MySQL-Servers, welches ermöglicht, die Schnittstelle zur Datenquelle zu definieren.
Ziel der IPA ist es nun, zu untersuchen, wie die Entwicklung eines solchen Plugins genau funktioniert und ob die Anforderungen der FPT Motorenforschung AG damit abgedeckt werden können.

Info zur Grafik
Die Grafik zeigt die Softwarearchitektur des MySQL-Servers. Es sind die internen Komponenten des Servers wie der Cache, der Parser, der Connection-Pool und die Plugins ersichtlich. Im Plugin-Container ist der entwickelte Prototyp ""VulcanosConnector"" enthalten, welcher eine externe Softwarkomponente Benutzt, das Klassenframework Boost. Zusätzlich ist ein MySQL-Client abgebildet, welcher eine Verbindung über den Connection-Pool aufbaut. Ausserdem ist neben dem Server des firmeninternen Datenbanksystems Vulcanos und ein zugehöriger Client ersichtlich, welche über ein Netzwerkprotokoll eine Verbindung zum entwickelten Plugin herstellt.


Der Schwerpunkt dieser integrierten produktiven Arbeit liegt bei der Erfahrungssammlung bezüglich der Entwicklung von MySQL-Storage-Engines. Die Dokumentation von MySQL selbst weist viele Lücken auf und die beschriebenen Mechanismen werden oftmals inkonsequent und nicht wie als optimal beschrieben umgesetzt. Daher wird mit dieser Facharbeit ein Leitfaden zur Entwicklung einer Engine geliefert. Neben Erklärungen zur Softwarestruktur, Anleitungen zur Vorbereitung der zur Entwicklung benötigten Komponenten und Beschreibungen zum Vorgehen bei der Fehlerbehandlung, liegt das Hauptaugenmerk bei der Erklärung der Funktionsweise einfacher Selects.
Zudem ist die Entwicklung eines Prototyps einer Storage-Engine Bestandteil der IPA. Dieser zeigt, wie die gewonnenen Erfahrungen praktisch umgesetzt werden. Der Prototyp hat dabei die Aufgabe, den Datenbestand eines internen Datenbanksystems über das Interface von MySQL abzufragen.
Zu Letzt enthält diese Dokumentation eine Empfehlung dazu, inwiefern die Fortführung der Entwicklung einer Storage-Engine für die Kommunikation zwischen den beiden Datenbanksystemen praktikabel ist.