首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Azure表,blobs

Azure表,blobs
EN

Stack Overflow用户
提问于 2012-04-09 11:40:02
回答 4查看 895关注 0票数 2

刚刚开始研究Azure框架。

假设您在Table存储中创建了一行。

然后在Blob存储中创建一个Bob,

有没有什么方法可以将你刚刚添加到表中的内容与你刚刚创建的Blob关联起来?

或者任何时候你有相关的条目,你必须使用SQL Azure?

这将是令人失望的,因为假设你想要在blob中存储一些视频,但在SQL Azure表中有一些行你想要链接到该Blob。

既然你不能有这个链接,你必须以某种方式将你的视频存储在SQL Azure中?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-04-09 11:56:04

您可以将存储在blob中的文件的唯一文件名存储到azure表行中。不建议在Azure表或SQL azure表中存储完整的视频/二进制内容,因为检索会变得有点慢,并且SQL azure与blob相比有点昂贵。

票数 2
EN

Stack Overflow用户

发布于 2012-08-28 19:34:44

只要你仔细选择你的blob文件名,你就应该能够在你的Azure表中引用该文件名。但是,要注意如何命名它。使用基于时间戳的名称并在表中引用该名称是非常诱人的。然而,使用Azure,你显然是在使用一个可伸缩的解决方案,最终可以实现高度并行。

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

票数 0
EN

Stack Overflow用户

发布于 2016-06-16 18:12:10

这是完全可能的,并且做了很多次,我个人为我参与的一个项目实现了这样的架构。

我使用Blob Name作为分区键,使用Blob Container Name作为我写入Table的实体的行键。

您也可以通过其他方式选择Blob Container Name作为PK,选择Blob Name作为RK。然后,您可能希望考虑表中的分区不会变得太大,并且如果您的blob容器变得太拥挤,则会导致一些性能问题。

有一件事你需要显式处理,Blob Name和Blob Container Name具有不同于table Partition keys和table Row Keys的命名约束,因此在将Blob Name和Blob Container Name用作PK和RK并将实体写入到表中或从表中读取实体之前,需要对它们进行清理。

以下是如何清理要用作表键的Blob Name %s和Blob Container Name %s:

public static readonly Regex DisallowedCharsInTableKeys = new Regex(@"#%/?\u0000-\u001F\u007F-\u009F");

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

在此阶段,您可能还希望在已清理密钥(Partition key或Row Key)的前面加上原始密钥的散列(即。斑点名称),以避免具有相同消毒值的不同无效密钥的假冲突。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10068646

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档