Anwendungsprofile

In einem Anwendungsprofil sind Einstellungen gespeichert, die einer Cloud Bigtable-Instanz vorgeben, wie die von einer Anwendung eingehenden Anfragen zu verarbeiten sind. Wenn eine Ihrer Anwendungen eine Verbindung zu einer Cloud Bigtable-Instanz herstellt, kann sie ein App-Profil angeben, das Cloud Bigtable dann für alle Anfragen verwendet, die die Anwendung über diese Verbindung sendet.

App-Profile steuern die Kommunikation Ihrer Anwendungen mit Instanzen, die Replikation verwenden. Daher eignen sich App-Profile besonders für Instanzen mit zwei oder mehr Clustern. Auch wenn Ihre Instanz nur einen einzigen Cluster hat, können Sie für jede ausgeführte Anwendung oder für verschiedene Komponenten in einer einzigen Anwendung ein eigenes App-Profil verwenden. In diesem Fall können Sie sich separate Grafiken Ihrer Cloud Bigtable-Messwerte für jedes Anwendungsprofil ansehen.

Auf dieser Seite werden die Einstellungen erläutert, die von einem App-Profil gesteuert werden. Außerdem erfahren Sie, wie App-Profile mit Ihrer Anwendung interagieren. Beispiele für Einstellungen, die Sie zum Implementieren gängiger Anwendungsfälle verwenden können, finden Sie unter Beispiele für Replikationseinstellungen. Weitere Informationen zum Erstellen und Verwalten von Anwendungsprofilen finden Sie unter Anwendungsprofile konfigurieren.

Wenn Sie Anwendungsprofile zum Konfigurieren der Replikation verwenden, sollten Sie sich mit den Informationen unter Replikation – Übersicht vertraut gemacht haben, bevor Sie diese Seite lesen.

Einstellungen in App-Profilen

In einem App-Profil ist die Routingrichtlinie definiert, die von Cloud Bigtable verwendet wird. Das Anwendungsprofil bestimmt außerdem, ob Transaktionen für einzelne Zeilen zulässig sind.

Routingrichtlinie

In einem Anwendungsprofil ist die Routingrichtlinie angegeben, die Cloud Bigtable für jeden Request verwenden soll:

  • Single-Cluster-Routing leitet alle Anfragen an einen einzigen Cluster in Ihrer Instanz weiter. Wenn dieser Cluster nicht mehr verfügbar ist, müssen Sie manuell ein Failover auf einen anderen Cluster machen.

  • Multi-Cluster-Routing leitet Anfragen automatisch an den nächsten Cluster in einer Instanz weiter. Wenn der Cluster nicht mehr verfügbar ist, wird der Traffic automatisch auf den nächsten verfügbaren Cluster übertragen. Cloud Bigtable betrachtet Cluster in einer einzelnen Region als äquidistant, auch wenn sie sich in verschiedenen Zonen befinden.

Weitere Informationen zu Failovers finden Sie unter Failovers. Wie Sie einen Failover ausführen, erfahren Sie unter Failover verwalten.

Transaktionen für einzelne Zeilen

In Cloud Bigtable sind Lese- und Schreibvorgänge immer auf Zeilenebene atomar. Cloud Bigtable stellt keine Atomarität oberhalb der Zeilenebene zur Verfügung. Beispielsweise unterstützt Cloud Bigtable keine Transaktionen, die mehr als eine Zeile atomar aktualisieren.

Allerdings unterstützt Cloud Bigtable auch verschiedene Schreibvorgänge, die eine Transaktion in anderen Datenbanken erfordern:

  • Read-Modify-Write-Vorgänge, einschließlich Erhöhungen und Anfügungen: Ein Read-Modify-Write-Vorgang liest einen vorhandenen Wert, erhöht oder ergänzt diesen und schreibt den aktualisierten Wert in die Tabelle.
  • Check-Mutate-Vorgänge, die auch bedingte Mutationen oder bedingte Schreibvorgänge genannt werden: Bei einem Check-Mutate-Vorgang prüft Cloud Bigtable eine Zeile, um festzustellen, ob eine angegebene Bedingung erfüllt wird. Wenn dies der Fall ist, schreibt Cloud Bigtable neue Werte in die Zeile.

In der Praxis verwendet Cloud Bigtable Transaktionen für einzelne Zeilen, um diese Vorgänge auszuführen. Diese Vorgänge umfassen sowohl Lese- als auch Schreibzugriffe, die alle atomar ausgeführt werden. Trotzdem sind die Vorgänge nur auf Zeilenebene atomar.

Konflikte zwischen Transaktionen für einzelne Zeilen

Jeder Cluster in einer Cloud Bigtable-Instanz ist ein primärer Cluster, der sowohl Lese- als auch Schreibvorgänge akzeptiert. Deshalb können Vorgänge, die Transaktionen für einzelne Zeilen erfordern, Probleme verursachen, wenn Sie die Replikation aktivieren. Wenn eine Zelle beispielsweise den Wert ABC enthält und Sie zwei Anfügevorgänge an verschiedene Cluster senden, ändert ein Anfügevorgang den Wert in ABCDEF und der andere ändet dern Wert in ABCXYZ. Wie sollte Cloud Bigtable diesen Konflikt lösen?

Zur Vermeidung solcher Probleme muss in Cloud Bigtable für jedes App-Profil angegeben werden, ob Transaktionen für einzelne Zeilen zulässig sind. Außerdem wird verhindert, dass Sie Transaktionen für einzelne Zeilen in einem App-Profil mit Multi-Cluster-Routing aktivieren, da es keine sichere Möglichkeit zur gleichzeitigen Aktivierung beider Funktionen gibt.

Cloud Bigtable warnt Sie außerdem, wenn Sie Transaktionen für einzelne Zeilen in zwei verschiedenen App-Profilen aktivieren, die beide Single-Cluster-Routing verwenden und auf verschiedene Cluster verweisen. Wenn Sie diese Art von Konfiguration erstellen, müssen Sie gewährleisten, dass keine in Konflikt stehenden Read-Modify-Write- oder Check-Mutate-Requests an zwei verschiedene Cluster gesendet werden.

Funktionsweise von App-Profilen

Ein App-Profil gibt die Einstellungen an, die Cloud Bigtable zur Verarbeitung der eingehenden Requests einer Instanz verwendet.

Viele Cloud Bigtable-Nutzer haben mehrere Anwendungen, die eine Verbindung zur selben Instanz herstellen. Beispielsweise könnten Sie eine Anwendung haben, die angeforderte Daten an Kunden sendet, und eine andere Anwendung, die gelegentlich Batchjobs zur Datenanalyse ausführt. Für diese unterschiedlichen Anwendungen sollten Sie mehrere App-Profile erstellen – mindestens eins für jede Anwendung – und jedes App-Profil mit den richtigen Einstellungen für die jeweilige Anwendung konfigurieren. Mit dieser Einrichtung können Sie die Einstellungen problemlos für eine Anwendung ändern und für andere Anwendungen unverändert lassen.

Sie könnten auch eine einzige Anwendung haben, die mehrere Funktionen ausführt, beispielsweise das Anzeigen von aktuellen Daten und die Abfrage von Verlaufsdaten. Für diese unterschiedlichen Funktionen sollten Sie ein App-Profil pro Funktion erstellen, sodass Sie jede Funktion unterschiedlich konfigurieren und die Einstellungen für eine Funktion aktualisieren und für andere Funktionen unverändert lassen können.

Jede Instanz hat ein default-Anwendungsprofil. Sie können aber für jede Instanz auch benutzerdefinierte Anwendungsprofile erstellen. In den folgenden Abschnitten werden standardmäßige (default) und benutzerdefinierte Anwendungsprofile beschrieben.

Zur Verwendung eines App-Profils geben Sie dieses in Ihrem Code an, wenn Sie eine Verbindung zu Ihrer Instanz herstellen. Wenn Sie kein App-Profil angeben, verwendet Cloud Bigtable das standardmäßige App-Profil der Instanz.

Standardmäßiges App-Profil

Beim Erstellen einer Instanz legt Cloud Bigtable automatisch ein standardmäßiges App-Profil für diese an. Wenn Ihre Anwendung kein App-Profil angibt oder wenn Sie die Verbindung zur Instanz über die HBase-Shell herstellen, verwendet Cloud Bigtable die Einstellungen im standardmäßigen App-Profil. Sie können diese Einstellungen jederzeit ansehen und ändern.

Die Einstellungen im Standard-Anwendungsprofil einer Instanz hängen von der Anzahl der Cluster ab, die die Instanz beim ersten Erstellen hatte:

Benutzerdefinierte Anwendungsprofile

Sie können viele verschiedene benutzerdefinierte App-Profile für jede Instanz erstellen. Benutzerdefinierte App-Profile dienen dazu, die Interaktion der einzelnen Anwendung oder Anwendungsfunktion mit einer Instanz zu steuern. Beispielsweise könnten Sie ein Anwendungsprofil für eine Batchanwendung verwenden, um deren Traffic in einem einzigen Cluster zu isolieren, und ein anderes Anwendungsprofil zur Bereitstellung von hoher Verfügbarkeit für eine andere Anwendung nutzen.

Weitere Informationen