Schema entwerfen
Das ideale Schema für eine Bigtable-Tabelle hängt stark von einer Reihe von Faktoren ab, darunter Anwendungsfall, Datenzugriffsmuster und Daten, die Sie speichern möchten. Auf dieser Seite erhalten Sie einen Überblick über den Schemadesignprozess von Bigtable.
Bevor Sie diese Seite lesen, sollten Sie sich mit den Konzepten und Best Practices für das Schemadesign vertraut machen. Lesen Sie ggf. auch Schemadesign für Zeitachsendaten.
Hinweise
Erstellen oder identifizieren Sie eine Cloud Bigtable-Instanz mit der Sie Ihr Schema testen können.
Informationen einholen
- Identifizieren Sie die Daten, die Sie in Bigtable speichern möchten.
Sie können sich folgende Fragen stellen:
- Welches Format verwenden die Daten? Zu den möglichen Formaten gehören Rohbyte, Strings, Protokollpuffer und JSON.
- Was macht eine Entität in Ihren Daten aus? Speichern Sie beispielsweise Seitenaufrufe, Aktienkurse, Anzeigenplatzierungen, Gerätemessungen oder einen anderen Entitätstyp? Woraus bestehen die Entitäten?
- Sind die Daten zeitbasiert?
- Identifizieren und stufen Sie die Abfragen ein, die Sie zum Abrufen der benötigten Daten verwenden. Überlegen Sie bei den zu speichernden Entitäten, wie die Daten sortiert und gruppiert werden sollen, wenn Sie sie verwenden. Ihr Schemadesign erfüllt möglicherweise nicht alle Ihre Abfragen, erfüllt jedoch idealerweise die wichtigsten oder am häufigsten verwendeten Abfragen. Beispiele für Abfragen können folgendes enthalten:
- Die Temperaturwerte eines Monats für IoT-Objekte.
- Tägliche Anzeigenaufrufe für eine IP-Adresse.
- Der aktuellste Standort eines Mobilgeräts.
- Alle Anwendungsereignisse pro Tag und Nutzer.
Design
Legen Sie ein anfängliches Schemadesign fest. Planen Sie also das Muster, dem Ihre Zeilenschlüssel folgen sollen, die Spaltenfamilien, die Ihre Tabelle haben soll, und die Spaltenqualifizierer für die gewünschten Spalten innerhalb dieser Spaltenfamilien. Beachten Sie die allgemeinen Richtlinien für das Schemadesign. Wenn Ihre Daten zeitbasiert sind, folgen Sie außerdem den Richtlinien für Zeitachsendaten.
Test
- Erstellen Sie eine Tabelle mit den Spaltenfamilien und Spaltenqualifizierern, die Sie für Ihr Schema entwickelt haben.
- Laden Sie die Tabelle mit mindestens 30 GB Testdaten und verwenden Sie die Zeilenschlüssel, die Sie in Ihrem Entwurf identifiziert haben. Halten Sie die Limits für Speicherauslastung pro Knoten ein.
- Führen Sie einen intensiven Lasttest über mehrere Minuten aus. Dieser Schritt bietet Bigtable die Möglichkeit, Daten auf Knoten basierend auf den beobachteten Zugriffsmustern zu verteilen.
- Führen Sie eine einstündige Simulation der Lese- und Schreibvorgänge aus, die Sie normalerweise an die Tabelle senden würden.
Ergebnisse von Simulation mit Key Visualizer und Cloud Monitoring überprüfen
Das Key Visualizer-Tool für Bigtable erstellt täglich Scans, aus denen die Nutzungsmuster der einzelnen Tabellen in einem Cluster ersichtlich sind. Mit Key Visualizer können Sie überprüfen, ob das Schemadesign und die Nutzungsmuster unerwünschte Ergebnisse wie Hotspots in bestimmten Zeilen verursachen.
Mit Monitoring können Sie Messwerte wie die CPU-Auslastung des am stärksten genutzten Knotens in einem Cluster prüfen und so feststellen, ob das Schemadesign Probleme verursacht.
Filtern
- Passen Sie das Schemadesign an, entsprechend den Ergebnissen von Key Visualizer. Beispiel:
- Wenn Sie Anzeichen für eine Überlastung erkennen, verwenden Sie verschiedene Zeilenschlüssel.
- Wenn Sie Latenz feststellen, prüfen Sie, ob die Zeilen das Limit von 100 MB pro Zeile überschreiten.
- Wenn Sie Filter benötigen, um die benötigten Daten zu erhalten, sollten Sie die Daten auf eine Weise normalisieren, die einfachere (und schnellere) Lesevorgänge ermöglicht: Lesen Sie einzelne Zeilen oder Zeilenbereiche nach Zeilenschlüssel.
- Nachdem Sie Ihr Schema überarbeitet haben, testen und prüfen Sie die Ergebnisse erneut.
- Ändern Sie das Schemadesign und testen Sie weiterhin, bis eine Prüfung in Key Visualizer Ihnen sagt, dass das Schemadesign optimal ist.
Nächste Schritte
- Präsentation über den iterativen Designprozess, den Twitter für Bigtable verwendet hat
- Weitere Informationen zur Leistung von Bigtable