C# Cosmos DB连接限制和备用连接位置

C# Cosmos DB连接限制和备用连接位置,c#,azure,azure-cosmosdb,C#,Azure,Azure Cosmosdb,我们正在将核心产品的数据存储转移到Cosmos DB。对于文档,它工作得很好,但我很难找到附件所需的信息 我可以使用Microsoft.Azure.DocumentDB NuGet Package v 1.19.1从我的C#代码中成功地使用附件完成我想要的一切 根据我能找到的信息,对于一个帐户中的所有附件,附件总数限制为2GB。这是极大的限制。信息可在此处找到: 它说: Azure Cosmos DB允许您使用Azure Cosmos DB(每个帐户最多2 GB)或将二进制Blob/媒体存储到

我们正在将核心产品的数据存储转移到Cosmos DB。对于文档,它工作得很好,但我很难找到附件所需的信息

我可以使用Microsoft.Azure.DocumentDB NuGet Package v 1.19.1从我的C#代码中成功地使用附件完成我想要的一切

根据我能找到的信息,对于一个帐户中的所有附件,附件总数限制为2GB。这是极大的限制。信息可在此处找到:

它说:

Azure Cosmos DB允许您使用Azure Cosmos DB(每个帐户最多2 GB)或将二进制Blob/媒体存储到您自己的远程媒体存储中

这似乎暗示您可以创建指向存储在别处的资源的附件。也许在CDN上。但是我找不到任何文档来说明如何在C#中真正做到这一点

有人知道Cosmos DB实际上是否可以连接到存储在其外部的BLOB有效载荷上吗?如果是这样的话,.NETNuGet包可以这样做吗?或者它只对纯REST调用可用


非常感谢。

管理外部存储的附件没有内置功能。相反,存储它们然后引用它们取决于您

最常见的模式是使用文档存储特定附件的URL(例如,存储到Azure存储中的blob)。这实际上导致两种操作:

  • 从Cosmos DB检索文档的查询
  • 根据返回的Cosmos DB文档中的URL从存储器中读取
注意:管理引用内容的所有责任都在您身上:更新、删除等。如果您使用blob存储,则需要处理诸如私有访问与公共访问(以及在必要时为私有URL生成SA,在将URL返回到客户端时,对流式内容)


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

David…一个小更正-附件与文档分开存储。提取文档不会带来附件。我们需要一个单独的查询来检索它们。@GauravMantri-正确,这就是(我认为)我所说的。我描述的场景需要读取一个文档(包含存储中某个blob的url),然后检索blob内容(用于流式传输,或只是传递url)。实际上,这是一个三步过程-1)读取文档2)查找该文档的附件,3)从附件中存储的url读取内容。如果附件实际上是文档中的一个属性,那么它实际上是一个两步过程。@GauravMantri-我现在看到了混淆。我完全忽略了Cosmos DB附带的文档(因为OP已经考虑到了这些限制,希望从中继续前进)。我只是描述了绕过内置附件并使用外部blob存储的方法。非常感谢您提供的所有信息。我想知道的是,我是否可以使用Cosmos DB中的附件机制来存储媒体的URL,而不是存储媒体本身。这里的优点是,您可以在不更改文档本身的情况下更新媒体。如果不是,我将不得不使附件成为文档结构的一部分。然后,当我更改附件时,整个文档都会更新。没关系。不太理想,但还行。