L'obtention de blob nombre dans un conteneur de Stockage Azure
Quel est le moyen le plus efficace pour obtenir le nombre sur le nombre de gouttes dans un conteneur de Stockage Azure?
Droit maintenant, je ne peux pas penser à une autre façon que le code ci-dessous:
CloudBlobContainer container = GetContainer("mycontainer");
var count = container.ListBlobs().Count();
OriginalL'auteur brennazoon | 2011-07-28
Vous devez vous connecter pour publier un commentaire.
L'API ne pas contenir un récipient compter méthode ou une propriété, alors vous devez faire quelque chose comme ce que vous avez posté. Toutefois, vous aurez besoin pour faire face à NextMarker si vous dépasser 5 000 articles retournés (ou si vous spécifiez max # pour le retour et la liste est supérieure à ce nombre). Puis vous arriverez à faire ajouter l appels basé sur NextMarker et ajouter le compte.
EDIT: Par smarx: le SDK doit prendre soin de NextMarker pour vous. Vous aurez besoin pour faire face à NextMarker si vous travaillez au niveau de l'API, l'appel de Liste Des Blobs par le REPOS.
Alternativement, si vous êtes le contrôle de la goutte insertions/délétions (par le biais d'un service wcf, par exemple), vous pouvez utiliser le blob du conteneur de métadonnées pour stocker le cache conteneur de comptage qui permet de calculer à chaque insertion ou de la suppression. Vous aurez juste besoin de traiter avec les écrire de la simultanéité dans le récipient.
Oups! Je suis passer trop de temps au niveau de l'API, il me semble... 🙂
OriginalL'auteur David Makogon
J'ai essayé de comptage de gouttes à l'aide de ListBlobs() et pour un récipient avec environ 400 000 articles, il m'a fallu plus de 5 minutes.
Si vous avez le contrôle complet sur le conteneur (qui est, vous pouvez contrôler quand l'écrit), vous pourriez mettre en cache les informations de taille dans le conteneur de métadonnées et de les mettre à jour chaque fois qu'un élément est supprimé ou inséré. Voici un morceau de code qui serait de retour le conteneur d'objets blob count:
Bien entendu, cela suppose que vous mettez à jour ItemCount/CountUpdateTime chaque fois que le récipient est modifié. CountUpdateTime est une heuristique de sauvegarde (si le conteneur ne se modifiés sans que quelqu'un de la mise à jour CountUpdateTime, cela va forcer un re-comte), mais ce n'est pas fiable.
Ok, peut-être pas des Tables de Stockage car il n'a pas un natif compter de la méthode, seulement "obtenir tous les éléments". Peut-être un DocumentDB table ou un relativement plus cher table SQL.
Ou, puisque les gouttes et la table d'entités ont ETags pour détecter des problèmes de concurrence, vous pourriez avoir 1 goutte/entité avec le comte ou d'une liste de noms de fichiers.
OriginalL'auteur David Airapetyan
Si vous voulez simplement savoir combien de gouttes sont dans un conteneur sans avoir à écrire de code, vous pouvez utiliser le Microsoft Azure Storage application de l'Explorateur.
OriginalL'auteur Matt
Exemple à l'aide de PHP API et getNextMarker.
Compte nombre total de gouttes dans un conteneur Azure.
Il prend beaucoup de temps: environ 30 secondes pour 100000 gouttes.
(ce qui suppose que nous avons un valide $connectionString et $container_name)
OriginalL'auteur Sambo
Si vous n'êtes pas à l'aide de répertoires virtuels, ce qui suit fonctionnera comme déjà répondu.
Cependant, l'extrait de code ci-dessus peut ne pas avoir souhaité compter que si vous utilisez des répertoires virtuels.
Par exemple, si vos blobs sont stockées semblable à la suivante: /container/directory/filename.txt d'où le nom du blob = directory/filename.txt le conteneur.ListBlobs().Count(); ne compter combien de "répertoire" des répertoires virtuels que vous avez. Si vous souhaitez la liste des gouttes contenues dans les répertoires virtuels, vous devez définir la useFlatBlobListing = true dans la ListBlobs ().
Remarque: le ListBlobs() avec useFlatBlobListing = vrai, c'est beaucoup plus cher/lent appel...
OriginalL'auteur Bill Christenson
Avec l'API Python de Stockage Azure c'est comme:
list_blobs
a une limite de 5 000Pour la première demande, il renvoie généralement tous les objets blob, mais @Shane est bon pour les demandes ultérieures vous avez encore de la limite de 5 000.
OriginalL'auteur Celik