Besserer Code fĂĽr die Wolke

Die Wiederbelebung einer alten Datenbank-Programmiersprache soll das Cloud Computing beschleunigen helfen.

vorlesen Druckansicht
Lesezeit: 5 Min.
Von
  • Erica Naone

Die Wiederbelebung einer alten Datenbank-Programmiersprache soll das Cloud Computing beschleunigen helfen.

Cloud Computing, also das Auslagern der IT-Infrastruktur vom Rechenzentrum vor Ort in eine Server-"Wolke" im Internet, erlaubt es Firmen, Daten effizienter zu verarbeiten und zu speichern als je zuvor. Die dabei zum Einsatz kommende Software, mit der die vielen einzelnen Maschinen in der Cloud angesteuert werden, arbeitet jedoch häufig erstaunlich plump. Der Grund: Sie ist noch zu selten auf die Verteilung von Aufgaben über zahlreiche Rechner optimiert.

Forscher an der University of California in Berkeley arbeiten deshalb an einer neuen Programmiersprache, die das Cloud Computing vereinfachen und beschleunigen soll. Dabei bedienen sie sich Ideen, die ursprĂĽnglich in den Achtzigerjahren fĂĽr die Erstellung von Datenbanken entwickelt wurden.

Die heute standardmäßig verwendeten Programmierumgebungen waren nie dafür gedacht, mit zahlreichen Maschinen gleichzeitig umzugehen - erst recht nicht, wenn die Daten nahezu beliebig über sie verteilt werden können. Schnittstellen wie "MapReduce" von Google oder sein Open-Source-Konkurrent "Hadoop" versuchen deshalb, leicht bedienbare Werkzeuge an bestehende Programmiersprachen anzuflanschen. Doch wirklich effizient ist auch dieser Prozess nicht.

"Wir können Computer nicht mehr so weiter programmieren, wie wir das bisher getan haben", meint Joseph Hellerstein, Professor für Computerwissenschaften in Berkeley, der das neue Cloud Computing-Optimierungsprojekt leitet. "BOOM" genannt, soll es "große Wolken aus kleinen Programmen" bilden, wie es in der Selbstbeschreibung heißt. "Es gibt bislang keine einfache Methode, Software zu erstellen, die die Möglichkeit nutzt, ihren Code über 100 bei Amazons Web Services gemietete Rechner zu verteilen", erklärt Hellerstein die praktische Herausforderung.

Herkömmliche Programme bestehen aus Instruktionen, die einen Computer anleiten, eine Reihe von Aktionen in einer bestimmten Reihenfolge durchzuführen. Eine der größten Vorteile des Cloud Computings ist es jedoch, dass man ein Programm leicht aufteilen kann, so dass verschiedene Instruktionen gleichzeitig verarbeitet werden können. Mit den meisten gebräuchlichen Programmiersprachen ist es allerdings schwer, Code zu schreiben, der das auch optimal nutzt. Nicht selten entsteht so ein überfrachtetes Stück Software.

Hellerstein will nun das Design von Programmen ermöglichen, die auf einer riesigen Infrastruktur mit Tausenden einzelnen Maschinen laufen können - und trotzdem sehr kompakt sind. Um dies zu erreichen, hat er alte Forschungsarbeiten aus den Achtzigerjahren wiederentdeckt. Damals versuchten Wissenschaftler, die Programmierung von Datenbanken effizienter zu machen. Diese Techniken, bei denen große Datensätze zunächst aufgefunden und dann auf unterschiedliche Arten parallel verarbeitet werden, könnten sich für verteilte Infrastrukturen wie die Cloud besonders gut eignen, glaubt Hellerstein.

Einer der Gründe dafür ist, dass Datenbankinformationen häufig gebündelt verarbeitet werden - als so genannte Batch-Jobs. Dabei spielt es keine Rolle, in welcher Reihenfolge diese ablaufen. Das erleichtert es Programmierern, Datenbankaufgaben auf zahlreiche Prozessoren zu verteilen. Das ist so einfach, dass Experten solche Programme gerne "peinlich parallel" nennen.

Hellersteins Gruppe veränderte nun eine alte Programmiersprache namens Datalog so, dass sich damit Software für die Cloud entwickeln lassen.

Dabei mussten die Forscher zunächst prüfen, an welcher Stelle eines Programms unbedingt ein Haltepunkt eingerichtet werden muss, um die Statusinformationen der einzelnen Jobs zu sammeln. Aus dieser Arbeit entstand eine Programmiersprache namens Bloom, die Programmierern einen "freundlichen Weg" aufzeigen soll, mit dem oftmals komplexen Syntax von auf Datalog basierenden Systemen umzugehen.

Hellerstein hofft, dass Bloom Programmierern helfen wird, Software fĂĽr die Cloud zu entwickeln, ohne dass sie sich dabei ganz von bekannten Sprachen verabschieden mĂĽssen. Deshalb soll die Plattform auch als Bibliothek fĂĽr beliebte Entwicklungsumgebungen wie Java oder Python zur VerfĂĽgung stehen. Die Verwendung von Bloom innerhalb einer solchen Sprache soll Programmierer dazu ermutigen, die in der Cloud vorhandenen Ressourcen effizienter einzusetzen. Gleichzeitig mĂĽssen sie keine komplett neue Sprache lernen.

Georg Gottlob, Professor am Oxford University Computing Laboratory und Experte für Datalog, hält die Verwendung der Sprache für Web-Anwendungen für eine sinnvolle Idee. "Als Datalog erfunden wurde, kam es zu früh, um breite Verwendung zu finden." Damals habe schlicht nicht die heute zur Verfügung stehende Rechenleistung bereitgestanden. Mit den verteilten Systemen heutiger Tage habe die Sprache nun "eine große Renaissance" erlebt.

"Dorthin bewegt sich die Zukunft", glaubt auch Elias Torres, der Cloud Computing-Werkzeuge bei verschiedenen Start-ups einsetzt. Vor einigen Jahren nutzte Torres bereits einen Vorläufer von Bloom bei einem Projekt, bei dem es um die Vereinfachung komplexer Protokolle für verteilte Systeme ging. "Das war sehr aufschlussreich, weil ich mich ganz auf die Daten konzentrieren konnte, die durch das System flossen."

Es werde immer wichtiger, zu verstehen, wie Daten gespeichert und organisiert sein müssten. Denn: Die Datenmengen, mit denen Web-Anwendungen umzugehen haben, wachsen ständig. "Werkzeuge wie Bloom werden da immer nützlicher." (bsc)