99 votes

Est-il préférable d’avoir de nombreux petits conteneurs de blobs de stockage Azure (chacun avec quelques blobs) ou un très grand conteneur avec des tonnes de blobs?

Si le scénario est le suivant:

J'ai plusieurs instances d'un service web qui écrit un tas de données pour le Stockage Azure. J'ai besoin d'être capable de groupe de blobs dans un récipient (ou un répertoire virtuel) selon le moment où il a été reçu. De temps en temps (tous les jours au pire) âgés gouttes obtiendrez traitées, puis supprimé.

J'ai deux options:

Option 1

Je fais un conteneur appelé "blobs" (par exemple) et ensuite le stocker tous les blogs en ce conteneur. Chaque blob utiliser un répertoire de nom de style avec le nom du répertoire en cours du moment il a été reçu (par exemple, "hr0min0/données.bin", "hr0min0/data2.bin", "hr0min30/data3.bin", "hr1min45/données.bin", ... , "hr23min0/dataN.bin", etc - un nouveau répertoire toutes les X minutes). La chose qui traite de ces gouttes traitera hr0min0 gouttes d'abord, puis hr0minX et ainsi de suite (et les gouttes sont encore en cours d'écriture lorsqu'en cours de traitement).

Option 2

J'ai beaucoup de conteneurs, chacun avec un nom basé sur l'heure d'arrivée (donc, la première sera un conteneur appelé blobs_hr0min0 puis blobs_hr0minX, etc) et toutes les gouttes dans le récipient sont ces gouttes qui est arrivé à l'nommé temps. La chose qui traite de ces blogs traitera d'un conteneur à un moment.

Donc ma question est, quelle est la meilleure option? Ne l'option 2 me donner une meilleure parallélisation (depuis les conteneurs peuvent être dans différents serveurs) ou est l'option 1 mieux parce que plusieurs conteneurs peuvent causer d'autres inconnus?

70voto

David Makogon Points 28933

Tout le monde vous a donné d'excellentes réponses autour de l'accès gouttes directement. Toutefois, si vous avez besoin de la liste des gouttes dans un récipient, vous verrez probablement de meilleures performances avec le modèle d'emballage. Je viens de parler avec une entreprise qui a été le stockage d'un grand nombre de gouttes dans un seul conteneur. Souvent, ils répertorient les objets dans le conteneur, puis effectuer des actions à l'encontre d'un sous-ensemble de ces gouttes. Ils voient des performances, le temps de récupérer une liste complète a été de plus en plus.

Cela pourrait ne pas s'appliquer à votre scénario, mais c'est quelque chose à considérer...

67voto

Eugenio Pace Points 7334

Je ne pense pas que cela importe vraiment (à partir d'une évolutivité/parallélisation point de vue), car le partitionnement sous windows Azure blob storage est fait à la goutte de niveau, pas le contenant. Raisons pour répartissent dans les différents conteneurs ont plus à voir avec le contrôle d'accès (par exemple, SAS) ou total de la taille de stockage.

Voir ici pour plus de détails: http://blogs.msdn.com/b/windowsazurestorage/archive/2010/05/10/windows-azure-storage-abstractions-and-their-scalability-targets.aspx

(Faites défiler jusqu'à "Partitions").

Citant:

Blobs – Depuis la partition de la clé est vers le bas pour le nom du blob, nous pouvons charger solde accès à différents gouttes sur les serveurs afin de l'échelle d'accès. Cela permet à l'conteneurs à atteindre la taille comme vous en avez besoin (dans le compte de stockage limite de l'espace). L' différence est que nous ne fournissons pas la capacité de faire atomique les transactions au sein de plusieurs gouttes.

21voto

dunnry Points 5925

Théoriquement, il devrait y avoir aucune différence entre les lots de conteneurs ou moins conteneurs avec plus de gouttes. Les conteneurs supplémentaires peut être sympa supplémentaires sur les limites de sécurité (pour le public de l'accès anonyme ou différents SAS de signatures par exemple). Conteneurs supplémentaires peuvent également faire le ménage un peu plus facile lorsque la taille (de la suppression d'un seul conteneur contre le ciblage de chaque goutte). J'ai tendance à utiliser de récipients en plus pour ces raisons (pas pour la performance).

En théorie, l'impact sur les performances ne devraient pas exister. La goutte elle-même (URL complète) est la clé de partition dans Windows Azure (a été pendant une longue période). C'est la plus petite chose qui sera équilibré à partir d'une partition d'un serveur. Donc, vous pouvez souvent avoir deux gouttes dans le même récipient étant servi par des serveurs différents.

Jeremy indique qu'il y a une différence de performance entre les plus et les moins de conteneurs. Je n'ai pas creusé dans ces critères suffit à expliquer pourquoi cela pourrait être le cas, mais je suppose que d'autres facteurs (comme la taille, la durée de l'examen, etc.) pour expliquer les écarts.

2voto

Juste une pensée différente difficile! Les gens y ont bien répondu! Tout dépend de vos besoins et de l’aspect futur de votre système.

La création d'un conteneur est assez coûteuse en temps comparé à l'ajout d'un blob à un conteneur existant.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X