2012-04-09 90 views
2

刚开始学习Azure框架。Azure表,blob

只要说你在表格存储中创建一行。

然后你在Blob存储创建一个鲍勃,

有一些方法,你可以关联你刚才添加的内容与您刚刚创建的BLOB中的表?

或者您有任何相关条目,您必须使用SQL Azure?

这会令人失望,因为您想将某些视频存储在blob中,但在SQL Azure表中有一行您想链接到Blob。

由于您不能拥有此链接,您必须以某种方式将视频存储在SQL Azure中?

回答

2

您可以将存储在blob中的文件的唯一文件名存储到天蓝色表格行中。 不推荐在Azure表或SQL Azure表中存储完整的视频/二进制内容,因为与blob相比,回溯会慢一些,SQL Azure比较昂贵。

+0

如果我想与SQL Azure表行有一些关联到Azure表? – TheWommies 2012-04-10 03:40:34

+0

是的,它是一样的 – 2012-04-11 05:08:45

-1

Azure支持将元数据与blob关联。元数据本质上只是名称 - 值对。以下视频可能会有用:http://www.bestechvideos.com/2009/04/15/mix09-windows-azure-storage

因此,不要将表格与blob相关联,您可能希望通过使用元数据来完成相反的操作。

+1

欢迎来到Stack Overflow!感谢您发布您的答案!请务必阅读[自助推广常见问题](http://stackoverflow.com/faq#promotion)小心。另请注意,每次链接到您自己的网站/产品时,您都必须*发布免责声明。 – 2012-05-22 17:13:54

0

只要您仔细选择blob文件名,就应该能够在Azure表中引用该文件名。但是,小心你的名字。在表中引入基于时间戳的名称和引用是非常有吸引力的。但是,使用Azure您显然正在使用可高度并行的可扩展解决方案。

使用GUID作为文件名以保证唯一性。或者,如果您希望能够根据添加项目的时间更轻松地浏览存储空间,则可以选择带有GUID后缀的日期格式YYYYMMDDHHMMSS。

0

这是完全可能的,并且做了很多次,我个人为我所从事的项目之一实施了这样的架构。

我使用Blob Name作为分区键和Blob Container Name作为我写入表的实体的Row Key。

您也可以通过其他方式来选择Blob容器名称作为PK和Blob名称作为RK。那么你可能想考虑一下你桌子上的分区不会太大,如果你的blob容器太拥挤,就会导致一些性能问题。

虽然有一件事需要明确处理,Blob名称和Blob容器名称具有不同的命名约束,然后使用表分区键和表行键,所以您需要清理Blob名称和Blob容器名称,然后才能将它们用作PK和RK并将实体写入表或从表中读取实体。

这里是你如何清理BLOB名称S和斑点集装箱名S用作表键:

公共静态只读正则表达式DisallowedCharsInTableKeys =新的正则表达式(@“[\#%/?\ u0000- \ u001F \ u007F- \ u009F]“);

串sanitizedKey = DisallowedCharsInTableKeys.Replace(BlobName,disallowedCharReplacement);

在这个阶段,你可能还需要前缀消毒键(分区键或行密钥)与原始密钥的散列(即Blob名称),以避免具有相同清理值的不同无效密钥的错误冲突