Physical design in databases

We live in an age where data has become one of the most important assets of companies. Data in itself is valuable, yet it has to be turned into information to become useful. This is where database management systems come into the picture. They allow for efficient processing of even terabytes of data, and thus provide the basis of knowledge extraction and information retrieval. A high-performance database system is an essential requirement for making big data analysis possible. The performance of database systems can be improved at multiple levels of the system, and using various approaches. In this work we focus on data layouts, and also investigate the performance implications of compiling hand-written queries and whole database systems as well. We present an exhaustive experimental study on vertical partitioning algorithms. Vertical partitioning itself is a physical design technique to partition a given logical relation into a set of physical tables, called vertical partitions. It is a crucial step in physical database design in legacy row-oriented databases. We show a survey of query processing on top of flat files, which are text files containing data encoded in some standard text format. Flat files are commonly used in various fields of science to store experimental results in a human-readable format. We explore the performance implications of compiling both hand-written queries, and whole database systems as well. We present two techniques for improving query performance that build upon changing compiler setups, and apply them in a main-memory database system. Wir leben in einem Zeitalter, in dem Daten eine der wichtigsten Ressourcen eines Unternehmens darstellen. Obwohl Daten bereits in ihrer Rohform ein wertvolles Gut sind, mussen zunachst die Informationen aus ihnen herausgearbeitet werden, um sie verwertbar zu machen. Genau an diesem Punkt treten Datenbanksysteme in Erscheinung. Diese ermoglichen eine effiziente Verarbeitung von Daten in der Grosenordnung von Terabytes und stellen damit die Grundlage von Wissensextraktion und Informationsgewinnung dar. Ein Hochleistungsdatenbanksystem ist daher eine unentbehrliche Anforderung, um Big Data Analysen uberhaupt erst moglich zu machen. Die Leistungsfahigkeit von Datenbanksystemen kann auf mehreren Ebenen und unter dem Einsatz verschiedenster Techniken verbessert werden. In dieser Arbeit konzentrieren wir uns auf die (physische) Anordnung von Daten und untersuchen daruber hinaus die Auswirkungen von Kompilierung auf handgeschriebene Anfragen sowie auf komplette Datenbanksysteme. Zunachst prasentieren wir eine ausfuhrliche experimentelle Studie uber vertikale Partitionierungsalgorithmen. Vertikale Partitionierung ist eine Methode aus dem Bereich des physischen Datenbankentwurfs, bei der eine logische Relation in eine Menge von physischen Tabellen zerlegt wird. Es stellt einen fundamentalen Schritt des physischen Datenbankentwurfs in zeilenorientierten Datenbanksystemen dar. Daruber hinaus prasentieren wir eine Studie uber Anfrageverarbeitung auf einfach strukturierten Textdateien. Dieses Format wird in verschiedenen Bereichen des wissenschaftlichen Arbeitens verwendet, um experimentelle Ergebnisse in einer lesbaren Form abzuspeichern. Des weiteren untersuchen wir den Einfluss der Kompilierung auf das Laufzeitverhalten von handgeschriebenen Anfragen sowie von kompletten Datenbanksystemen. Wir prasentieren zwei verschiedene Methoden zur Beschleunigung der Anfrageverarbeitung, die auf Anpassungen der Kompilierungseinstellungen beruhen, und wenden diese in einer Hauptspeicherdatenbank an.