mardi 30 août 2011

SQL, Schéma de bases

Je suis en train de me former sur le language SQL et j'ai commencé quelques réflexions concernant le design de la base de  données de Cirrus. Il en ressort un certain nombre de point à approfondir.

Harvesters

Tout d'abord quel schéma de bases de données je souhaite utilise?. Pour le moment mes efforts se sont focalisés sur l'acquisition des données depuis dayer.biz. En est ressortie un "Harvester" qui me permet de récupérer régulièrement les données de ce site. Le programme est opérationnel et permet de downloader les données de bases qui vont populer mon schéma. Cela représente pour le moment environ 40'000 record de relevés. La fréquence est de l'ordre de l'heure concernant ces données. Par la suite j'adapterai le programme Perl pour faire l'acquisition de données provenant de ma station météo. Les aménagement à prévoir sont l'acquisition de données CSV plutôt que des pages WEB. Dans l'absolu, je pense que cela devrait simplifier les choses.

Schéma

Mes premières réflexions sur le schéma de base de données à adopter sont orienté sur l'utilisation de table chaînées reflétant des statistiques à des périodes données. Ainsi je distingue cinq tables de bases me permettant de faire des analyses.

  •  weatherData : données brutes. La fréquence est de 60 minutes pour le moment. Pourquoi pas à terme descendre à 15 minutes. La table contient des données de bases comme la pression, température, point de rosé...etc. qui me permettent ensuite une analyse plus fine du temps.
  • dailyStats : Regroupe des statistiques à l'échelle de la journée. Un enregistrement de cette table correspond à des calculs pour une journée donnée. La sélection se fait donc sur la date. A ce sujet, la date doit être marqué comme index pour weatherData.
  • weeklyStats : Regroupe des statistiques à l'échelle de la semaine. Un enregistrement de cette table correspond à des calculs pour une semaine donnée. La sélection se fait donc sur la date. Il faut en déduire le numéro de semaine. A ce sujet, la date doit être marqué comme index pour dailyStats.
  • monthlyStats : Regroupe des statistiques à l'échelle du mois. Un enregistrement de cette table correspond à des calculs pour un mois donnée. La sélection se fait donc sur la date. La date doit être marquée comme index pour weeklyStats.
  • yearlyStats : Regroupe des statistiques à l'échelle de l'année. Un enregistrement de cette table correspond à des calculs pour une année donnée. La sélection se fait donc sur la date. La date doit être marquée comme index pour monthlyStats.

Aucun commentaire:

Enregistrer un commentaire