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