【发布时间】:2013-01-14 13:29:43
【问题描述】:
我正在为 Windows Azure 编写一个小型 Web 应用程序,显然它应该使用 blob 存储来存储 blob。
是否有一种函数或方法可以在插入时为 blob 自动生成唯一名称?
【问题讨论】:
标签: azure naming azure-blob-storage auto-generate
我正在为 Windows Azure 编写一个小型 Web 应用程序,显然它应该使用 blob 存储来存储 blob。
是否有一种函数或方法可以在插入时为 blob 自动生成唯一名称?
【问题讨论】:
标签: azure naming azure-blob-storage auto-generate
您可以为此使用Guid:
string blobName = Guid.NewGuid().ToString();
【讨论】:
没有什么可以在“插入”时生成唯一名称;你需要提前想出名字。
在选择 blob 的名称时,请小心使用任何生成某种序列号的算法(无论是在 blob 名称的开头还是结尾)。 Azure 存储依赖于负载平衡的名称;使用顺序值可能会在访问/写入 Azure Blob 时产生争用,因为它会阻止 Azure 正确地负载平衡其存储。您在每个节点(即服务器)上获得 60MB/秒。因此,为了确保适当的负载平衡并在多个存储节点上利用 60MB/秒,您需要为 blob 使用随机名称。正如 Sandrino 所推荐的那样,我通常使用 Guids 来避免这个问题。
【讨论】:
除了 Sandrino 所说的(使用 GUID,被复制的可能性非常低),您可以考虑一些生成无冲突标识符的第三方库示例:Flake ID Generator
编辑
Herve 指出了非常有效的 Azure Blob 功能,任何 blob 名称都应考虑该功能,即 Azure 存储负载平衡和 blob 分区。
Azure 将所有 blob 保存在分区服务器中。应该使用哪个分区服务器来存储特定的 blob 取决于 blob 容器和 blob 文件名。不幸的是,我无法找到描述用于 blob 分区的算法的文档。
有关 Azure Blob 架构的更多信息,请参阅Windows Azure Storage Architecture Overview 文章。
【讨论】: