Während wir uns auf unseren Workshop A Big Data Adventure in Google Cloud Platform auf der Crunch Data Engineering and Analytics Conference vorbereiten, haben wir begonnen, einige Tipps und Tricks für die Nutzung der Big Data-Plattform von Google zu sammeln. In unserem letzten Blogbeitrag haben wir einige Ratschläge zur Kontrolle Ihrer BigQuery (BQ)-Kosten vorgestellt. Jetzt möchte ich Ihnen einige Methoden vorstellen, die Ihnen helfen können, die Leistung zu steigern und Ihre Arbeit mit BQ effektiver zu gestalten. Lesen Sie diesen Blog-Beitrag und erfahren Sie, wie Sie Ihre BigQuery-Leistung steigern können.
Unterteilen Sie Datensätze nach häufig verwendeten Filterattributen. BQ ist eine spaltenorientierte Datenbank ohne Indizes und führt daher immer eine vollständige Tabellendurchsuchung der benötigten Spalten durch. Wenn Sie Ihren Datenbestand in kleinere Teile aufteilen, muss BQ weniger Daten lesen. Dies führt zu schnelleren und kostengünstigeren Abfragen.
Nehmen wir an, Sie haben einen Datensatz, der Daten über Personen enthält. Zum Beispiel Name oder Geburtsort. Sie haben auch einen Anwendungsfall, bei dem Sie nur an den Namen und Geburtsorten von Personen interessiert sind, die in einem bestimmten Datumsbereich geboren wurden. Sagen wir zwischen dem 24.09.2001 und dem 25.09.2001.
Die folgende Abbildung zeigt in grüner Farbe, wie viele Daten BQ lesen muss, um diese Frage zu beantworten, wenn Sie eine monolithische Tabelle haben und wenn Sie Ihre Daten sinnvoll aufgeteilt haben. Der Unterschied kann zugunsten der geteilten Tabelle erheblich sein.
Der erste Ansatz wird als Sharding bezeichnet, d. h. Sie fügen die Daten in mehrere Tabellen mit demselben Schema ein, die durch eines der Attribute unterteilt sind. In diesem Beispiel bedeutet dies fünf Shards:
person_20010923 Person_20010924 Person_20010925 Person_20010926 Person_20010927
Mit dieser Technik müssen Sie die Vereinigung der entsprechenden Tabellen abfragen:
Wenn Sie mehr als ein paar Shards haben (und das ist meistens der Fall), kann die Eingabe der Namen aller benötigten Shards im Abfrage-Editor sehr zeitaufwändig sein. Glücklicherweise bietet BQ Platzhaltertabellen. Wenn man diese anwendet, sieht unsere Abfrage wie folgt aus
Die andere Möglichkeit besteht darin, Tabellen zu erstellen, die auf herkömmliche Weise partitioniert sind. Der Hauptunterschied zwischen den beiden Methoden besteht darin, dass Sie im Falle der Partitionierung nur eine Tabelle und logische Partitionen haben. Aus diesem Grund brauchen Sie keine Platzhalterfunktionen zu verwenden. Die folgende Abfrage liefert uns die gewünschten Ergebnisse aus einer partitionierten Tabelle namens "Person":
Der Nachteil dieser Technik ist, dass eine Partitionierung derzeit nur nach Datum möglich ist.
Wenn es um den Entwurf von Datenbankschemata geht, wurden die meisten von uns darauf trainiert, normalisierte Schemata zu verwenden. Die Hauptgründe für die Normalisierung sind die Vermeidung von Konsistenzproblemen aufgrund von Datenduplikaten und die Einsparung von Speicherplatz. Im Fall von BQ funktionieren die Dinge jedoch ein wenig anders. Zunächst einmal sind die Daten oft unveränderlich und der Speicherplatz ist recht günstig. Daher ist es in der Regel ratsam, Datensätze in homogenen Tabellen zusammenzuführen. Mit dieser Denormalisierung tauschen Sie Rechenressourcen gegen Speicherressourcen, wobei der Speicher leistungsfähiger und kostengünstiger ist. Um diese denormalisierten Schemata einfach zu handhaben, bietet BQ verschachtelte, wiederholte Datenstrukturen.
In diesem letzten Abschnitt geht es nicht um die Abfrageleistung, sondern um Ihre Leistung: wie Sie BQ effektiver nutzen können.
Es kommt oft vor, dass ich eine Information aus BQ benötige. Dann stelle ich fest, dass ich die gleiche oder eine ähnliche Abfrage bereits in der Vergangenheit ausgeführt habe. Als Ingenieur möchte ich Informationen wiederverwenden, anstatt sie neu zu erstellen, also fange ich an zu suchen.
Die erste Anlaufstelle ist die Abfragehistorie auf der BQ-Benutzeroberfläche in der oberen linken Ecke, obwohl sie sowohl hinsichtlich der Anzahl der gespeicherten Abfragen als auch der Speicherzeit Einschränkungen aufweist. Außerdem kann es frustrierend sein, wenn man in Hunderten von Abfragen suchen muss. Wenn Sie dann endlich die gewünschte Abfrage gefunden haben, stellen Sie fest, dass Sie durch einfaches Neuschreiben der Abfrage viel schneller gewesen wären.
Die Funktion "Abfrage speichern" kann helfen, diese Schwächen zu beheben. Wenn Sie auf die Schaltfläche klicken, können Sie Ihre Abfrage benennen, damit Sie sie später leichter wiederfinden. Außerdem werden gespeicherte Abfragen nicht automatisch gelöscht.
Sie können nicht nur Ihre Abfrage, sondern auch die Ergebnisse einer Abfrage wiederverwenden. Es ist möglich, ein Abfrageergebnis in eine andere Tabelle oder sogar in eine Tabellenkalkulation zu exportieren. Sie können es in den Formaten CSV und JSON herunterladen. Diese Optionen finden Sie oberhalb des Feldes, das die Ergebnisse der Abfrage enthält.
Es wäre möglich, mehrere Seiten mit Leistungs- und Nutzungstipps zu füllen. Wenn Sie jedoch die folgenden bewährten Verfahren und Funktionen anwenden, werden Sie einen erheblichen Leistungsschub erzielen. Wenn Sie mehr erfahren möchten, besuchen Sie unseren Workshop A Big Data Adventure in Google Cloud Platform auf der Crunch Data Engineering and Analytics Conference.