cosmosdb sql api vs mongodb api用于我的方案。

时间:2018-10-18 21:19:57

标签: azure-cosmosdb azure-cosmosdb-sqlapi azure-cosmosdb-mongoapi

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

 "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在这种情况下会带来性能下降?

1 个答案:

答案 0 :(得分:0)

  

这是否意味着mongodb API更适合于此和sql API   在这种情况下会对性能产生影响吗?

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

是的,如doc中所述,Cosmos Mongo API支持$push$addToSet,效率更高。但是,实际上,Cosmos Mongo API仅支持MongoDB功能的子集,并将请求转换为Cosmos sql等效项。因此,也许Cosmos Mongo API具有一些不同的行为和结果。但是Cosmos Mongo API的责任在于改善对MongoDB的仿真。

当涉及Cosmos Sql Api时,到目前为止尚不支持部分更新,但仍在进行中。您可以提交反馈here。当前,您需要更新整个文档。当然,您可以使用stored procedure来完成此工作,以减轻客户端的压力。

我接下来要说的,最重要的是@David提到的限制。文件大小在sql api中限制为2MB,在mongo api:What is the size limit of a cosmosdb item?中限制为4MB。由于您的聊天数据在增长,因此您需要考虑拆分它们。然后给文档一个分区键,例如"type": "chatdata"对其进行分类。

希望它对您有帮助。