Verteilte Datenbanken mit CockroachDB

Während sich gängige SQL-Datenbanken wie MySQL mit der Skalierung schwertun, ist CockroachDB darauf ausgelegt, auf vielen Servern synchron zu laufen.

Artikel verschenken
In Pocket speichern vorlesen Druckansicht
Verteilte Datenbanken mit CockroachDB

(Bild: Albert Hulm)

Lesezeit: 10 Min.
Von
  • Jan Mahn
Inhaltsverzeichnis

Entwickler von Datenbank-Anwendungen, etwa dynamische Webseiten oder APIs, stehen häufig nach einigen Jahren vor dem Problem, dass der darunterliegende Server an seine Leistungsgrenzen kommt, wenn immer mehr Nutzer und Daten dazukommen. Einen Teil des Problems kann man mit Container-Technik sehr elegant lösen und schnell weitere Instanzen der Anwendung starten. Bei der Datenbank ist das dagegen deutlich komplizierter. Genau dieses Problem geht CockroachDB an. Die Datenbank ist von Anfang an darauf ausgelegt, Daten auf beliebig vielen Knoten auf dem gleichen Stand zu halten. Das ist attraktiv für Entwickler, die ihre Software besonders leistungsfähig, ausfallsicher oder weltweit gleich schnell erreichbar gestalten wollen.

Mehr zu Datenbanken

CockroachDB hat auch kein Problem damit, dass einzelne Knoten mal ausfallen können oder wegen Netzwerkproblemen nicht erreichbar sind. Mit dem namensgebenden Tier, der Küchenschabe, hat CockroachDB zwei Dinge gemeinsam: Die Datenbank ist besonders robust konstruiert und die Server treten immer in Gruppen auf. Kommen einzelne Knoten gewaltsam zu Tode, gefährdet das nicht den Datenbestand.

Die Idee für verteilte und ausfallsichere Datenbanken ist nicht ganz neu. So verfolgt Google zum Beispiel mit dem Projekt "Spanner" einen ähnlichen Ansatz. Spanner braucht eine Atomuhr oder zumindest einen GPS-Empfänger in jedem Server, damit sich die Datenbankknoten einigen können, in welcher Reihenfolge Transaktionen stattfanden. Die Software setzt voraus, dass die Uhren aller beteiligten Knoten um höchstens 7 Millisekunden abweichen. Daher wartet das System nach jedem Schreibvorgang genau 7 Millisekunden, bevor der Eintrag als geschrieben markiert wird.