Cloud-native: DB-Cluster-System Vitess 6 versteht mehr SQL-Syntax

Erweiterter Support für SQL, Helm 3 und den Kubernetes Topology Service sind die wichtigsten Neuerungen im Major Release.

In Pocket speichern vorlesen Druckansicht
Cloud-native: DB-Cluster-System Vitess 6 versteht mehr SQL-Syntax

(Bild: Tommy Lee Walker / Shutterstock.com)

Lesezeit: 3 Min.
Von
  • Matthias Parbel
Inhaltsverzeichnis

Das Entwicklerteam hinter dem von der Cloud Native Computing Foundation (CNCF) gehosteten Projekt Vitess hat Version 6 des Cloud-nativen Clustersystems vorgelegt, das vor allem zur horizontalen Skalierung von MySQL-Datenbank-Anwendungen dient. In das neue Major Release sind vor allem erweiterte Unterstützung für die Syntax von MySQL eingeflossen. Mit dem Update auf Helm 3 kommen nun aber auch Helm Charts standardmäßig zum Verwenden des Kubernetes Topology Service zum Einsatz.

Vitess wurde ursprünglich bei YouTube entwickelt, um die Verwaltung großer Speichermengen zu optimieren. Daraus erwuchs ein Cloud-natives Cluster-System, dass MySQL-Datenbank-Anwendungen mit der Skalierbarkeit von NoSQL-Datenbanken kombinieren soll. Vitess greift dazu auf die Methode des Sharding zurück, um die Daten über verschiedene Server- beziehungsweise Cloud-Instanzen verteilen zu können, ohne die eigentliche Applikation anpassen zu müssen. Da MySQL Sharding nicht nativ unterstützt, muss Vitess die entsprechende Logik in die SQL-Syntax übertragen. Version 6 beherrscht dazu nun einen größeren Umfang der Syntax, sodass einige bisher typische Probleme behoben werden konnten – darunter die Funktion SQL_CALC_FOUND_ROWS, aber auch SHOW-Befehle, die Ergebnisse nicht korrekt wiedergegeben haben. Ein noch offenes Kompatibilitätsproblem soll in Vitess 7 bereinigt werden: das Setzen von Session-Variablen.

Bei den Anpassungen der SQL-Syntax hat sich das Entwicklerteam an Queries orientiert, wie sie weit verbreitete Anwendungen und Frameworks absetzen, und hat diese analysiert, um sie besser verstehen zu können. Die Ergebnisse dieser Untersuchungen sind außerdem in die End-to-End-Testsuite für die Plattform eingeflossen. Die darin enthaltenen Integrationstests waren bisher allesamt in Python geschrieben. Das Team von PlanetScale hat die komplette Testsuite jedoch inzwischen auf Golang migriert. Ausschlaggebend für die Entscheidung zum Umbau auf Go waren offenbar das EoL der bisher verwendeten Python-Version 2.7 sowie der aus Sicht von PlanetScale hohe Aufwand beim Entwickeln und Debuggen der Python-Tests. Parallel zur Programmiersprachenmigration wurden außerdem die CI Pipelines für Vitess von Travis CI auf GitHub Actions umgestellt.

Nachdem das Projekt etcd-operator nicht mehr weitergeführt wird, mussten die Vitess-Entwickler zudem alternative Wege für den Topology Service einschlagen, der wichtige Informationen für das Cluster-Management und Routing von Datenbankabfragen bereitstellt. Mit dem Wechsel von etcd2 – dem bisherigen Standard-Plug-in für den Topology Service – auf Helm Charts steht Vitess-Anwendern nun Kubernetes für die Topologie-Dienste zur Verfügung. Die Neuerungen in Version 3 des Kubernetes-Paketmanagers Helm vereinfachen zudem das Installieren von Vitess, da eine größere Zahl an Kubernetes-Versionen unterstützt wird.

Zum Erscheinen von Vitess 4 Ende vergangenen Jahres galt die Unterstützung für VReplication noch als experimentelle Funktion. Im neuen Release stehen Prozesse wie MoveTables und Resharding nun in vollem Umfang zur Verfügung. Gegenüber ihren Vorläufern Vertical Split Clone und Horizontal Sharding sollen die Replikationsprozesse auf wenigere Einzelschritte vereinfacht worden sein. Noch sind aber Vertical Split Clone und Horizontal Sharding nicht als deprecated gekennzeichnet, das Vitess-Team will aber langfristig auf diese Prozesse verzichten.

Weitergehende Informationen zum neuen Major Release finden sich im CNCF-Blogbeitrag zur Ankündigung von Vitess 6 sowie auf der Website des Projekts. (map)