【问题标题】:How to insert a message of 20 mb into Azure Cosmos DB - Document DB API如何将 20 mb 的消息插入 Azure Cosmos DB - Document DB API
【发布时间】:2017-10-15 18:59:50
【问题描述】:

我们要求我们的应用程序在事务中处理最多 20 MB 的传入消息请求。此消息结构良好,具有嵌套对象和数组。我们计划使用 Azure Cosmos DB(文档 DB API)作为我们的数据库。由于 Document DB 的最大文档大小限制为 2 MB,因此我们将消息数据建模为存储在多个文档中。我们尝试使用 Javascript 存储过程将所有这些文档插入事务中,但 SP 对请求大小有大小限制 (2 MB)。

任何人都可以帮助我们如何保存与事务中的 20 MB 消息相关的所有文档(全部保存或不保存)?

我遇到的一种方法是独立保存文档,并编写一个存储过程来识别和删除它们,以防其中一个写入失败。 我想知道这是否是我们方案的最佳可用方法。

编辑:我正在考虑的另一种可能的方法 - 将 20 MB 消息上传到 blob 存储中,然后从 SP 内部访问它以进行拆分和插入。但我找不到从 javascript SP 访问 blob 的方法(SP 中不允许使用 XMLHttpRequest)

【问题讨论】:

  • 我会联系 MS 支持。众所周知,它们会在某些情况下禁用按需大小限制

标签: c# .net azure azure-cosmosdb


【解决方案1】:

您是否研究过 Azure Cosmos DB 的 attachments 功能?这将是一种比实现您自己的事务语义更简单的方法。您应该只将查询所需的属性存储在文档中,然后将 20MB 的完整文档作为附件存储。

【讨论】:

  • 对我们的要求是能够查询/解析所有的消息数据。所以存储在 blob 中看起来并不是最有效的方式。有没有办法可以将文档存储在集合本身中?
  • 我还要补充一点,在 Cosmos DB 中存储较大的文档会对性能产生重大影响。因此,如果可能的话,Aravind 的建议是一个不错的选择。看看在插入或阅读较大的文档时,您的 RU 成本会发生什么变化——这太残酷了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-21
  • 1970-01-01
  • 1970-01-01
  • 2018-03-02
  • 2020-06-03
  • 2021-12-16
相关资源
最近更新 更多