Ich bin neu in den Spalten-DB-Konzepten und BigQuery im Besonderen. Mir ist aufgefallen, dass es aus Gründen der Performance und Kosteneffizienz empfehlenswert ist, Daten nicht nur logisch, sondern auch zeitlich auf mehrere Tabellen aufzuteilen.BigQuery-Best Practice zum Segmentieren von Tabellen nach Daten
Zum Beispiel - während ich eine Tabelle brauche, um meine Protokolle zu speichern (1 logische Tabelle, die "Protokolle" genannt wird), ist es tatsächlich eine gute Praxis, eine separate Tabelle für verschiedene Zeiträume zu haben, wie "logs_2012", " logs_2013" , etc ... oder sogar "logs_2013_01", "logs_2013_02", etc ...
Meine Fragen:
1) Ist es wirklich die beste Praxis?
2) Wo wäre am besten, die Linie zu zeichnen - eine jährliche Tabelle? Ein monatlicher Tisch? Ein Tagestisch? Sie bekommen den Punkt ...
3) In Bezug auf die Abfrage der Daten über Abfragen - Was ist der beste Ansatz? Sollte ich meine Abfragen dynamisch mit der UNION-Option erstellen? Wenn ich alle meine Protokolle in einer Tabelle hätte, würde ich natürlich die where-Klausel verwenden, um Daten für den gewünschten Zeitbereich zu erhalten, aber wenn Daten über mehrere Tabellen verteilt sind, ist das seltsam. Ich komme aus der Welt der relationalen DB (wenn es bisher nicht offensichtlich war) und ich versuche den Sprung so reibungslos wie möglich zu machen ...
4) Verwendung der verteilten Methode (verschiedene Tabellen für verschiedene Zeiträume) wirft noch die folgende Frage auf: vor dem Abfragen der Daten selbst - ich möchte für einen bestimmten Protokolltyp bestimmen können - was ist der verfügbare Bereich für die Abfrage. Zum Beispiel - für eine bestimmte Maschine möchte ich meinen Benutzern zuerst den relevanten Umfang ihrer verfügbaren Protokolle präsentieren und sie den spezifischen Zeitraum in diesem Bereich wählen lassen, um Einblicke zu erhalten. Die Frage ist: Wie konstruiere ich eine solche Abfrage, wenn meine Daten über mehrere Tabellen verteilt sind (jeweils für einen Zeitraum), von denen ich nicht weiß, welche Tabellen verfügbar sind? Wie kann ich eine Abfrage erstellen, wenn ich nicht weiß, welche Tabellen existieren? Ich könnte versuchen, auf die Tabelle "logs_2012_12" zuzugreifen, wenn diese Tabelle nicht existiert, oder schlimmstenfalls - ich würde nicht wissen, welche Tabellen für meine Abfrage relevant und verfügbar sind.
Hoffnung meine Fragen Sinn machen ...
Amit
Erstaunliche Antwort - Douze Pointe! – Amit