【问题标题】:getmetadata for a selection of blobs in Azure Blob Storage NodeJs用于 Azure Blob 存储 NodeJs 中选择的 blob 的 getmetadata
【发布时间】:2018-04-12 02:55:28
【问题描述】:

我正在开发一个连接到 azure 存储的 azure 函数,以根据这些 blob 上的特定元数据获取 blob 元数据的选择性列表。例如,在存储中的所有 blob 上,都会有一个名为 type 的元数据,它存储新闻、更改通知、常见问题等值。我们可能有 50 个 blob 是新闻,另外 50 个是更改通知,另外 50 个是常见问题。

现在从函数中,我请求所有类型为 news 的 blob,该函数应该返回所有带有 news 的 blob 的元数据,如下例所示:

value: [
{ object : abc.xml,
  data created : Mar 20,2018,
  type : news,
  creator name : john
}
{
   object : xyz.xml,
   data created: Mar 13,2018,
   type : news,
   creator name : Siva
}
{
   object : dce.xml,
   data created: Mar 20,2018,
   type : news,
   creator name : John
}

然后我必须根据元数据对数据进行排序。我看到了单个 blob 的 getmetadata 和 getproperties 选项,但我没有看到任何选项可以通过存储 sdk 获得我刚才提到的东西。是否可以使用 Blob 存储元数据来实现这一点,是否有任何 sdk 方法可以实现它?

[编辑] 获取 blob 的过滤器类型不会改变。

【问题讨论】:

    标签: javascript node.js azure azure-blob-storage azure-functions


    【解决方案1】:

    是否可以使用 Blob 存储元数据来实现这一点? 有什么sdk方法可以实现吗?

    遗憾的是,Azure Blob 存储不支持您尝试完成的任务。您无法查询元数据(或任何其他属性,如上次修改日期、内容类型等)的 blob 并执行服务器端过滤。

    您需要做的是获取 blob 列表并在客户端进行过滤(在您的情况下为函数代码)。

    其他替代方法是使用 Cosmos DB 或 Azure 表存储等其他服务。使用 Cosmos DB 和 Azure 表存储,您可以将此元数据与 blob URL 一起存储在那里,并在这些存储中进行搜索以获得所需的结果。

    【讨论】:

    • 感谢您的回复。我很感激。 Azure 表存储方法是否会更好,而不是加载所有 blob 元素并在客户端过滤它们?这两种方法对性能有何影响
    • 这取决于容器中的 blob 数量。在一个请求中,您只能列出 5000 个 Blob。因此,如果您的 blob 数量很少,我认为客户端过滤没有问题。给您一个后续问题:一旦将标签分配给 blob,它可以更改吗?如果没有,那么有更好的方法来完成任务。请告诉我,我会相应地更新答案。
    • 再次感谢您。是的,标签根本不会改变。
    猜你喜欢
    • 2016-02-12
    • 2021-07-09
    • 2012-03-02
    • 2016-03-04
    • 2017-11-10
    • 1970-01-01
    • 2021-10-08
    • 2019-08-17
    • 2017-04-18
    相关资源
    最近更新 更多