cosmosdb sql api vs mongodb api, который использовать для моего сценария.

У меня есть документ под названием "чат"

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

каждый раз, когда приходит новое сообщение чата, я могу просто добавить его в этот массив.

Конвейер агрегации API mongodb (предварительная версия) позволяет мне использовать для этого такие вещи, как $ push $ addToSet

если я использую sql api, мне придется каждый раз вытаскивать весь документ, изменяя его, и каждый раз создавать новый документ.

Другие соображения. Этот массив может быстро расти. Этот «чат» документ также может быть вложен в другой документ.

Мой вопрос Означает ли это, что mongodb API лучше подходит для этого и sql api будет иметь снижение производительности в этом сценарии?


person Raas Masood    schedule 18.10.2018    source источник
comment
Какой API вы используете ... это довольно широкий вопрос, на который нет конкретного ответа. Однако каким бы путем вы ни пошли, у вас возникнут проблемы, как только этот массив достигнет максимального размера документа (в настоящее время 2 МБ). Это неограниченный массив, и как только вы не сможете добавить в массив, ваша модель (и код) будут повреждены.   -  person David Makogon    schedule 19.10.2018
comment
Кроме того, вам нужно будет провести сравнительный анализ как API, так и реализаций, чтобы определить, какой метод обновлений лучше всего подходит для вас. Помните, что API MongoDB по-прежнему использует собственный движок Cosmos DB, поэтому, возможно, они имеют схожие характеристики производительности.   -  person David Makogon    schedule 19.10.2018


Ответы (1)


Означает ли это, что mongodb API лучше подходит для этого, и sql api будет иметь снижение производительности для этого сценария?

Трудно сказать, какая база данных лучший выбор.

Да, как указано в doc Cosmos Mongo API поддерживает $push и $addToSet, что более эффективно. Однако на самом деле Cosmos Mongo API просто поддерживает подмножество функций MongoDB и переводит запросы в эквивалент Cosmos sql. Итак, возможно, API Cosmos Mongo имеет другое поведение и результаты. Но ответственность за улучшение эмуляции MongoDB лежит на API Cosmos Mongo.

Что касается Cosmos Sql Api, частичное обновление пока не поддерживается, но оно уже запущено. Вы можете оставить отзыв здесь. В настоящее время вам необходимо обновить весь документ. Конечно, вы можете использовать сохраненный процедуру, чтобы снять давление со стороны клиента.

Следующее, что я хочу сказать, что является наиболее важным, - это ограничение, упомянутое @David. Размер документа ограничен 2 МБ в sql api и 4 МБ в mongo api: Каков максимальный размер элемента cosmosdb?. Поскольку ваши данные в чате растут, вам нужно подумать о том, чтобы разделить их. Затем присвойте документам ключ раздела, например "type": "chatdata", чтобы классифицировать их.

person Jay Gong    schedule 19.10.2018
comment
Спасибо, очень хорошо объяснил - person Raas Masood; 19.10.2018