2010-09-26 7 views
4

Посмотрев на этот учебник по blobs: channel 9, я думал об использовании контейнера blob, чтобы сохранить кучу твитов (сохраняя json каждого твита, который есть). В идеале я хотел бы создать ссылку blob для каждого часа дня и добавить новые твиты к этому блоблю по мере их поступления. Проблема в том, что метод UploadText (string) перезаписывает существующее содержимое blob, есть ли простой способ добавить текст к существующему блобу?Добавить текст в Blob in Azure

Спасибо!

 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) 

ответ

4

Page Blobs - это путь для этой потребности. (Против блока сгустков)

Вы создаете блоб с операцией Put Blob: http://msdn.microsoft.com/en-us/library/dd179451.aspx

Затем вы можете добавить "страницы" с помощью операции Put страницы: http://msdn.microsoft.com/en-us/library/ee691975.aspx

Page Blobs откорректирует страницу (ы), добавленные с помещением немедленно, более точно имитирующие традиционные файловые системы.

Блок blobs ожидает ожидание более сложной конструкции и требует двухфазной конструкции submit/commit. После компиляции вы должны перезаписать, чтобы скомпенсировать blob. Блокировка блоков предназначена для потоковой передачи содержимого статического (слабого определения), а также в качестве хранилища чтения/записи. Для поддержки этих сценариев были добавлены Blob-страницы.

+0

@tishon благодарит за помощь. Я дам попытку на странице blobs. – jlezard

+0

Выбор между блоками и блочными блоками - это больше о оптимизации для больших фрагментов и последовательных чтений (блочных блобов) или небольших фрагментов и произвольного доступа к чтению и записи (капли страницы). Вы действительно можете добавить блоки к блочному блобу и повторно зафиксировать обновленный список блоков (вы также можете удалить, вставить и заменить). –

+0

Этот ответ устарел с введением Append Blobs. Вместо этого используйте Append Blobs. – Tobias

1

Вы можете попытаться получить список совершенных блоков с помощью метода CloudBlockBlob.DownloadBlockList(), а затем добавить новое содержимое через CloudBlockBlob.PutBlock().

6

Azure теперь поддерживает Append Blobs. Когда вы создаете новый blob, вы должны определить его как добавочный блок. Вы не можете добавлять к существующим блочным блокам.

Вот несколько простых кодов, которые вы можете использовать.

Append:

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

Read:

appendBlob.DownloadText() 

Technet contains a good tutorial по этому вопросу. Также official Azure documentation теперь включает помощь для использования Append Blob.

+1

Кажется необходимым вызвать «appendBlob.CreateOrReplace()» перед «AppendText()» –

+0

Является ли API AppendBlock доступным для Azure Powershell? –