2011-04-21 4 views
1

Nous concevons une base de données (SQLServer 2005) pour stocker les données de mesure de nos instruments. Chaque seconde, chaque instrument renvoie 5 valeurs différentes (tous les flottants) - tels que max, min, avg etc. Lors de la conception d'une base de données, est-il préférable de stocker toutes ces valeurs dans une seule table (chaque ligne contenant un horodatage, type et valeur), ou pour les stocker dans des tables individuelles (par exemple: avgtable, maxtable, mintable) avec chaque ligne contenant un horodatage et une valeur? Nous stockerons des données provenant de 100 instruments maximum, et ils fonctionneront pendant des mois à la fois, de sorte que les données deviendront assez volumineuses.Table unique pour toutes les valeurs ou tables séparées pour chaque valeur?

Un design offre-t-il une performance améliorée par rapport à l'autre?

Merci

Répondre

0

Vous êtes mieux avec tout dans 1 table, sinon vous auriez à joindre les tables ensemble pour regarder une seule mesure et répéter le temps de date et éventuellement d'autres domaines qui conduira également beaucoup plus grande base de données. Rejoindre des tables est le bit cher. Recommandez également d'utiliser un champ de clé primaire tel que bigint IDENTITY (1,1) pour pouvoir référencer les enregistrements par ID pour une recherche plus rapide.

+0

Si je stocke tout dans une seule table, j'aurais besoin de 5 lignes pour chaque mesure, et chaque ligne nécessiterait toujours un horodatage ET un identificateur de type. En raison de la nature des données recueillies, tous les instruments ne renverront pas tous les 5 types de données, donc nous ne voulons pas qu'une entrée contienne 5 champs, mais plutôt une entrée pour le point de données. Est-il toujours logique de tout stocker ensemble? – Curtis

+0

Cela dépend de la façon dont vous allez le lire. Si vous accédez simplement à une information en même temps, utilisez une table par type de mesure, le nom de la table vous indique également le type de mesure. Si vous voulez lire toutes les 5 mesures en même temps pour l'affichage ou la recherche, alors 1 table avec un horodatage et 5 colonnes nommées de manière appropriée pour les 5 types de mesure et tout permettant d'être nul fera l'affaire. –

1

Ce n'est peut-être pas une bonne idée de stocker toutes les mesures. La plupart des données de séries chronologiques (pas toutes) sont très répétitives et il suffit souvent d'enregistrer uniquement les changements de mesure avec une heure de début et une heure de fin, ou d'adopter d'autres méthodes de compression et de codage. Jetez un coup d'œil aux systèmes Process Historian et Complex Event Processing (CEP) pour comprendre quels sont les différents systèmes utilisés et quelles techniques sont à votre disposition. Il y a beaucoup d'outils et de technologies utilisés pour soutenir votre type de scénario. OSISoft, StreamBase et Oracle CEP sont quelques-uns des logiciels disponibles. Puisque vous êtes un client Microsoft, vous pourriez également être intéressé par l'offre CEP de Microsoft pour SQL Server: StreamInsight.

Questions connexes