2008-11-01 5 views
3

Quelle est la meilleure façon de stocker un grand nombre de points de données?Stockez un grand nombre de points de données?

Par exemple les valeurs de température qui sont mesurées toutes les minutes sur beaucoup d'emplacements?

Les bases de données SQL avec une ligne par point de données ne semblent pas très efficaces.

+0

Cherchez-vous l'efficacité de la vitesse ou l'efficacité du stockage? Comment prévoyez-vous traiter les données exactement? Combien de temps avez-vous besoin pour conserver les données? – EvilTeach

Répondre

3

Je voudrais savoir pourquoi vous estimez qu'il n'est pas efficace. Vous devez probablement expliquer votre modèle de données et votre schéma pour donner un meilleur contexte du scénario.

Le stockage de plusieurs points de données sur une seule ligne, lorsqu'ils ne sont pas liés entre eux et devrait en fait se suffire à eux-mêmes, n'est pas une bonne approche. Le maillage ensemble aboutira à des instructions de requête très contre-intuitives et excentriques pour extraire les points de données corrects dont vous avez besoin pour un scénario donné.

Nous avons déjà effectué des travaux dans une centrale électrique, en recueillant des données provenant de divers systèmes et de l'équipement de comptage sur une grande variété de paramètres gaziers et électriques qui doivent être surveillés et regroupés. Ils peuvent entrer toutes les 3-5 minutes à 30-60 minutes selon le type de paramètres. Cela entraîne naturellement des millions d'enregistrements par mois. La clé indexe correctement les tables afin que leur ordre physique soit lié à la séquence dans laquelle les enregistrements sont entrés. (Index clusterisé) Les nouvelles pages et extensions sont créées et remplies de manière séquentielle par les données entrantes. Cela devrait éviter les fractionnements massifs de pages et les remaniements.

+0

C'est un très bon point concernant l'ordre physique dans lequel les données arrivent et l'index clusterisé. –

+0

Le partitionnement de table par date/heure est une autre méthode pour répartir la charge, en particulier si vous devez conserver l'historique pendant une période prolongée. –

1

Une table comme cela peut fonctionner:

LocationID, température, Timestamp

Je ne vois pas pourquoi ce ne serait pas efficace. C'est ce que sont les bases de données, après tout.

2

La question clé peut être: comment avez-vous besoin d'y accéder plus tard?

Si vous devez associer chaque point avec un horodatage et l'emplacement ID, et plus tard besoin de récupérer des mesures individuelles en fonction de plage horaire/heure et le lieu de plusieurs clients, une base de données peut en effet être le plus efficace à récupération. OTOH, si votre client va charger et traiter les données d'une journée entière d'un emplacement, stocker les données dans un fichier par emplacement et par jour réduit les dépendances et peut être plus facile.

D'autres préoccupations sont les sauvegardes et l'archivage, et si vos utilisateurs peuvent/devraient faire face à eux-mêmes.

+0

La manière dont ils sont consultés et interrogés ultérieurement sera déterminante pour influencer le type d'indexation non groupée à configurer pour les tables. – icelava

Questions connexes