2010-04-26 3 views
0

Notre application web permet aux utilisateurs de télécharger des photos, utilise un script PHP sur un serveur LAMP fonctionnant sur Amazon EC2 pour gérer les téléchargements d'images, Amazon S3 pour stocker les fichiers et une base de données MySQL pour enregistrer les données. , tags etc).Quel est le meilleur moyen de télécharger des utilisateurs mensuels dans notre application Web?

J'ai l'intention d'avoir une table image_uploads dans la base de données avec une colonne pour chaque mois et une ligne pour chaque utilisateur. De cette façon, je peux suivre les tendances dans les téléchargements. Il se peut que la vidéo soit téléchargée aussi, donc j'aurais aussi une table video_uploads. De plus, les utilisateurs peuvent appartenir à un certain nombre de groupes et je veux suivre les téléchargements mensuels par groupe, donc j'aurais probablement aussi une table group_uploads. Cela signifie que pour chaque fichier téléchargé, il y aura 2 requêtes de mise à jour SQL - mettez à jour image_uploads et mettez à jour group_uploads.

  1. $ filesize = $ _FILES ['Filedata'] ['size'];
  2. image_uploads UPDATE SET data_in_bytes = (data_in_bytes + de FileSize $) OU mois = $ current_month ... (par exemple - je sais que ce n'est pas correct sql)

Sinon il pourrait y avoir une longue table qui enregistre les données à propos de chaque téléchargement (date, utilisateur, taille, support). De cette façon, je peux toujours interroger la base de données pour l'information que je veux - par exemple téléchargements mensuels par utilisateur = somme de data_in_bytes WHERE utilisateur = ## et month = currentMonth

Quelles sont les meilleures pratiques pour ce genre de tâche?

ce qui a trait

Répondre

1

je garderais une table de journal de maître avec toutes les uploades et interroger la table pour les dates que vous souhaitez:

SELECT * 
FROM logs 
WHERE upload_date between to_date ('2003/01/01', 'yyyy/mm/dd') 
AND to_date ('2003/12/31', 'yyyy/mm/dd'); 
1

Puis-je demander pourquoi vous avez besoin d'une table group_uploads séparée ? Pourquoi ne pas avoir une table avec un schéma comme ceci: uploads (user_id, group_id, nom de fichier, type, taille, date). Où "group_id" pourrait être NULL si l'utilisateur est autorisé à télécharger des fichiers pour lui-même (non associé à un groupe) et "type" serait soit "vidéo" ou "image". Cette approche semble être un peu plus flexible si vous voulez ajouter d'autres types de fichiers (documents, mp3, etc.). Avec ce schéma, les requêtes pour différents filtres (filtre par utilisateur, utilisateur et non groupe, utilisateur et groupe, par type, par date) devraient être plus simples.

Espérons que cela aide.

Questions connexes