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