DISS. ETH NO. 22441 Architectures for Elastic Database Services A thesis submitted to attain the degree of DOCTOR OF SCIENCES of ETH ZURICH (Dr. sc. ETH Zurich) presented by SIMON MANFRED LOESING M. sc. in Computer Science, ETH Zurich born on 21.02.1982 citizen of Germany accepted on the recommendation of Prof. Dr. Donald Kossmann (ETH Zurich), examiner Prof. Dr. Gustavo Alonso (ETH Zurich), co-examiner Prof. Dr. Alfons Kemper (TU Munich), co-examiner 2015
Abstract The emergence of cloud technologies has caused a profound disruption in the market for data management systems. The access to (virtually) unlimited computing resources has considerably changed the requirements towards data processing and storage systems. Specifically, properties such as scalability, elasticity, cost-efficiency, and ease of deployment are increasingly becoming critical success factors for many businesses. In response to these new demands, traditional relational database systems have been challenged by various new large-scale data services as well as alternative storage systems. This trend has resulted in a jungle of heterogeneous data processing solutions all providing different features and guarantees. This dissertation aims at understanding the limits and the trade-offs in providing traditional database features in the context of cloud computing. To explore the design space, we assess alternative architectures for distributed transaction processing and highlight key options with regard to scalability, flexibility, and robustness. In particular, we examine what architectural properties are required in order to meet the requirements of dynamic cloud environments. Our analysis is extended by a comprehensive evaluation of existing commercial cloud services that have adopted these architectures. To that end, we have developed a new benchmarking methodology that takes into account the specific characteristics of cloud data services. That is, we validate if the promises of unlimited throughput and reduced cost can be fulfilled. The results are surprising in several ways. Most importantly, it seems that all major vendors have adopted a different architecture for their services. As a result, the cost and performance vary significantly depending on the workload. The limitations of current cloud data processing solutions with regard to database workloads motivated the development of a new system: Tell. Tell is a distributed relational database designed for scalable and elastic transaction processing. It implements an architecture design based on two principles: We decouple query processing and transaction i
management from data storage, and we share data across query processing nodes. The combination of these design choices enables elasticity and is the foundation for cost-efficient database infrastructures. Moreover, the separation of concerns allows for mixed workloads. That is, transactional and analytical workloads can be performed simultaneously on separate processing nodes but accessing a single, shared copy of the data. As a drawback, sharing data among multiple database nodes causes substantial synchronization overhead. To overcome this limitation, we present techniques for scalable transaction processing in shared-data environments. Specifically, we provide mechanisms for efficient data access, concurrency control, and data buffering. The implementation of these techniques is facilitated by new hardware trends and provides scalable OLTP performance. Architectures that share data have been adopted by several data management systems in the past. A prominent example is Apache Hadoop. Although these systems are widely used, performing database transactions on shared data has not been a main focus as of yet. To bridge this gap, we provide an in-depth evaluation of alternative concurrency control mechanisms for shared-data systems, such as Tell. We adapt established techniques such as snapshot isolation, timestamp ordering, and locking to operate in a distributed environment on top of a shared store. Each technique is designed to minimize synchronization overhead while providing full ACID (Atomicity, Consistency, Isolation, Durability) semantics. Tell is used as a reference system to implement and evaluate the alternative approaches. This dissertation contributes to our scientific understanding of how to build elastic distributed database services for cloud infrastructures. It provides an essential piece in the puzzle of developing next generation data processing solutions. ii
Zusammenfassung Die Verbreitung von Cloud-Technologien hat weitreichende Veränderungen im Markt für Datenverarbeitungssysteme ausgelöst. Der Zugriff auf (praktisch) unbegrenzte Rechenressourcen hat die Anforderungen in Bezug auf Datenverarbeitungs- und Speichersysteme massgeblich verändert. Eigenschaften wie Skalierbarkeit, Elastizität, Kosteneffizienz und einfaches Installieren werden zunehmend kritische Erfolgsfaktoren für viele Unternehmen. Als Reaktion auf diese neuen Bedürfnisse wurden traditionelle, relationale Datenbanksysteme von neuen Datendiensten und alternativen Speichersystemen herausgefordert. Diese Entwicklung hat zu einem regelrechten Dschungel von heterogenen Datenverarbeitungssystem geführt, welche alle unterschiedliche Funktionen und Garantien bereitstellen. Diese Dissertation möchte verstehen, inwieweit Abstriche bzw. Kompromisse bei der Umsetzung von klassischen Datenbankfunktionen im Kontext von Cloud Computing erforderlich sind. Um die Entwurfsmöglichkeiten zu erkunden, bewerten wir alternative Architekturen für verteilte Transaktionsverarbeitung und heben Schlüsseloptionen in Bezug auf Skalierbarkeit, Flexibilität und Robustheit hervor. Im Einzelnen untersuchen wir, welche Architektureigenschaften notwendig sind, um die Anforderungen von dynamischen Cloud- Umgebungen zu erfüllen. Unsere Analyse wird durch eine umfassende Evaluierung von bestehenden, kommerziellen Cloud-Diensten abgerundet, welche diese Architekturen übernommen haben. Zu diesem Zweck schlagen wir eine neue Mess-Methodik vor, welche die spezifischen Eigenschaften von Cloud-Datendiensten einbezieht. Das heisst, wir überprüfen, ob das Versprechen von unbegrenzter Durchsatzrate und reduzierten Kosten erfüllt werden kann. Die Ergebnisse sind in vielerlei Hinsicht überraschend. Allem voran scheint es, als hätten alle Betreiber eine andere Architektur für ihre Dienste verwendet. Dementsprechend variieren Kosten und Leistung massgeblich bei unterschiedlicher Last. Die Grenzen bestehender Cloud-Datenverarbeitungslösungen in Bezug auf Datenbankanfragen hat die Entwicklung eines neuen Systems angeregt: Tell. Tell ist eine verteilte, reiii
lationale Datenbank, entworfen mit dem Ziel skalierbarer und elastischer Transaktionsverarbeitung. Die neue Systemarchitektur basiert auf zwei Prinzipien: Wir entkoppeln Anfrageverarbeitung und Transaktionsverwaltung von Datenspeicherung, und wir teilen die Daten über alle Anfrageverarbeitungsknoten. Die Kombination dieser Entwurfsentscheidungen ermöglicht elastische Datenbanken und ist die Grundlage für kosteneffiziente Datenbankinfrastrukturen. Desweiteren ermöglicht die Trennung der Belange die Ausführung unterschiedlicher Datenbanklasten. Das heisst, sowohl transaktionale als auch analytische Anfragen können gleichzeitig auf unterschiedlichen Verarbeitungsknoten ausgeführt werden, greifen aber auf die geteilte Kopie der Daten zu. Ein Nachteil der Teilung von Daten über mehrere Knoten sind die beträchtlichen Synchronisationskosten. Um diese Einschränkung zu umgehen, präsentieren wir Techniken für die skalierbare Transaktionsverarbeitung in shared-data -Umgebungen. Im Einzelnen stellen wir Mechanismen für den effizienten Datenzugriff, die Steuerung der Gleichzeitigkeit und der Datenpufferung vor. Die Implementierung dieser Techniken wird durch neue Hardwareentwicklungen gefördert und ermöglicht Leistungscharakteristiken, welche moderne, verteilte Datenbanken übertreffen. Architekturen die Daten teilen, wurden in der Vergangenheit von mehreren Datenverarbeitungssystemen angenommen. Ein bekanntes Beispiel ist Apache Hadoop. Obwohl solche Systeme weit verbreitet sind, hat das Ausführen von Datenbanktransaktionen über geteilte Daten noch keine grosse Aufmerksamkeit erlangt. Um diese Lücke zu schliessen, evaluieren wir alternative Mechanismen zur Steuerung der Gleichzeitigkeit für shareddata -Systeme wie Tell. Wir passen bewährte Techniken wie Snapshot Isolation, Timestamp Ordering und Locking an, um in einer verteilten Umgebung auf einem geteilten Speicher zu arbeiten. Jede Technik wurde entworfen, um den Synchronisationsaufwand zu minimieren, während gleichzeitig die ACID-Eigenschaften (Atomarität, Konsistenz, Isolation, Dauerhaftigkeit) vollumfänglich gewährleistet werden. Tell wird als Referenzsystem benutzt, um die Verfahren zu implementieren und zu evaluieren. Diese Dissertation trägt zu unserem wissenschaftlichen Verständnis bei, wie man elastisch verteilte Datenbankdienste für Cloud-Infrastrukturen baut. Sie liefert ein zentrales Element im Puzzle der Entwicklung der nächsten Generation von Datenverarbeitungslösungen. iv