【问题标题】:Append text to Blob in Azure在 Azure 中将文本附加到 Blob
【发布时间】:2011-04-17 10:46:47
【问题描述】:

看了这个关于 blob 的教程:channel 9,我正在考虑使用 blob 容器来保存一堆推文(存储每条推文的 json)。理想情况下,我想为一天中的每个小时创建一个 blob 引用,并在新推文进入时将新推文附加到该 blob。问题是 UploadText(string) 方法覆盖了 blob 的现有内容,是否有一个简单的将文本附加到现有 blob 的方法?

谢谢!

        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)

【问题讨论】:

    标签: windows azure azure-storage blobs


    【解决方案1】:

    Azure 现在支持Append Blobs。创建新 blob 时,必须将其定义为追加块。您不能追加到现有的块 blob。

    这里有一些你可以使用的简单代码。

    追加:

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

    阅读:

    appendBlob.DownloadText()
    

    Technet contains a good tutorial 关于这个主题。此外,official Azure documentation 现在还包含使用 Append Blob 的帮助。

    【讨论】:

    • 似乎有必要在“AppendText()”之前调用“appendBlob.CreateOrReplace()”
    • AppendBlock API 是否暴露给 Azure Powershell?
    【解决方案2】:

    Page Blob 是满足这种需求的方法。 (与块 blob 相比)

    您使用 Put Blob 操作创建 Blob: http://msdn.microsoft.com/en-us/library/dd179451.aspx

    然后您可以使用 Put 页面操作添加“页面”: http://msdn.microsoft.com/en-us/library/ee691975.aspx

    Page Blob 将立即修改添加的页面,更准确地模仿传统文件系统。

    块 blob 预计会有更复杂的构造,并且需要两阶段提交/提交构造。编译后,您必须覆盖以修改 blob。块 blob 设计用于静态(松散定义)内容的流式传输,而不是作为读/写存储。添加了页面 Blob 以支持这些场景。

    【讨论】:

    • @tishon 感谢您的帮助。我将尝试使用页面 blob
    • 页和块 blob 之间的选择实际上更多是关于优化大块和顺序读取(块 blob)或小块和随机访问读取和写入(页 blob)。您确实可以将块附加到块 blob,并重新提交更新的块列表(您也可以删除、插入和替换)。
    • 这个答案随着 Append Blob 的引入而过时。请改用追加 Blob。
    【解决方案3】:

    您可以尝试通过 CloudBlockBlob.DownloadBlockList() 方法获取已提交块的列表,然后通过 CloudBlockBlob.PutBlock() 附加新内容。

    【讨论】:

      猜你喜欢
      • 2020-01-21
      • 2018-03-07
      • 1970-01-01
      • 1970-01-01
      • 2023-02-24
      • 2020-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多