Login
Newsletter
Werbung

Mo, 5. März 2012, 08:00

Software::Datenbanken

Google Vitess will MySQL skalierbarer machen

Google hat das Projekt Vitess enthüllt, das den Einsatz von MySQL für große Webpräsenzen effektiver machen soll. Teile von Vitess sind bereits produktiv nutzbar.

MySQL ist als Datenbank für Webanwendungen außerordentlich populär, obwohl es nie für den Einsatz im Web optimiert wurde. Selbst große Webpräsenzen nutzen MySQL, wobei die Replikationsfähigkeit der Datenbank nutzbringend eingesetzt wird. Nach Ansicht eines Google-Teams kann MySQL aufgrund der herkömmlichen Anforderungen, die an relationale Datenbanken gestellt werden, heutigen Webanwendungen nicht optimal gerecht werden. Aus diesem Grund von MySQL zu einer NoSQL-Datenbank zu wechseln, hieße aber, das Kind mit dem Bade auszuschütten.

Mit Vitess verfolgt Google einen anderen Ansatz, der in den Projektzielen vorgestellt wird. Die Datenspeicherung in MySQL bedarf keiner Verbesserung, meinen die Entwickler. Die Koordination vieler MySQL-Instanzen mit Replikation und Aufteilung der Daten kann hingegen optimiert werden. Das soll mit einem Frontend erreicht werden, das aus den MySQL-Instanzen ein lose gekoppeltes verteiltes System macht. Von den vier klassischen Datenbank-Garantien Atomizität, Konsistenz, Integrität und Dauerhaftigkeit (ACID) werden zwei geringfügig eingeschränkt. Die Atomizität wird für Webanwendungen als weitgehend unnötig angesehen und soll nur noch für einzelne Zeilen einer Tabelle gelten. Anwendungen sehen also Änderungen an einer Zeile ganz oder gar nicht, während das »ganz oder gar nicht« klassisch für jede Transaktion gilt. Auch die Konsistenz der Daten wird eingeschränkt, es wird für Replikate der Datenbank nur noch garantiert, das die Konsistenz nach Änderungen so schnell wie möglich wieder hergestellt wird. Abfragen, die an einen Server mit einem Replikat gestellt werden, können also inkonsistente Ergebnisse liefern. Anwendungen, die unbedingt Konsistenz benötigen, müssen ihre Abfragen an den Master-Server richten.

Weitere Optimierungen, die Google vornehmen will, sind Pools aus Verbindungen zur Datenbank, wobei die Verbindungen keine Sitzungsinformationen enthalten und damit deutlich effizienter sind. Außerdem soll der Puffer-Cache von MySQL durch einen Zeilen-Cache ergänzt werden. Der Puffer-Cache ist für Scans über ganze Bereiche von Tabellen und Indexen optimiert, während Webanwendungen oft nur eine Zeile benötigen. Durch das Cachen der benötigten Zeilen, die auch im Cache aktuell gehalten werden, soll die Geschwindigkeit weiter steigen.

Vitess wird das sogenannte Sharding unterstützen, das in MySQL nur durch manuelle Reorganisation und Anpassung aller Anwendungen möglich ist. Dabei wird eine große Tabelle so in mehrere kleine aufgeteilt, dass jede Teiltabelle eine Teilmenge der Zeilen enthält. Jede Teiltabelle wird auf einen anderen Server gelegt, so dass Parallelverarbeitung möglich wird. Bei Vitess soll die Aufteilung nur anhand von Wertebereichen des Primärschlüssels erfolgen; wenn dies nicht zu einer gleichmäßigen Aufteilung der Daten führt, sollte man einen Hash-Wert als Schlüssel verwenden. Weiter wird sich Vitess um die Replikation kümmern, auch über mehrere Rechenzentren verteilt. Außerdem soll Vitess dafür sorgen, dass Schema-Updates koordiniert verlaufen und keine merkliche Pause aus Sicht der Benutzer verursachen.

Vitess wird in der von Google erfundenen Programmiersprache Go geschrieben. Als Grund nennen die Entwickler, dass Go im Vergleich zu C++ und Java viel bessere Sprachkonstrukte zur Verfügung stelle und kaum langsamer sei. Zudem seien weitere Verbesserungen zu erwarten, besonders beim Garbage Collector.

Als erste Komponente von Vitess wurde Vtocc implementiert. Vtocc wird von Youtube bereits extensiv verwendet und ist somit produktiv einsetzbar. Das Programm stellt Verbindungs-Pools zur Verfügung, mit denen zahlreiche ankommende Verbindungen auf nur wenige Datenbankverbindungen abgebildet werden. Ein eingebauter SQL-Parser ermöglicht die Optimierung und das Cachen von Abfragen. Es verwaltet außerdem Transaktionen und trifft Maßnahmen bei Zeitüberschreitungen. Anleitungen und der Code von vtocc sind auf der Vitess-Projektseite verfügbar. Die Software steht unter einer BSD-Lizenz.

Werbung
Kommentare (Insgesamt: 5 || Alle anzeigen )
In Go geschrieben (Frank Frank, Di, 6. März 2012)
Re: hmm (Anonymous, Mo, 5. März 2012)
Re: das den Einsatz von MySQL ... (LH_, Mo, 5. März 2012)
hmm (asdfg, Mo, 5. März 2012)
das den Einsatz von MySQL ... (pcAlko_gast, Mo, 5. März 2012)
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung