2

刚开始研究Azure框架。

只需说您在表存储中创建一行。

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

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

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

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

由于您无法获得此链接,您必须以某种方式将视频存储在 SQL Azure 中吗?

4

4 回答 4

2

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

于 2012-04-09T03:56:03.570 回答
0

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

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

于 2012-08-28T11:34:44.443 回答
0

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

对于写入表的实体,我使用 Blob 名称作为分区键和 Blob 容器名称作为行键。

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

但是,您需要明确处理一件事,Blob Name 和 Blob Container Name 具有不同的命名约束,然后是 Table Partition Keys 和 Table Row 键,因此您需要清理 Blob Name 和 Blob Container Name,然后再将它们用作 PK和 RK 并将实体写入表或从表中读取实体。

以下是如何清理 Blob Name 和 Blob Container Name 以用作表键的方法:

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

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

在此阶段,您可能还希望在已清理的键(分区键或行键)前加上原始键的哈希(即 Blob 名称),以避免具有相同已清理值的不同无效键的错误冲突。

于 2016-06-16T10:12:09.820 回答
-1

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

因此,您可能希望通过使用元数据来做相反的事情,而不是将表与 blob 相关联。

于 2012-05-22T08:51:36.643 回答