【问题标题】:Azure blob storage - auto generate unique blob nameAzure Blob 存储 - 自动生成唯一的 Blob 名称
【发布时间】:2013-01-14 13:29:43
【问题描述】:

我正在为 Windows Azure 编写一个小型 Web 应用程序,显然它应该使用 blob 存储来存储 blob。

是否有一种函数或方法可以在插入时为 blob 自动生成唯一名称?

【问题讨论】:

    标签: azure naming azure-blob-storage auto-generate


    【解决方案1】:

    您可以为此使用Guid

    string blobName = Guid.NewGuid().ToString();
    

    【讨论】:

      【解决方案2】:

      没有什么可以在“插入”时生成唯一名称;你需要提前想出名字。

      在选择 blob 的名称时,请小心使用任何生成某种序列号的算法(无论是在 blob 名称的开头还是结尾)。 Azure 存储依赖于负载平衡的名称;使用顺序值可能会在访问/写入 Azure Blob 时产生争用,因为它会阻止 Azure 正确地负载平衡其存储。您在每个节点(即服务器)上获得 60MB/秒。因此,为了确保适当的负载平衡并在多个存储节点上利用 60MB/秒,您需要为 blob 使用随机名称。正如 Sandrino 所推荐的那样,我通常使用 Guids 来避免这个问题。

      【讨论】:

      • 这是一个非常有效的观点 (+1)。顺便说一句,您是否参考了一篇描述分区层用于跨 blob 存储节点分布 blob 的算法的文章?我认为从问题的角度来看这将是非常有益的。
      • 不,我没有;曾经有一篇关于这件事的 MS 文章(没有基本细节),但我再也找不到它了……如果我找到了我会发布的链接。您无法控制 MS 对分区的操作,并且可能会根据您的数据和其他租户数据的使用情况而动态变化。所以我所做的就是将底层访问层视为非确定性的。
      • 这很公平。我只找到了一个描述 Azure 存储架构的博客链接,如下所示:blogs.msdn.com/b/windowsazurestorage/archive/2010/12/30/…
      • 啊!找到链接:blogs.msdn.com/b/windowsazurestorage/archive/2010/11/06/… - 走了一半;有一个关于“键选择”的部分。尽管主题是 Azure 表,但逻辑与 Blob 名称保持一致,因为这就是负载平衡的完成方式。基本上,应该避免使用“仅附加”模式。
      【解决方案3】:

      除了 Sandrino 所说的(使用 GUID,被复制的可能性非常低),您可以考虑一些生成无冲突标识符的第三方库示例:Flake ID Generator

      编辑

      Herve 指出了非常有效的 Azure Blob 功能,任何 blob 名称都应考虑该功能,即 Azure 存储负载平衡和 blob 分区

      Azure 将所有 blob 保存在分区服务器中。应该使用哪个分区服务器来存储特定的 blob 取决于 blob 容器和 blob 文件名。不幸的是,我无法找到描述用于 blob 分区的算法的文档。

      有关 Azure Blob 架构的更多信息,请参阅Windows Azure Storage Architecture Overview 文章。

      【讨论】:

        【解决方案4】:

        这是一篇旧帖子,但它是“azure storage blob unique id”搜索出现的第一个热门。

        看起来“metadata_storage_path”生成的属性是唯一的,但它不可过滤,因此它可能对某些用途没有用处。

        【讨论】:

          猜你喜欢
          • 2014-08-06
          • 2021-10-08
          • 1970-01-01
          • 2013-06-30
          • 2016-07-25
          • 2012-03-02
          • 2016-03-04
          • 1970-01-01
          • 2017-08-24
          相关资源
          最近更新 更多