1

我有一个名为“聊天”的文件

 "Chat": [
        {
          "User": {},
          "Message": "i have a question",
          "Time": "06:55 PM"
        },
        {
          "User": {},
          "Message": "will you be able to ",
          "Time": "06:25 PM"
        },
        {
          "User": {},
          "Message": "ok i will do that",
          "Time": "07:01 PM"
        }

每次有新的聊天消息到达时,我应该能够简单地附加到这个数组。

mongodb API 聚合管道(预览版)允许我为此使用 $push $addToSet 之类的东西

如果我使用 sql api,每次修改它并每次都创建一个新文档时,我将不得不提取整个文档。

其他注意事项: 此阵列可以快速增长。这个“聊天”文档也可以嵌套到其他文档中。

我的问题 这是否意味着 mongodb API 更适合这种情况,而 sql api 会对这种情况产生性能影响?

4

1 回答 1

0

这是否意味着 mongodb API 更适合这种情况,而 sql api 会对这种情况产生性能影响?

很难说哪个数据库是最佳选择。

是的,正如文档中所见,Cosmos Mongo API 支持$push并且$addToSet效率更高。然而,事实上,Cosmos Mongo API 仅支持 MongoDB 功能的一个子集,并将请求转换为 Cosmos sql 等价物。所以,也许 Cosmos Mongo API 有一些不同的行为和结果。但是有责任在 Cosmos Mongo API 上改进他们对 MongoDB 的仿真。

对于 Cosmos Sql Api,目前不支持部分更新,但它正在上路。你可以在这里提交反馈。目前,您需要更新整个文档。当然,您可以使用存储过程来完成这项工作以释放客户端的压力。

接下来我想说的,也是最重要的,是@David 提到的限制。文档大小在 sql api 中限制为 2MB,在 mongo api 中限制为 4MB:cosmosdb 项的大小限制是多少?. 由于您的聊天数据在增长,您需要考虑将它们拆分。然后给文档一个分区键,例如"type": "chatdata"对它们进行分类。

于 2018-10-19T06:12:47.790 回答