Cloud Bigtable – Übersicht

Cloud Bigtable ist eine dünn besetzte Tabelle, die auf Milliarden von Zeilen und Tausende von Spalten skaliert werden kann. Dadurch können Datenmengen im Terabyte- oder sogar Petabytebereich gespeichert werden. Ein einzelner Wert in jeder Zeile ist indexiert. Dieser Wert wird als Zeilenschlüssel bezeichnet. Cloud Bigtable ist ideal für die Speicherung von großen Datenmengen mit einem Schlüssel bei kleiner Latenz. Cloud Bigtable unterstützt einen hohen Durchsatz an Lese- und Schreibvorgängen bei kleiner Latenz und ist die ideale Datenquelle für MapReduce-Vorgänge.

Anwendungen können über mehrere Clientbibliotheken, darunter eine unterstützte Erweiterung der Apache HBase-Bibliothek für Java, auf Cloud Bigtable zugreifen. Daher fügt es sich in das bestehende Apache-System der Open-Source-Software für Big Data ein.

Die leistungsstarken Back-End-Server von Cloud Bigtable bieten einige entscheidende Vorteile gegenüber einer selbstverwalteten HBase-Installation:

  • Unglaublich hohe Skalierbarkeit. Cloud Bigtable skaliert direkt proportional zur Anzahl der Maschinen in Ihrem Cluster. Eine selbstverwaltete HBase-Installation hat einen Engpass im Design, der die Leistung beschränkt, nachdem ein bestimmter Schwellenwert erreicht ist. Cloud Bigtable hat diesen Engpass nicht. Daher können Sie den Cluster so skalieren, dass er mehr Lese- und Schreibvorgänge verarbeiten kann.
  • Einfache Verwaltung. Cloud Bigtable verarbeitet Aktualisierungen und Neustarts transparent und sorgt automatisch für die Langlebigkeit der Daten. Fügen Sie zum Replizieren Ihrer Daten der Instanz einfach einen zweiten Cluster hinzu. Die Replikation wird dann automatisch gestartet. Sie müssen keine Replikate oder Regionen mehr verwalten. Sie entwerfen lediglich Ihre Tabellenschemas und Cloud Bigtable erledigt den Rest für Sie.
  • Größenänderung des Clusters ohne Ausfallzeiten. Sie können die Größe eines Cloud Bigtable-Clusters für einige Stunden erhöhen, um eine große Auslastung zu bewältigen, und dann die Größe des Clusters wieder reduzieren – ohne Ausfallzeiten. Nach der Änderung der Clustergröße dauert es unter Last meist nur wenige Minuten, bis Cloud Bigtable die Leistung auf alle Knoten im Cluster verteilt.

Einsatzmöglichkeit

Cloud Bigtable eignet sich ideal für Anwendungen, die einen sehr hohen Durchsatz und eine hohe Skalierbarkeit für Schlüssel/Wert-Paar-Daten erfordern, bei denen in der Regel kein Wert größer als 10 MB ist. Cloud Bigtable überzeugt außerdem als Speicher-Engine für Batch-MapReduce-Vorgänge, die Verarbeitung und Auswertung von Streams sowie Anwendungen im Bereich des maschinellen Lernens.

Sie können Cloud Bigtable verwenden, um die folgenden Datentypen zu speichern und abzufragen:

  • Zeitachsendaten wie CPU- und Speicherauslastung im Zeitablauf für mehrere Server
  • Marketingdaten wie Einkaufsverlauf und Kundenpräferenzen
  • Finanzdaten wie Transaktionsverlauf, Aktienkurse und Währungskurse
  • Daten des Internets der Dinge wie Nutzungsberichte von Energiezählern und Haushaltsgeräten
  • Grafikdaten wie Informationen darüber, wie Nutzer miteinander verbunden sind

Cloud Bigtable-Speicherungsmodell

Cloud Bigtable speichert Daten in äußerst skalierbaren Tabellen, von denen jede eine geordnete Zuordnung von Schlüssel/Wert-Paaren darstellt. Die Tabelle besteht aus Zeilen, von denen jede typischerweise eine einzelne Entität beschreibt, und Spalten, die für jede Zeile individuelle Werte beinhalten. Jede Zeile wird von einem einzelnen Zeilenschlüssel indexiert und Spalten, die sich aufeinander beziehen, sind typischerweise in Spaltenfamilien gruppiert. Jede Spalte ist durch eine Kombination aus der Spaltenfamilie und einem Spaltenqualifizierer identifizierbar, bei dem es sich um einen eindeutigen Namen innerhalb der Spaltenfamilie handelt.

Jeder Zeilen-/Spaltenschnittpunkt kann mehrere Zellen oder Versionen zu unterschiedlichen Zeitstempeln enthalten und kann dadurch protokollieren, wie die gespeicherten Daten im Zeitablauf geändert wurden. Cloud Bigtable-Tabellen sind dünnbesetzt: Wenn eine Zelle keine Daten beinhaltet, belegt sie keinen Platz.

Angenommen, Sie möchten beispielsweise ein soziales Netzwerk für US-Präsidenten erstellen, nennen wir es Prezzy. Jeder Präsident kann Beiträgen von anderen Präsidenten folgen. Die folgende Abbildung zeigt eine Cloud Bigtable-Tabelle, die aufzeichnet, wem jeder Präsident auf Prezzy folgt:

Eine Cloud Bigtable-Tabelle mit einer Zeile für jeden Nutzernamen

In dieser Abbildung gibt es ein paar Dinge zu beachten:

  • Die Tabelle enthält eine Spaltenfamilie, die Familie follows. Diese Familie beinhaltet mehrere Spaltenqualifizierer.
  • Spaltenqualifizierer werden wie Daten verwendet. Dieses Design nutzt die Sparsamkeit der Tabellen in Cloud Bigtable und den Umstand, dass neue Spaltenqualifizierer ohne Vorbereitung hinzugefügt werden können, aus.
  • Der Nutzername wird als Zeilenschlüssel verwendet. Angenommen, Nutzernamen sind gleichmäßig über das Alphabet verteilt, dann wird der Datenzugriff einigermaßen gleichmäßig über die Tabelle verteilt sein. Weitere Informationen zum Verarbeiten ungleichmäßiger Lasten durch Cloud Bigtable finden Sie unter Load-Balancing. Weitergehende Tipps zum Auswählen eines Zeilenschlüssels finden Sie unter Zeilenschlüssel auswählen.

Architektur von Cloud Bigtable

Das folgende Diagramm zeigt eine vereinfachte Version der gesamten Architektur von Cloud Bigtable:

Gesamtarchitektur von Cloud Bigtable

Wie im Diagramm gezeigt, laufen alle Clientanfragen durch einen Front-End-Server, bevor sie zu einem Knoten in Cloud Bigtable geschickt werden. Im ursprünglichen Bigtable-Artikel werden diese Knoten als "Tablet-Server" (Tabellenreihenserver) bezeichnet. Diese Knoten werden zu einem Cloud Bigtable-Cluster zusammengefasst, der zu einer Cloud Bigtable-Instanz gehört, einem Container für die Cluster.

Jeder Knoten im Cluster verarbeitet einen Teil der Anfragen an den Cluster. Durch das Hinzufügen von Knoten zu einem Cluster können Sie die Anzahl an simultanen Anfragen, die der Cluster verarbeiten kann, sowie den maximalen Durchsatz für den gesamten Cluster erhöhen. Wenn Sie durch Hinzufügen eines zweiten Clusters die Replikation aktivieren, können Sie außerdem verschiedene Arten von Traffic an verschiedene Cluster senden. Wenn ein Cluster nicht mehr verfügbar ist, können Sie einen Failover auf den anderen Cluster durchführen.

Eine Cloud Bigtable-Tabelle ist in Blöcke von fortlaufenden Zeilen unterteilt, die Tabellenreihen genannt werden. (Tabellenreihen sind HBase-Regionen ähnlich.) Tabellenreihen werden in Colossus, dem Dateisystem von Google, im SSTable-Format gespeichert. Eine SSTable stellt eine dauerhafte, geordnete unveränderliche Zuordnung von Schlüsseln und Werten dar. Diese Schlüssel und Werte sind beliebige Byte-Strings. Jede Tabellenreihe ist einem bestimmten Knoten in Cloud Bigtable zugeordnet. Zusätzlich zu den SSTable-Dateien werden alle Schreibvorgänge im gemeinsamen Log von Colossus gespeichert, sobald sie von Cloud Bigtable bestätigt wurden. Dadurch verbessert sich die Langlebigkeit.

Wichtig: Daten werden nie in Knoten von Cloud Bigtable selbst gespeichert. Jeder Knoten enthält Verweise auf einen in Colossus gespeicherten Satz von Tabellenreihen. Deshalb gilt:

  • Tabellenreihen von einem Knoten auf einen anderen zu übertragen, geht sehr schnell, da die tatsächlichen Daten nicht kopiert werden müssen. Cloud Bigtable aktualisiert einfach die Verweise für jeden Knoten.
  • Die Wiederherstellung nach dem Ausfall eines Cloud Bigtable-Knotens geht sehr schnell, da nur Metadaten auf den Ersatzknoten migriert werden müssen.
  • Wenn ein Knoten in Cloud Bigtable versagt, gehen keine Daten verloren.

Weitere Informationen zum Arbeiten mit diesen grundlegenden Bausteinen finden Sie unter Instanzen, Cluster und Knoten.

Load-Balancing

Jede Zone in Cloud Bigtable wird von einem Primärvorgang verwaltet, der die Lasten und das Datenvolumen im Cluster ausgleicht. Der Vorgang halbiert ausgelastete/große Tabellenreihen und fügt kleine Tabellenreihen oder solche mit weniger Zugriffen zusammen, indem er sie nach Bedarf auf die Knoten aufteilt. Wenn eine bestimmte Tabellenreihe Trafficspitzen erfährt, halbiert Cloud Bigtable die Tabellenreihe und verschiebt eine der neuen Tabellenreihen auf einen anderen Knoten. Cloud Bigtable übernimmt das Aufteilen, Zusammenführen und Ausgleichen automatisch und erspart dem Nutzer den Aufwand, die Tabellenreihen manuell verwalten zu müssen. Weitere Informationen finden Sie unter Leistung in Cloud Bigtable verstehen.

Für die beste Schreibleistung von Cloud Bigtable ist es wichtig, Schreibvorgänge so gleichmäßig wie möglich auf Knoten zu verteilen. Eine Art, dieses Ziel zu erreichen, besteht darin, Zeilenschlüssel zu verwenden, die keiner vorhersehbaren Ordnung folgen. Nutzernamen sind beispielsweise mehr oder weniger gleichmäßig im Alphabet verteilt, sodass ein Nutzername am Anfang des Zeilenschlüssels normalerweise für eine gleichmäßige Verteilung der Schreibvorgänge sorgt.

Gleichzeitig ist es sinnvoll, zusammengehörige Zeilen so zu gruppieren, dass sie nebeneinander liegen, wodurch es viel effizienter ist, mehrere Zeilen gleichzeitig zu lesen. Wenn Sie beispielsweise verschiedene Arten von Wetterdaten über einen Zeitraum speichern, könnte der Zeilenschlüssel aus dem Ort, an dem die Daten gesammelt wurden, und aus einem Zeitstempel bestehen (Beispiel: WashingtonDC#201803061617). Dieser Zeilenschlüsseltyp würde alle Daten von einem Ort in einen zusammenhängenden Bereich von Zeilen gruppieren. Für andere Orte würde der Zeilenschlüssel mit einer anderen Kennzeichnung beginnen. Wenn an vielen Orten Daten im gleichen Rhythmus gesammelt werden, wären sie immer noch gleichmäßig über alle Tabellenreihen verteilt.

Weitere Information über die Auswahl eines passenden Zeilenschlüssels für Ihre Daten finden Sie unter Zeilenschlüssel wählen.

Unterstützte Datentypen

Cloud Bigtable behandelt alle Daten für die meisten Anwendungen als unverarbeitete Bytestrings. Die einzige Situation, in der Cloud Bigtable versucht, den Typ zu ermitteln, ist bei Inkrementierungsprozessen, bei denen das Ziel eine als 8-Byte-Big-Endian-Wert codierte 64-Bit-Ganzzahl sein muss.

Speicher- und Laufwerksauslastung

Im folgenden Abschnitt wird dargestellt, wie mehrere Komponenten von Cloud Bigtable die Speicher- und Laufwerksauslastung Ihrer Instanz beeinflussen.

Leere Zellen

Leere Zellen in einer Cloud Bigtable-Tabelle belegen keinerlei Platz. Jede Zeile ist im Wesentlichen eine Sammlung von Schlüssel/Wert-Paaren, wobei der Schlüssel eine Kombination aus Spaltenfamilie, Spaltenqualifizierer und Zeitstempel darstellt. Wenn eine Zeile keinen Wert für einen angegebenen Schlüssel beinhaltet, ist das Schlüssel/Wert-Paar einfach nicht vorhanden.

Spaltenqualifizierer

Spaltenqualifizierer belegen Platz in einer Zeile, da jeder Spaltenqualifizierer, der in einer Zeile genutzt wird, in dieser Zeile gespeichert ist. Daher ist es oft effizient, Spaltenqualifizierer als Daten zu nutzen. Im Beispiel "Prezzy" oben sind die Spaltenqualifizierer der Familie follows die Namen der Nutzer, denen gefolgt wird. Das Schlüssel/Wert-Paar dieser Spalten ist lediglich ein Platzhalter.

Verdichtungen

Cloud Bigtable schreibt Ihre Tabellen in regelmäßigen Abständen neu, um gelöschte Einträge zu entfernen und die Daten neu anzuordnen, damit die Lese- und Schreibvorgänge effizienter werden. Dieser Prozess wird als Verdichtung bezeichnet. Es gibt keine Konfigurationseinstellungen für Verdichtungen. Cloud Bigtable verdichtet Ihre Daten automatisch.

Mutationen und Löschungen

Mutationen oder Änderungen beanspruchen mehr Speicherplatz, da Mutationen von Cloud Bigtable sequenziell gespeichert und nur von Zeit zu Zeit verdichtet werden. Wenn Cloud Bigtable eine Tabelle verdichtet, löscht es alle Werte, die nicht mehr gebraucht werden. Wenn Sie den Wert in einer Zelle aktualisieren, sind für einen gewissen Zeitraum sowohl der alte als auch der neue Wert auf dem Laufwerk gespeichert, bis die Daten verdichtet werden.

Löschungen erfordern ebenfalls zusätzlichen Speicherplatz, zumindest für eine kurze Zeit, da Löschungen genau genommen ein spezieller Mutationstyp sind. Bis die Tabelle verdichtet wird, benötigt das Löschen also mehr Platz, nicht weniger.

Datenkompression

Cloud Bigtable komprimiert Ihre Daten automatisch mithilfe eines intelligenten Algorithmus. Sie können keine Einstellungen für die Kompression Ihrer Daten festlegen. Es ist jedoch nützlich zu wissen, wie Daten gespeichert werden müssen, damit sie effizient komprimiert werden können.

  • Zufällige Daten können nicht so effizient komprimiert werden wie Daten, die einem Muster folgen. Unter Daten, die einem Muster folgen, fallen Texte wie die Seite, die Sie gerade lesen.
  • Kompression funktioniert am besten, wenn identische Werte eng beieinander liegen, entweder in der gleichen oder in aneinandergrenzenden Zeilen. Wenn Sie Ihre Zeilenschlüssel so organisieren, dass Zeilen mit identischen Datenstücken nebeneinander liegen, können Daten effizient komprimiert werden.
  • Komprimieren Sie Werte, die größer als 1 MiB sind, bevor Sie sie in Cloud Bigtable speichern. Dies spart CPU-Zyklen, Serverarbeitsspeicher und Netzwerkbandbreite. Cloud Bigtable deaktiviert die Komprimierung automatisch für Werte, die größer als 1 MiB sind.

Datenhaltbarkeit

Wenn Sie Cloud Bigtable verwenden, werden Ihre Daten in Colossus, dem internen, äußerst langlebigen Datensystem von Google, gespeichert. Dabei werden Speichergeräte in Googles Datenzentren verwendet. Sie müssen keinen HDFS-Cluster oder ein anderes Datensystem betreiben, wenn Sie Cloud Bigtable nutzen. Wenn Ihre Instanz die Replikation verwendet, verwaltet Cloud Bigtable eine Kopie Ihrer Daten in Colossus für jeden Cluster in der Instanz. Da sich jede Kopie in einer anderen Zone oder Region befindet, wird die Langlebigkeit zusätzlich verbessert.

Hinter den Kulissen nutzt Google proprietäre Speichermethoden, um eine Datenlanglebigkeit zu erreichen, die über den Werten liegt, die eine standardmäßige dreifache HDFS-Replikation bietet. Zusätzlich erstellen wir eine Sicherung Ihrer Daten, um Sie vor Katastrophen zu schützen und eine Notfallwiederherstellung zu ermöglichen.

Sicherheit

Der Zugriff auf Ihre Cloud Bigtable-Tabellen wird von Ihrem Google Cloud-Projekt und den IAM-Rollen (Identitäts- und Zugriffsverwaltung) gesteuert, die Sie Nutzern zuweisen. Sie können beispielsweise IAM-Rollen zuweisen, die verhindern, dass einzelne Nutzer Tabellen lesen, in Tabellen schreiben oder neue Instanzen erstellen. Wenn jemand keinen Zugriff auf Ihr Projekt hat oder keine IAM-Rolle mit den entsprechenden Berechtigungen für Cloud Bigtable besitzt, kann er auf keine Ihrer Tabellen zugreifen.

Sie können die Sicherheit auf Projekt-, Instanz- und Tabellenebene verwalten. Cloud Bigtable unterstützt keine Sicherheitseinschränkungen auf Zeilen-, Spalten- oder Zellenebene.

Sicherungen

Mit Cloud Bigtable-Sicherungen können Sie eine Kopie des Schemas und der Daten einer Tabelle speichern und später aus der Sicherung in eine neue Tabelle wiederherstellen. Sicherungen unterstützen Sie bei der Wiederherstellung nach Datenbeschädigung auf Anwendungsebene oder durch Operatorfehler wie das versehentliche Löschen einer Tabelle.

Andere Speicherungs- und Datenbankoptionen

Cloud Bigtable ist keine relationale Datenbank. SQL-Abfragen, Joins oder mehrzeilige Transaktionen werden nicht unterstützt.

  • Wenn Sie die volle SQL-Unterstützung für ein System zur Online-Transaktionsverarbeitung (OLTP) benötigen, verwenden Sie Cloud Spanner oder Cloud SQL.
  • Wenn Sie interaktive Abfragen in einem System für die analytische Onlineverarbeitung (OLAP) benötigen, ist BigQuery möglicherweise das Richtige für Sie.
  • Wenn Sie stark strukturierte Objekte in einer Dokumentendatenbank mit Unterstützung für ACID-Transaktionen und SQL-ähnliche Abfragen speichern müssen, sollten Sie sich Cloud Firestore ansehen.
  • Für speicherinterne Datenspeicherung mit niedriger Latenz empfiehlt sich Memorystore.
  • Wenn Sie Daten zwischen Nutzern in Echtzeit synchronisieren möchten, verwenden Sie Firebase Realtime Database.

Weitere Informationen zu anderen Datenbankoptionen finden Sie in der Übersicht der Datenbankdienste. Google Cloud verfügt außerdem über eine Vielzahl von Speicheroptionen.

Nächste Schritte