Gérer le forum:  Aide  •  Rechercher  •  Liste des Membres  •  Groupes d'utilisateurs   •  S'enregistrer  •  Profil  •  Se connecter pour vérifier ses messages privés  •  Connexion 
 [SQL/ASP.NET] Gérer une table de statistiques dynamiques Voir le sujet suivant
Voir le sujet précédent
Poster un nouveau sujetRépondre au sujet
Auteur Message
Strato
Résident du forum
Résident du forum


Ecole d'Ingénieurs
Sexe: Sexe:Masculin
Messages: 250
Localisation: Paris

MessagePosté le: Mer 15 Nov 2006 - 16:09 Répondre en citantRevenir en haut

Salut,

Mon boss vient de me confier un nouveau projet.

J'ai accès à une table sous SQL Server qui contient des données à propos des visites faites sur un site web, à savoir quel type de médias sont visionnés. Chaque ligne contient une adresse IP, la date, et un identifiant média (IMAGE, VIDEO, SON).

Il faut que je transvase ces données dans une autre table, où pour chaque mois, j'aurai un Tuplet comptant le nombre de visionnage pour chaque média. Exemple de tuplet : juin 2006 - 128 - 712 - 1159. On a bien le mois, le nombre d'images vues, de vidéos, et de sons écoutés.

Au final, dans la nouvelle table, je dois avoir :
- D'une part des tuplets qui ne bougeront plus et qui contiennent le nombre de visionnage des médias des mois précédents.
- D'autre part un tuplet pour le mois en cours, qui devra à terme être régénéré à chaque fois qu'on chargera la page ASP.NET qui permettra de publier ces statistiques. A chaque fin de mois, ce tuplet devra se figer, et un nouveau tuplet pour le mois suivant devra être créé.

Mon problème c'est que j'ai bien compris ce que voulait mon boss, mais je ne sais pas trop par quel bout l'attaquer. Est-ce que je dois faire des triggers directement dans SQL Server, ou est-ce que je peux gérer la création des tuplets dans mon code ASP.NET/C# ? (sans que les requêtes ne soient trop répétées, notamment pour les tuplets des mois passés qui ne devront être calculés qu'une seule fois)

Merci d'avance pour les pistes que vous pourrez me proposer.
Voir le profil de l'utilisateurEnvoyer un message privé

N'oubliez pas de vous inscrire à la communauté pour participer. Si vous êtes déjà membre, connectez-vous pour faire disparaître ce bandeau publicitaire.
Vincent
Webmaster
Webmaster


Post-BTS
Sexe: Sexe:Masculin
Messages: 5584
Localisation: Montpellier

MessagePosté le: Mer 15 Nov 2006 - 19:23 Répondre en citantRevenir en haut

S'il n'y a pas besoin d'une alimentation au fil de l'eau, mais que tu n'a besoin de remplir la table mensuelle qu'à la fin du mois, c'est simple.

Tu fais des requêtes qui comptent ce que t'as besoin de compter, et tu en fait une requête d'insertion dans ta table de données agrégées.

_________________
Hey les amis, pensez à suivre @webig sur Twitter, et pourquoi pas me suivre moi @cybervince Wink
Voir le profil de l'utilisateurEnvoyer un message privéVisiter le site web du posteurMSN MessengerNuméro ICQ
Strato
Résident du forum
Résident du forum


Ecole d'Ingénieurs
Sexe: Sexe:Masculin
Messages: 250
Localisation: Paris

MessagePosté le: Mer 15 Nov 2006 - 20:14 Répondre en citantRevenir en haut

Vincent a écrit:
S'il n'y a pas besoin d'une alimentation au fil de l'eau, mais que tu n'a besoin de remplir la table mensuelle qu'à la fin du mois, c'est simple.

Tu fais des requêtes qui comptent ce que t'as besoin de compter, et tu en fait une requête d'insertion dans ta table de données agrégées.

En fait si : l'alimentation doit être au fil de l'eau, quand les gens qui consulteront les stats chargeront le fichier ASP.NET.

Et à la fin du mois le tuplet se fige et un nouveau tuplet commence pour le mois suivant. Mais il faut que tout ça soit automatisé. Sinon je sais bien que je pourrais simplement tout faire manuellement en faisant des requêtes dans la première table et les en faisant des INSERT INTO dans la seconde.
Voir le profil de l'utilisateurEnvoyer un message privé
Vincent
Webmaster
Webmaster


Post-BTS
Sexe: Sexe:Masculin
Messages: 5584
Localisation: Montpellier

MessagePosté le: Mer 15 Nov 2006 - 20:26 Répondre en citantRevenir en haut

Dans ce cas, je verrai plutôt une double incrémentation.
Tu rajoute ta ligne à chaque chargement, et en plus tu incrémente ton compteur qui va bien.
L'autre solution serait de gérer ca au niveau du SGBD directement via des Triggers qui se déclencheraient à chaque insertion dans la table, mais ca revient à créer un peu une usine à gaz.

_________________
Hey les amis, pensez à suivre @webig sur Twitter, et pourquoi pas me suivre moi @cybervince Wink
Voir le profil de l'utilisateurEnvoyer un message privéVisiter le site web du posteurMSN MessengerNuméro ICQ
Strato
Résident du forum
Résident du forum


Ecole d'Ingénieurs
Sexe: Sexe:Masculin
Messages: 250
Localisation: Paris

MessagePosté le: Mer 15 Nov 2006 - 23:29 Répondre en citantRevenir en haut

Vincent a écrit:
Dans ce cas, je verrai plutôt une double incrémentation.
Tu rajoute ta ligne à chaque chargement, et en plus tu incrémente ton compteur qui va bien.
L'autre solution serait de gérer ca au niveau du SGBD directement via des Triggers qui se déclencheraient à chaque insertion dans la table, mais ca revient à créer un peu une usine à gaz.

Tu peux détailler un peu ton histoire de double incrémentation parce que c'est pas très clair pour moi ? Embarassed

Pour te donner une idée précise la première table ressemble à ça :
Code:
1 - 192.168.1.22  - 15/11/2006 - IMAGE
2 - 192.168.1.157 - 15/11/2006 - VIDEO
3 - 192.168.1.22  - 15/11/2006 - IMAGE
4 - 192.168.1.36  - 15/11/2006 - SON
5 - 192.168.1.22  - 15/11/2006 - SON
6 - ...

Et la deuxième à ça (mois, image, video, son) :
Code:
1 - OCTOBRE 2006  - 1536 - 512 - 327
2 - NOVEMBRE 2006 - 12 - 8 - 29 (jusqu'à ce qu'elle se fige et alors on passera à...)
3 - DECEMBRE 2006 - 0 - 0 - 0
Voir le profil de l'utilisateurEnvoyer un message privé
Vincent
Webmaster
Webmaster


Post-BTS
Sexe: Sexe:Masculin
Messages: 5584
Localisation: Montpellier

MessagePosté le: Jeu 16 Nov 2006 - 01:17 Répondre en citantRevenir en haut

Ben tu ajoute ton enregistrement dans ta première table.
Et ensuite tu en fonction du type 'IMAGE', 'SON'..., tu incrémente (tu fais +1) sur le champ de la ligne qui va bien.

_________________
Hey les amis, pensez à suivre @webig sur Twitter, et pourquoi pas me suivre moi @cybervince Wink
Voir le profil de l'utilisateurEnvoyer un message privéVisiter le site web du posteurMSN MessengerNuméro ICQ
telynor
Résident du forum
Résident du forum


Post-BTS
Sexe: Sexe:Féminin
Messages: 345
Localisation: IDF

MessagePosté le: Sam 18 Nov 2006 - 15:51 Répondre en citantRevenir en haut

Vincent a écrit:

L'autre solution serait de gérer ca au niveau du SGBD directement via des Triggers qui se déclencheraient à chaque insertion dans la table, mais ca revient à créer un peu une usine à gaz.


J'opterai pour celle la moi, je trouve ca plus pratique de gerer ce genre de probleme dans le code.
Voir le profil de l'utilisateurEnvoyer un message privéMSN Messenger
Zonag
Modérateur
Modérateur


BTS IG - Option réseau Diplômé
Sexe: Sexe:Masculin
Messages: 1298
Localisation: Toulouse

MessagePosté le: Sam 18 Nov 2006 - 16:00 Répondre en citantRevenir en haut

Et une bonne vieille requete avec des SELECT COUNT qui génererais une vue ça vous parait pas réalisable ?
Voir le profil de l'utilisateurEnvoyer un message privé
Strato
Résident du forum
Résident du forum


Ecole d'Ingénieurs
Sexe: Sexe:Masculin
Messages: 250
Localisation: Paris

MessagePosté le: Sam 18 Nov 2006 - 23:37 Répondre en citantRevenir en haut

Une vue ou une table ça n'a pas trop d'importance. De toute façon mon boss m'a laissé créer une table exprès pour emmagasiner les stats.

Ce que je me demande c'est comment faire en sorte que (par exemple) le 1er décembre à 00:00 mon copain SQL Server "ferme" le tuplet qui contenait les stats de novembre, en les finalisant bien comme il faut, et en crée un nouveau pour repartir de zéro et emmagasiner les stats de décembre.
Voir le profil de l'utilisateurEnvoyer un message privé
Adrien
Accro à Web-IG
Accro à Web-IG


Post-BTS
Sexe: Sexe:Masculin
Messages: 125
Localisation: Ile-de-France

MessagePosté le: Dim 19 Nov 2006 - 11:56 Répondre en citantRevenir en haut

Tu lances un batch planifié ?
Voir le profil de l'utilisateurEnvoyer un message privéEnvoyer l'e-mailMSN MessengerNuméro ICQ
Vincent
Webmaster
Webmaster


Post-BTS
Sexe: Sexe:Masculin
Messages: 5584
Localisation: Montpellier

MessagePosté le: Dim 19 Nov 2006 - 13:58 Répondre en citantRevenir en haut

Adrien a écrit:
Tu lances un batch planifié ?

C'est également possible ca de lancer un batch planifié à 23h59 le dernier jour du mois qui va faire les comptes et insérer l'enregistrement qui va bien.
Mais visiblement il a besoin d'avoir l'information en temps réel de savoir où en sont les statistiques.

_________________
Hey les amis, pensez à suivre @webig sur Twitter, et pourquoi pas me suivre moi @cybervince Wink
Voir le profil de l'utilisateurEnvoyer un message privéVisiter le site web du posteurMSN MessengerNuméro ICQ
Montrer les messages depuis:      
Poster un nouveau sujetRépondre au sujet
 Sauter vers:   



Voir le sujet suivant
Voir le sujet précédent
Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum