Partitionierung nach Datum?
Wir experimentieren mit BigQuery, um Benutzerdaten zu analysieren, die von unserer Softwareanwendung generiert wurden.
Unser Arbeitstisch besteht aus Hunderten von Millionen Zeilen, von denen jede eine eindeutige Benutzersitzung darstellt. Jedes Feld enthält einen Zeitstempel, eine UUID und andere Felder, die die Interaktion des Benutzers mit unserem Produkt während dieser Sitzung beschreiben. Derzeit generieren wir ungefähr 2 GB Daten (~ 10 Millionen Zeilen) pro Tag.
Von Zeit zu Zeit führen wir möglicherweise Abfragen für den gesamten Datenbestand aus (derzeit ungefähr 2 Monate, Tendenz steigend). Typische Abfragen erstrecken sich jedoch nur über einen einzelnen Tag, eine Woche oder einen Monat. Wir stellen fest, dass unsere eintägige Abfrage mit dem Anwachsen unserer Tabelle immer teurer wird (wie wir es bei einer BigQuery-Architektur erwarten würden).
Was ist der beste Weg, um Teilmengen unserer Daten effizienter abzufragen? Ein Ansatz, den ich mir vorstellen kann, besteht darin, die Daten nach Tag (oder Woche, Monat usw.) in separate Tabellen zu "unterteilen" und sie dann in einer Union zusammen abzufragen:
SELECT foo from mytable_2012-09-01, mytable_2012-09-02, mytable_2012-09-03;
Gibt es einen besseren Weg als diesen ???