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 Requests 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 Anwendungsprofil gesteuert werden. Außerdem erfahren Sie, wie Anwendungsprofile 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 Anwendungsprofilen

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: 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 in kleinstmöglicher Form ausgeführt werden. Trotzdem sind die Vorgänge nur auf Zeilenebene atomar.

  • 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.

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. Vorgänge, die Transaktionen für einzelne Zeilen erfordern, können zu Multi-Cluster-Instanzen führen.

Angenommen, eine Zelle enthält den Wert abc und Sie senden zwei Anfügevorgänge an verschiedene Cluster: einen zum Anfügen von DEF an den Wert der Zelle und eine weitere, um XYZ anzufügen. Mit einer Anfügung wird der Wert in abcDEF geändert und die andere ändert den Wert in abcXYZ. Da die Instanz Replikation verwendet, überschreibt dieser einer der neu angefügten Werte den anderen sofort. Cloud Bigtable weiß nicht, ob Sie ein anderes Ergebnis beabsichtigt haben.

Damit Sie unbeabsichtigte Ergebnisse vermeiden, führt Cloud Bigtable folgende Schritte aus:

  • Jedes Anwendungsprofil muss angeben, ob Transaktionen für einzelne Zeilen zulässig sind.
  • Außerdem wird verhindert, dass Sie Transaktionen für einzelne Zeilen in einem Anwendungsprofil mit Multi-Cluster-Routing aktivieren, da es keine sichere Möglichkeit zur gleichzeitigen Aktivierung beider Funktionen gibt.
  • Sie erhalten eine Benachrichtigung, wenn Transaktionen für einzelne Zeilen in zwei oder mehr Anwendungsprofilen aktiviert werden, die 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 Anwendungsprofil angeben, verwendet Cloud Bigtable das standardmäßige Anwendungsprofil 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 App-Profil für eine Batchanwendung verwenden, um deren Traffic in einem einzigen Cluster zu isolieren, und ein anderes App-Profil zur Bereitstellung von hoher Verfügbarkeit für eine andere Anwendung nutzen.

Weitere Informationen