Bigtable
Bigtable ist eine dünnbesetzte Tabelle, die auf Milliarden von Zeilen und Tausende von Spalten skaliert werden kann. Dadurch können Datenmengen im Terabyte- oder sogar Petabytebereich gespeichert werden. Bigtable ist ideal für die Speicherung großer einfach verschlüsselter Datenmengen bei niedriger 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 Bigtable zugreifen. Daher fügt es sich in das bestehende Apache-System der Open-Source-Software für Big Data ein.
Die leistungsstarken Backend-Server von Bigtable bieten einige entscheidende Vorteile:
- Unglaublich hohe Skalierbarkeit. 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. Bigtable hat diesen Engpass nicht. Daher können Sie den Cluster so skalieren, dass er mehr Lese- und Schreibvorgänge verarbeiten kann.
- Einfache Verwaltung. 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. Entwerfen Sie einfach die Tabellenschemas und Bigtable erledigt den Rest für Sie.
- Größenänderung des Clusters ohne Ausfallzeiten. Sie können die Größe eines 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 Bigtable die Leistung auf alle Knoten im Cluster verteilt.
- Mehrstufiger Speicher (Vorschau): Sie können Daten, auf die selten zugegriffen wird, in einer separaten, kostengünstigeren Speicherstufe speichern. Mit Tiered Storage können Sie die Speicherebene auswählen, die Ihren Anforderungen an den Bigtable-Datenzugriff am besten entspricht.
- Autoscaling: Sie können Bigtable so konfigurieren, dass die CPU-Kapazität des Clusters kontinuierlich überwacht und die Anzahl der Knoten in einem Cluster bei Bedarf automatisch angepasst wird.
- Kostenloses Testabo: Sie können Bigtable-Funktionen und -Funktionen 10 Tage lang kostenlos testen. Der kostenlose Testzeitraum kann auf 90 Tage verlängert werden. Bigtable bietet eine kostenlose Bigtable-Testinstanz mit bis zu 500 GB SSD-Speicher und einem Cluster mit einem Knoten. So können Sie die Leistung Ihrer Anwendung testen, indem Sie Lese- und Schreibvorgänge mit hohem Volumen für Ihre Bigtable-Tabellen ausführen, um zu sehen, wie Bigtable Vorgänge mit SSD-basierter Leistung verarbeitet.
- In-Memory-Stufe (Vorschau): Sie können eine Leselatenz von weniger als einer Millisekunde und einen hohen Durchsatz für Ihre kritischen, zeitkritischen Daten erreichen. Die In-Memory-Stufe erweitert den vorhandenen nichtflüchtigen SSD-Speicher (Solid-State Drive) und den kostengünstigen mehrstufigen Speicher von Bigtable um den In-Memory-Speicher (RAM), um integriertes Data Tiering in einem einheitlichen Dienst zu ermöglichen.
Bigtable-Versionen
Bigtable-Versionen sind ein Preismodell, das verschiedene Funktionen zu unterschiedlichen Preisen bietet. Sie können zwischen der Standardversion Enterprise und der Premiumversion Enterprise Plus wählen. Weitere Informationen finden Sie unter Übersicht über die Editionen.
Einsatzmöglichkeit
Bigtable eignet sich ideal für Anwendungen, die einen 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. Bigtable überzeugt außerdem als Speicher-Engine für Batch-MapReduce-Vorgänge, Streamverarbeitung/Analyse sowie Anwendungen im Bereich des maschinellen Lernens.
Sie können Bigtable verwenden, um die folgenden Datentypen zu speichern und abzufragen:
- Zeitreihendaten wie CPU- und Arbeitsspeichernutzung 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
Bigtable-Speichermodell
Bigtable speichert Daten in äußerst skalierbaren Tabellen, von denen jede eine sortierte Schlüssel/Wert-Zuordnung 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. Ein einzelner Wert in jeder Zeile ist indexiert. Dieser Wert wird als Zeilenschlüssel bezeichnet. Spalten, die miteinander zusammenhängen, werden normalerweise in einer Spaltenfamilie gruppiert. Jede Spalte wird durch eine Kombination aus der Spaltenfamilie und einem Spaltenqualifizierer identifiziert, bei dem es sich um einen eindeutigen Namen innerhalb der Spaltenfamilie handelt.
Jeder Schnittpunkt einer Zeile und Spalte kann mehrere Zellen enthalten. Jede Zelle enthält eine eindeutige Zeitstempelversion der Daten für diese Zeile und Spalte. Durch Speichern mehrerer Zellen in einer Spalte wird erfasst, wie sich die gespeicherten Daten für diese Zeile und Spalte im Laufe der Zeit geändert haben. Bigtable-Tabellen sind dünnbesetzt. Wenn eine Spalte in einer bestimmten Zeile nicht verwendet wird, belegt sie keinen Platz.
In dieser Abbildung gibt es ein paar Dinge zu beachten:
- Spalten können in einer Zeile unbenutzt sein.
- Jede Zelle in einer bestimmten Zeile und Spalte hat einen eindeutigen Zeitstempel (t).
Bigtable-Architektur
Das folgende Diagramm zeigt eine vereinfachte Version der gesamten Ressourcenarchitektur von Bigtable:
Wie im Diagramm gezeigt, laufen alle Clientanfragen durch einen Frontend-Server, bevor sie an einen Knoten in Bigtable gesendet werden. Im ursprünglichen Bigtable-Artikel werden diese Knoten als "Tablet-Server" (Tabellenreihenserver) bezeichnet. Die Knoten werden zu einem Bigtable-Cluster zusammengefasst, der zu einer 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, erhöhen. Durch das Hinzufügen von Knoten wird auch der maximale Durchsatz für den Cluster erhöht. Wenn Sie die Replikation durch Hinzufügen weiterer Cluster aktivieren, können Sie auch verschiedene Arten von Traffic an verschiedene Cluster senden. Wenn ein Cluster nicht mehr verfügbar ist, können Sie ein Failover auf einen anderen Cluster durchführen.
Eine Bigtable-Tabelle ist in Blöcke von fortlaufenden Zeilen unterteilt, die Tabellenreihen genannt werden. (Tabellenreihen sind HBase-Regionen ähnlich.) Tabellenreihen werden in Colossus, einem von Google entwickelten Dateisystem, 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 Bigtable-Knoten zugeordnet. Zusätzlich zu den SSTable-Dateien werden alle Schreibvorgänge im gemeinsamen Log von Colossus gespeichert, sobald sie von Bigtable bestätigt wurden. Dadurch verbessert sich die Langlebigkeit.
Wichtig: Daten werden nie in Knoten von 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 schnell, da die tatsächlichen Daten nicht kopiert werden müssen. Bigtable aktualisiert die Verweise für jeden Knoten.
- Die Wiederherstellung nach dem Ausfall eines Bigtable-Knotens geht schnell, da nur Metadaten auf den Ersatzknoten migriert werden müssen.
- Wenn ein Knoten in Bigtable fehlschlägt, gehen keine Daten verloren.
Weitere Informationen zum Arbeiten mit diesen grundlegenden Bausteinen finden Sie unter Instanzen, Cluster und Knoten. Weitere Informationen zur Interaktion mit Ihren Daten in den verschiedenen Stufen finden Sie unter Auf Daten zugreifen.
Load Balancing
Jede Zone in Bigtable wird von einem Primärvorgang verwaltet, der die Arbeitslast und das Datenvolumen im Cluster ausgleicht. Bei diesem Vorgang werden ausgelastete oder große Tabellenreihen halbiert und Tabellenreihen mit weniger Zugriffen oder kleinere Tabellenreihen zusammengeführt. Die Tabellenreihen werden nach Bedarf auf die Knoten verteilt. Wenn eine bestimmte Tabellenreihe Trafficspitzen erfährt, halbiert Bigtable die Tabellenreihe und verschiebt eine der neuen Tabellenreihen auf einen anderen Knoten. Bigtable übernimmt das Aufteilen, Zusammenführen und Neuausgleichen automatisch. Sie müssen Ihre Tabellenreihen also nicht manuell verwalten. Weitere Informationen finden Sie unter Leistung verstehen.
Für die beste Schreibleistung von 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.