我使用以下代码创建了带有pdf附件的文档,并且该文档正在运行(可以检索附件)。
var myDoc = new { id = "42", Name = "Max", City="Aberdeen" }; // this is the
document you are trying to save
var attachmentStream = File.OpenRead("c:/Path/To/File.pdf"); // this is the
document stream you are attaching
var client = await GetClientAsync();
var createUrl = UriFactory.CreateDocumentCollectionUri(DatabaseName,
CollectionName);
Document document = await client.CreateDocumentAsync(createUrl, myDoc);
await client.CreateAttachmentAsync(document.SelfLink, attachmentStream, new
MediaOptions()
{
ContentType = "application/pdf", // your application type
Slug = "78", // this is actually attachment ID
});
我可以直接将文档上传到Blob存储中,并将该Blob URL放入文档中。
有人可以帮助我了解内置附件功能的价值吗?这比blob和其他选项更好吗? cosmos DB在哪里保留附件?
我想了解在哪种情况下我们应该考虑使用此选项(我知道每个帐户2GB的限制)
答案 0 :(得分:0)
任何人都可以帮助我了解内置附件的价值 功能?这比blob和其他选项更好吗?
基于此official doc,您可以得到有关问题的答案。
您可以存储两种类型的数据:
1.binary blob / media
2。存储在远程媒体存储中的媒体的元数据(例如位置,作者等)
此外,附件具有垃圾处理机制,与我认为的Azure Blob存储有所不同。
Azure Cosmos DB将确保在所有 未完成的引用被删除。自动运行Azure Cosmos DB 上载新媒体并填充时生成附件 _media指向新添加的媒体。如果您选择存储 您管理的远程Blob存储中的媒体(例如, OneDrive,Azure存储,DropBox等),您仍然可以使用附件 参考媒体。在这种情况下,您将创建附件 自己并填充其_media属性。
因此,据我了解,如果您的资源数据会频繁添加或删除,我认为您可以考虑使用附件。您只需要将远程URL存储到_media属性中即可。
cosmos DB在哪里保留附件?
附件以JSON格式文档存储在collection
中,可以使用REST API或任何客户端SDK轻松创建,替换,删除,读取或枚举附件。据我所知,它到目前为止无法在门户网站上显示。
顺便说一句,Azure cosmos db通常比blob存储更昂贵。我认为成本是要考虑的重要因素。有关更多详细信息,您可以参考price doc。
希望我对此很清楚。