2017-10-15 165 views
1

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

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

我遇到的一种方法是独立保存文档,并编写存储过程来识别并删除所有写入失败的情况。 我想知道这是否适合我们的场景。

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

+0

我会联系MS支持。据了解,它们可以根据需要禁用某些情况下的大小限制。 – wasabi

回答

1

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

+0

我们的要求是能够查询/解析所有的消息数据。因此,存储在一个blob看起来不是最有效的方式。文档可以存储在集合本身中吗? –

+0

我还会补充说,在Cosmos DB中存储较大的文档会对性能产生巨大的影响。所以,如果可能的话,Aravind的建议是一个很好的选择。看看插入或阅读较大文档时RU费用会发生什么 - 这是残酷的。 –