Was ist der beste Weg, um historische Daten in SQL Server 2005/2008 zu speichern?

Mein vereinfachtes und ausgedachtes Beispiel ist das folgende: -

Nehmen wir an, ich möchte täglich die Temperatur (und andere Werte) aller Städte der Welt messen und speichern. Ich suche nach einer optimalen Methode zum Speichern der Daten, damit die aktuelle Temperatur in allen Städten genauso einfach abgerufen werden kann wie die historische Temperatur in einer Stadt.

Es ist ein Problem, das leicht zu lösen ist, aber ich suche nach der besten Lösung.

Die 2 Hauptoptionen, die ich mir vorstellen kann, sind: -

Option 1 - Gleiche Tabelle speichert aktuelle und historische Datensätze

Speichern Sie alle aktuellen und archivierten Datensätze in derselben Tabelle.

d. h.

CREATE TABLE [dbo].[WeatherMeasurement](
  MeasurementID [int] Identity(1,1) NOT Null,
  TownID [int] Not Null,
  Temp [int] NOT Null,
  Date [datetime] NOT Null,
)

Dies würde alles einfach halten, aber was wäre die effizienteste Abfrage, um eine Liste der Städte und deren aktuelle Temperatur zu erhalten? Würde diese Skalierung erfolgen, wenn die Tabelle Millionen von Zeilen enthält? Kann man etwas erreichen, wenn man eine Art IsCurrent-Flag in der Tabelle hat?

Option 2 - Alle Archivsätze in einer separaten Tabelle speichern

Es würde eine Tabelle geben, um die aktuellen Live-Messungen in @ zu speicher

CREATE TABLE [dbo].[WeatherMeasurement](
  MeasurementID [int] Identity(1,1) NOT Null,
  TownID [int] Not Null,
  Temp [int] NOT Null,
  Date [datetime] NOT Null,
)

Und eine Tabelle zum Speichern des historischen Archivierungsdatums (möglicherweise durch einen Trigger eingefügt)

CREATE TABLE [dbo].[WeatherMeasurementHistory](
  MeasurementID [int] Identity(1,1) NOT Null,
  TownID [int] Not Null,
  Temp [int] NOT Null,
  Date [datetime] NOT Null,
)

Dies hat den Vorteil, dass die wichtigsten aktuellen Daten schlank und sehr effizient abzufragen sind, und dass das Schema dadurch komplexer und das Einfügen von Daten teurer wird.

Was ist die beste Option? Gibt es bessere Optionen, die ich nicht erwähnt habe?

HINWEIS: Ich habe das Schema vereinfacht, um meine Frage besser zu fokussieren. Es wird jedoch davon ausgegangen, dass jeden Tag viele Daten eingefügt werden (100.000 Datensätze) und die Daten für einen Tag aktuell sind. Die aktuellen Daten werden wahrscheinlich genauso abgefragt wie die historischen.

Antworten auf die Frage(14)

Ihre Antwort auf die Frage