2011-08-09 4 views
3

Je prévois de stocker des milliers d'images de profil (facebook et twitter) sur des milliers (j'espère même des millions un jour). Leur taille habituelle est inférieure à 5k.La meilleure façon de stocker 1000s de petites images (<5k) soit dans MongoDb ou S3?

Quelle est la meilleure façon de le faire soit dans MongoDB ou sur Amazon S3 et d'éviter la fragmentation du disque ou des problèmes similaires?

Des conseils sur les choses à faire et à ne pas faire seraient également très utiles.

+0

J'ai un problème similaire – Vish

+0

j'ai environ 5 millions de fichiers déjà, je suis en utilisant des disques RAID 1, mais le temps de latence devient de plus. Je ne sais pas ce que je devrais faire non plus. – Vish

Répondre

0

Pourquoi ne pas simplement stocker les noms d'utilisateur à la place? L'image du profil est accessible via l'API Facebook Graph (il suffit de remplacer "nom d'utilisateur" par le nom d'utilisateur de l'utilisateur Facebook). Vous économiserez également le travail de mise à jour des images de profil.

<img src="http://graph.facebook.com/username/picture" /> 
+0

La même chose s'applique à Twitter - http://img.tweetimag.es/i/username –

+0

Le problème réside dans les temps de chargement des pages. Il peut y avoir n'importe où entre 30 (réaliste) à 100+ (cas de bord) des images par page. Cela se traduira par deux fois le nombre d'appels http (d'abord pour obtenir l'image de l'url que vous avez posté ci-dessus et la seconde pour le redirigé, généralement un CDN, url que facebook renvoie pour cette image particulière). Cela aurait un impact considérable sur les temps de chargement de la page. –

+0

Oui, peut-être. Peut-être peupler des images après le chargement de la page, via Javascript? –

1

Ouais, publier des images profil sur le site social associé (Facebook, Twitter, etc), mais si vous devez stocker les images téléchargées sur S3, plutôt que de lire le fichier (de S3) et re-streamer Pour votre utilisateur, vous pouvez activer la fonctionnalité "Site Web" et faire en sorte que vos images soient directement liées à S3.

donc votre balise HTML image sera comme:

<img src="http://<amazon s3 - website - endpoint>/<image filename>" title="something"> 
Questions connexes