Mi ejemplo simplificado y artificial es el siguiente: -¿Cuál es la mejor manera de almacenar datos históricos en SQL Server 2005/2008?
Digamos que quiero medir y almacenar la temperatura (y otros valores) de todas las ciudades del mundo sobre una base diaria. Estoy buscando una manera óptima de almacenar los datos para que sea tan fácil obtener la temperatura actual en todas las ciudades, como es obtener toda la temperatura históricamente en una ciudad.
Es un problema bastante fácil de resolver, pero estoy buscando la mejor solución.
Las 2 opciones principales que se me ocurren son los siguientes: -
Opción 1 - La misma tabla almacena los registros actuales e históricos
almacenar todos los registros actuales y de archivo en la misma mesa.
decir
CREATE TABLE [dbo].[WeatherMeasurement](
MeasurementID [int] Identity(1,1) NOT Null,
TownID [int] Not Null,
Temp [int] NOT Null,
Date [datetime] NOT Null,
)
Esto todo es simple, pero lo que sería la consulta más eficiente para obtener una lista de las ciudades y no la temperatura actual? ¿Esta escala una vez que la mesa tenga millones de filas? ¿Hay algo que ganar si tenemos algún tipo de bandera IsCurrent en la tabla?
Opción 2 - Guarde todos los registros de archivos en una tabla separada
Habría una tabla para almacenar las mediciones actuales en vivo en
CREATE TABLE [dbo].[WeatherMeasurement](
MeasurementID [int] Identity(1,1) NOT Null,
TownID [int] Not Null,
Temp [int] NOT Null,
Date [datetime] NOT Null,
)
Y una tabla para almacenar la fecha histórica archivado (introducido por una desencadenar quizá)
CREATE TABLE [dbo].[WeatherMeasurementHistory](
MeasurementID [int] Identity(1,1) NOT Null,
TownID [int] Not Null,
Temp [int] NOT Null,
Date [datetime] NOT Null,
)
Esto tiene las ventajas de mantener los principales datos actuales magra, y muy eficiente para consultar, a expensas de hacer el esquema más complejo e insertando datos más caros.
¿Cuál es la mejor opción? ¿Hay mejores opciones que no he mencionado?
NOTA: He simplificado el esquema para ayudar a enfocar mejor mi pregunta, pero supongo que habrá una gran cantidad de datos insertados cada día (100.000s de registros), y los datos son actuales durante un día. Los datos actuales tienen la misma probabilidad de ser consultados que los históricos.
tome sus dos opciones y hágalas responder para que podamos votar –