2010-09-26 7 views
4

Après avoir regardé ce tutoriel sur les blobs: channel 9, je pensais à utiliser un conteneur blob pour enregistrer un tas de tweets (en stockant le json de chaque tweet qui est). Idéalement, je voudrais créer une référence blob pour chaque heure de la journée, et ajouter de nouveaux tweets à ce blob comme ils viennent. Le problème est que la méthode UploadText (chaîne) écrase le contenu existant de la blob, est-il facile façon d'ajouter du texte à un blob existant?Ajouter du texte à Blob dans Azure

Merci!

 fun (json:string) -> 
        let account = CloudStorageAccount.Parse(RoleEnvironment.GetConfigurationSettingValue("DataConnectionString")) 
        let blobs = account.CreateCloudBlobClient(); 
        let tempBlob = blobs.GetBlobReference("tweets/2010-9-26/17/201092617.txt") 
        tempBlob.Properties.ContentType <- "text/plain" 
        tempBlob.UploadText(json) 

Répondre

4

Page Blobs sont la voie à suivre pour ce besoin. (Vs blobs bloc)

Vous créez le blob avec une opération de Blob Put: http://msdn.microsoft.com/en-us/library/dd179451.aspx

Vous pouvez ensuite ajouter "pages" à l'aide d'une page Put opération: http://msdn.microsoft.com/en-us/library/ee691975.aspx

page Blobs modifiera la page (s) ajouté avec une mise immédiatement, plus précisément imitant les systèmes de fichiers traditionnels.

Les blobs de bloc vont s'attendre à une construction plus ridig, et nécessitent une construction de soumission/validation en deux phases. Une fois compilé, vous devez remplacer pour ammend au blob. Blobs de bloc sont conçus pour le streaming de contenu statique (définition lâche), vs comme un magasin de lecture/écriture. Blobs de page ont été ajoutés pour soutenir ces scénarios.

+0

@tishon merci de votre aide. Je vais essayer à la page blobs – jlezard

+0

Le choix entre la page et blobs de bloc est vraiment plus sur l'optimisation pour les grands morceaux et la lecture séquentielle (blocs blobs) ou de petits morceaux et accès aléatoire lecture et écriture (blobs page). Vous pouvez en effet ajouter des blocs à un blob de bloc et valider à nouveau la liste de blocage mise à jour (vous pouvez également supprimer, insérer et remplacer). –

+0

Cette réponse est obsolète avec l'introduction de Append Blobs. Utilisez Append Blobs à la place. – Tobias

1

Vous pouvez essayer d'obtenir la liste des blocs engagés par la méthode CloudBlockBlob.DownloadBlockList() puis ajoutez le nouveau contenu via CloudBlockBlob.PutBlock().

6

Azure prend désormais en charge Append Blobs. Lorsque vous créez un nouveau blob, vous devez le définir en tant que bloc d'ajout. Vous ne pouvez pas ajouter à des blobs de blocs existants.

Voici un code simple que vous pouvez utiliser.

Append:

CloudAppendBlob appendBlob = container.GetAppendBlobReference("myblob.txt") 
appendBlob.AppendText("new line"); 

Lire:

appendBlob.DownloadText() 

Technet contains a good tutorial sur le sujet. En outre, le official Azure documentation inclut désormais l'aide pour l'utilisation d'Append Blob.

+1

Il semble nécessaire d'appeler "appendBlob.CreateOrReplace()" avant "AppendText()" –

+0

L'API AppendBlock est-elle exposée à Azure Powershell? –

Questions connexes