C# 在windows azure中存储Blob可在数据库中存储其他数据,如内容类型
我们有一个相当大的解决方案,它使用FileStream在SQLServer2008中存储大量图像、视频和文档。我们已经开始迁移到使用windows azure blob存储来利用地理复制,这意味着将varbinary(max)列更改为相对url,我们将附加指向存储帐户的custome子域 这一切都很好,我们很乐意进行测试,但是我们目前使用varbinary数据存储文件名、扩展名和contentType 我的问题是,如果我们只是去一个相对的url,它将有文件扩展名,如果需要,我们需要存储这些额外的数据吗?我们正在办公室里辩论,大家的共识似乎是保持简单,只存储Url 在这种情况下,大多数人会做什么?存储此附加数据的用途/好处是什么C# 在windows azure中存储Blob可在数据库中存储其他数据,如内容类型,c#,sql-server-2008,azure,azure-storage,C#,Sql Server 2008,Azure,Azure Storage,我们有一个相当大的解决方案,它使用FileStream在SQLServer2008中存储大量图像、视频和文档。我们已经开始迁移到使用windows azure blob存储来利用地理复制,这意味着将varbinary(max)列更改为相对url,我们将附加指向存储帐户的custome子域 这一切都很好,我们很乐意进行测试,但是我们目前使用varbinary数据存储文件名、扩展名和contentType 我的问题是,如果我们只是去一个相对的url,它将有文件扩展名,如果需要,我们需要存储这些额外的
非常感谢您对这一点的思考,外部意见可能是解决这一问题的唯一办法。我倾向于将我存储在Azure中的文件的元数据(我认为可能有用)与URI一起保存在SQL中 什么是“有用的”?
这取决于你的情况。例如,我发现根据URI存储文件大小很有用(从ops/监控的角度来看),这样我就可以轻松快速地查看文件存储使用情况。我还存储文件扩展名/内容类型。基本上,我尝试在本地保存任何元数据,这样可以避免我不得不实际离开并与Azure交谈,a)提高速度/性能,b)最大限度地减少API上的点击次数(从而降低成本-只有在点击次数较多的情况下才是如此)
所以我知道,对于可能需要详细说明可用文件的任何报告需求/UI,我可以生成一些有用的元数据,而不必去Azure附近的任何地方。然后,只有在我确实需要获取文件时才实际触摸Azure。您可能会发现有两件事很有用:每个blob都有一个“内容类型”系统属性,可以在上载blob时设置(您以后也可以更改它)。另一件事是,您还可以使用blob以键值对的形式指定自定义元数据。但是,元数据是不可搜索的。因此,如果您希望基于某些自定义属性搜索blob,最好将它们存储在blob(SQL server)之外。元数据的另一个特点是它的最大大小。如果我没弄错的话,有8KB的限制