c# - Cosmos DB 附件限制和备用附件位置

标签 c# azure azure-cosmosdb

我们正在将核心产品的数据存储迁移到 Cosmos DB。对于文档,它效果很好,但我无法找到附件所需的信息。

我可以使用 Microsoft.Azure.DocumentDB NuGet ackage v 1.19.1 成功地通过 C# 代码中的附件完成我想要的所有操作。

根据我找到的信息,帐户中所有附件的总大小不得超过 2GB。这是非常有限的。此处找到的信息:

https://learn.microsoft.com/en-us/azure/cosmos-db/sql-api-resources#attachments-and-media

它指出:

Azure Cosmos DB allows you to store binary blobs/media either with Azure Cosmos DB (maximum of 2 GB per account) or to your own remote media store.

似乎有一些暗示,您可以创建指向存储在其他地方的资源的附件。也许在 CDN 上。但我找不到任何有关如何从 C# 实际执行此操作的文档。

有谁知道 Cosmos DB 实际上是否可以附加到存储在自身外部的 BLOB 有效负载?如果是这样,.NET NuGet 包可以做到这一点还是仅适用于纯 REST 调用?

提前非常感谢。

最佳答案

没有任何内置的东西可以管理外部存储的附件。相反,由您决定存储它们然后引用它们。

最常见的模式是将 URL 与文档一起存储到特定附件(例如存储到 Azure 存储中的 blob)。这实际上导致了两个操作:

  • 从 Cosmos DB 检索文档的查询
  • 根据返回的 Cosmos DB 文档中找到的 URL 从存储中读取数据。

注意:管理引用内容的所有责任都由您承担:更新、删除等。如果您使用 Blob 存储,则需要处理诸如私有(private)访问与公共(public)访问(以及生成 SAS必要时使用私有(private) URL,将 URL 返回给您的客户端时,而不是流式传输内容)。

还有一点:CDN 本身并不是一种存储机制。您无法将某些内容直接存储到 CDN;这更像是 Azure 存储(用于公共(public)访问内容)之上的一层。

关于c# - Cosmos DB 附件限制和备用附件位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48121988/

相关文章:

c# - 使用 For Loop C# 在按钮上单击标签增量

c# - 监听 HTTP 请求

c# - 问题映射 C :\

azure - 在 Azure webjob 的 Appinsights 中添加新的自定义指标,例如 "Memory Usage"

c# - 隐藏/取消隐藏文件效果不佳

Azure DevOps-部署组-使目标虚拟机联机

azure - 一个可以监听所有容器的 Cosmos DB 更改源的 Azure 函数

c# - 如何在 TableOperation 中从 Azure 表存储中检索实体列表而不指定 rowKey?

c# - IReliable ReadWrite DocumentClient 在 Documentdb 中缺少分区解析器

asp.net - Azure Web 应用服务之间的行为差​​异