cosmosdb sql api vs mongodb api which one to use for my scenario.

梦想与她 提交于 2019-12-13 01:18:49

问题


I have a document called "chat"

 "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"
        }

every time a new chat message arrives i should be able to simple append to this array.

mongodb API aggregation pipeline (preview) allows me to use things like $push $addToSet for that

if i use sql api i will have to pull the entire document every time modify it and create a new document every time.

Other Considerations : This array can grow rapidly. This "chat" document might also be nested into other document as well.

My Question Does this means that mongodb API is better suited for this and sql api will have a performance hit for this scenario ?


回答1:


Does this means that mongodb API is better suited for this and sql api will have a performance hit for this scenario ?

It's hard to say which database is the best choice.

Yes,as found in the doc, Cosmos Mongo API supports $push and $addToSet which is more efficient. However,in fact, Cosmos Mongo API just supports a subset of the MongoDB features and translates requests into the Cosmos sql equivalent. So, maybe Cosmos Mongo API has some different behaviours and results. But the onus is on Cosmos Mongo API to improve their emulation of MongoDB.

When it comes to Cosmos Sql Api, partial update is not supported so far but it is hitting the road. You could commit feedback here. Currently, you need to update the entire document. Surely, you could use stored procedure to do this job to release pressure of your client side.

The next thing I want to say, which is the most important, is the limitation mentioned by @David. The document size has 2MB limitation in sql api and 4MB in mongo api:What is the size limit of a cosmosdb item?. Since your chat data is growing, you need to consider to split them. Then give the documents a partition key such as "type": "chatdata" to classify them.



来源:https://stackoverflow.com/questions/52882764/cosmosdb-sql-api-vs-mongodb-api-which-one-to-use-for-my-scenario

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!