Size: a a a

2020 May 04

L

Leonid in MongoDB Russian
Ребята. привет. У меня проблема с запросом к MongoDB через MongodbDriver C#.
делаю запрос к реплике формата collection.Find(jsonQuery).Sort(jsonSort).Skip(0).Limit(50).ToListAsync();
при установленном соединении если выполнить подряд 2 раза этот же запрос то в первый раз время выполнения ~1 сек, во второй и последущий более 60 сек.
как видите разница огромна.
Если же перед каждым выполнением создавать заново конекшен то время выполнения стабильно ~ 1 - 2 сек.
Если не использовать .Sort то запросы всегда выполняются быстро.
Если извлекать не ToListAsync  а FirstOrDefaultAsync  то время выполнения одинаково.
При этом если выполнить два эти же запроса через connection.runCommand() при одном подключении то всегда время выполнения примерно 600мс.
серия запросов через Studio 3T  выполняется без задержек
Данная бага воспроизводится при всех доступных версиях Mongodb.driver и с конкретной базой данных MongoDB (c локальным снепшотом не-репликой все норм)
Буду рад любым советам т.к. за 4 дня уже закончились идеи.
источник

L

Leonid in MongoDB Russian
Вот такая примерно картина
источник

В

Влад Егоров... in MongoDB Russian
Привет, а каким способом можно загрузить картинку и текст в базу данных? К примеру,  для поста в блог.
источник

DL

Daniil Lebedinsky in MongoDB Russian
Влад Егоров
Привет, а каким способом можно загрузить картинку и текст в базу данных? К примеру,  для поста в блог.
GridFS/base64
источник

В

Влад Егоров... in MongoDB Russian
Daniil Lebedinsky
GridFS/base64
спасибо
источник

NS

Nikolay 🤷🏼‍♀️ Simoti... in MongoDB Russian
Влад Егоров
Привет, а каким способом можно загрузить картинку и текст в базу данных? К примеру,  для поста в блог.
это если только для себя. В общем случае картинки не должны ганяться в бд и загружать аппку и саму бд
источник

В

Влад Егоров... in MongoDB Russian
Nikolay 🤷🏼‍♀️ Simotiuk
это если только для себя. В общем случае картинки не должны ганяться в бд и загружать аппку и саму бд
Пока что для себя просто. А какая альтернатива тогда?
источник

NS

Nikolay 🤷🏼‍♀️ Simoti... in MongoDB Russian
Leonid
Ребята. привет. У меня проблема с запросом к MongoDB через MongodbDriver C#.
делаю запрос к реплике формата collection.Find(jsonQuery).Sort(jsonSort).Skip(0).Limit(50).ToListAsync();
при установленном соединении если выполнить подряд 2 раза этот же запрос то в первый раз время выполнения ~1 сек, во второй и последущий более 60 сек.
как видите разница огромна.
Если же перед каждым выполнением создавать заново конекшен то время выполнения стабильно ~ 1 - 2 сек.
Если не использовать .Sort то запросы всегда выполняются быстро.
Если извлекать не ToListAsync  а FirstOrDefaultAsync  то время выполнения одинаково.
При этом если выполнить два эти же запроса через connection.runCommand() при одном подключении то всегда время выполнения примерно 600мс.
серия запросов через Studio 3T  выполняется без задержек
Данная бага воспроизводится при всех доступных версиях Mongodb.driver и с конкретной базой данных MongoDB (c локальным снепшотом не-репликой все норм)
Буду рад любым советам т.к. за 4 дня уже закончились идеи.
если через runCommand выполняется быстро, то проблема видимо только в драйвере. Пробовали открывать ишьюс у них в репе?
источник

NS

Nikolay 🤷🏼‍♀️ Simoti... in MongoDB Russian
Влад Егоров
Пока что для себя просто. А какая альтернатива тогда?
объектные хранилища, а в бд только линки хранить
источник

DL

Daniil Lebedinsky in MongoDB Russian
Влад Егоров
Пока что для себя просто. А какая альтернатива тогда?
Для сервисов, которые не предполагают большой нагрузки нет проблемы хранить в базе указанными выше способами (GridFS предпочтительнее) или просто на том же сервере, где бд в определённой директории
Далее при росте нагрузки стоить смотреть на AWS S3 и подобные ему, а также на CDN, но общий принцип тот же
источник

L

Leonid in MongoDB Russian
Nikolay 🤷🏼‍♀️ Simotiuk
если через runCommand выполняется быстро, то проблема видимо только в драйвере. Пробовали открывать ишьюс у них в репе?
через nodejs mongodb driver тоже все хорошо. похоже что да, это монгодрайвер чудит.
попробую открыть тикет
источник

В

Влад Егоров... in MongoDB Russian
Daniil Lebedinsky
Для сервисов, которые не предполагают большой нагрузки нет проблемы хранить в базе указанными выше способами (GridFS предпочтительнее) или просто на том же сервере, где бд в определённой директории
Далее при росте нагрузки стоить смотреть на AWS S3 и подобные ему, а также на CDN, но общий принцип тот же
Спасибо за разъяснение
источник

L

Leonid in MongoDB Russian
Влад Егоров
Спасибо за разъяснение
мы хранили в AWS, а в базе хранили кроме урлы метаданные картинки (например различные разрешения картинки ) в том числе цветную маску картинки в виде градиента, которую отображали в placeholder пока картинка грузится
источник

NS

Nikolay 🤷🏼‍♀️ Simoti... in MongoDB Russian
allowDiskUse: true у всех работает? У меня достаточно простая агрегация с $limit: 10 и сортировкой по индексированному полю - ничего не помогает.
При этом есть вторая точно такая же аггрегация, но вместо true -> false и она спокойно отрабатывает даже с сортировкой не по индексированному полю.
{ $match: { firstVerifyAttempt: { $exists: true } } }

Монга 4.2.5.
Нагуглить какой-то нормальной инфы по этой теме не смог
источник

NS

Nikolay 🤷🏼‍♀️ Simoti... in MongoDB Russian
и с robo3t тоже проходит ок(( ох уж эти драйверы-монгусы
источник

KS

Kirill Saltykov in MongoDB Russian
Привет всем.
Такой вопрос: Как эффективнее всего можно реализовать обновление дата-сета раз в минуту?
Монга умеет в какой-нибудь свой Diff или может документам каждый раз приписывать поле version + текущее по счёту обновление и запрашивать по нему?
источник

VT

Vadzim Tsitarenka in MongoDB Russian
всем привет. подскажите, нормально ли если у mongo доступно большое количество коннектов (Я вижу это в графане)?
источник

DL

Daniil Lebedinsky in MongoDB Russian
Vadzim Tsitarenka
всем привет. подскажите, нормально ли если у mongo доступно большое количество коннектов (Я вижу это в графане)?
Да, это для того, чтобы обеспечивать пул соединений
источник

VT

Vadzim Tsitarenka in MongoDB Russian
Daniil Lebedinsky
Да, это для того, чтобы обеспечивать пул соединений
т.е. более ста тысяч норм? Я просто впервые столкнулся с такой цифрой
источник

DL

Daniil Lebedinsky in MongoDB Russian
Vadzim Tsitarenka
т.е. более ста тысяч норм? Я просто впервые столкнулся с такой цифрой
Нет,  в пределах нескольких сотен обычно
источник