Auteur |
Message |
Strato
Résident du forum
Sexe:
Messages: 250
Localisation: Paris
|
Posté le:
Mer 15 Nov 2006 - 16:09 |
|
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. |
|
|
|
|
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
Sexe:
Messages: 5584
Localisation: Montpellier
|
Posté le:
Mer 15 Nov 2006 - 19:23 |
|
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 |
|
|
|
Strato
Résident du forum
Sexe:
Messages: 250
Localisation: Paris
|
Posté le:
Mer 15 Nov 2006 - 20:14 |
|
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. |
|
|
|
|
Vincent
Webmaster
Sexe:
Messages: 5584
Localisation: Montpellier
|
Posté le:
Mer 15 Nov 2006 - 20:26 |
|
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 |
|
|
|
Strato
Résident du forum
Sexe:
Messages: 250
Localisation: Paris
|
Posté le:
Mer 15 Nov 2006 - 23:29 |
|
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 ?
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 |
|
|
|
|
|
Vincent
Webmaster
Sexe:
Messages: 5584
Localisation: Montpellier
|
Posté le:
Jeu 16 Nov 2006 - 01:17 |
|
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 |
|
|
|
telynor
Résident du forum
Sexe:
Messages: 345
Localisation: IDF
|
Posté le:
Sam 18 Nov 2006 - 15:51 |
|
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. |
|
|
|
|
Zonag
Modérateur
Sexe:
Messages: 1298
Localisation: Toulouse
|
Posté le:
Sam 18 Nov 2006 - 16:00 |
|
Et une bonne vieille requete avec des SELECT COUNT qui génererais une vue ça vous parait pas réalisable ? |
|
|
|
|
Strato
Résident du forum
Sexe:
Messages: 250
Localisation: Paris
|
Posté le:
Sam 18 Nov 2006 - 23:37 |
|
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. |
|
|
|
|
Adrien
Accro à Web-IG
Sexe:
Messages: 125
Localisation: Ile-de-France
|
Posté le:
Dim 19 Nov 2006 - 11:56 |
|
Tu lances un batch planifié ? |
|
|
|
|
Vincent
Webmaster
Sexe:
Messages: 5584
Localisation: Montpellier
|
Posté le:
Dim 19 Nov 2006 - 13:58 |
|
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 |
|
|
|
|