yopp
не знаешь че за херня
на shared тарифах: бесплатном (M0) и M2/M5 $function запрещён 🙁
yopp
https://www.mongodb.com/docs/atlas/reference/free-shared-limitations/#operational-limits JavaScript: M0 free clusters and M2/M5 shared clusters don't support server-side JavaScript. For example, $where and map-reduce are unsupported.
Andrey K.
Друзья, вопрос такой. Вижу кашу (на мой взгляд) в правах на разных инстансах на папке journal версия 3.4 drwxrwxr-x реплика drwxr-xr-x праймари версия 3.6 drwxrwxr-x реплика drwx------ праймари Можно ли зарезать права группы, например, или я могу помешать каким-то внутренним механизмам работы? или умный движок сам тут понимает , что ему лучше и мне напишет в лог, если я чересчур ограничу права. Версии , конечно, древние, но надо с ними повозиться
Эрл
зайбали уже в каждом чате... админы, гоните его ссаными тряпками пж
Qwerty
зайбали уже в каждом чате... админы, гоните его ссаными тряпками пж
Новые придут. Надо бота с капчей для подтверждения
Эрл
Новые придут. Надо бота с капчей для подтверждения
надо бота который просто удаляет сообщения если кто-то додумался контактные данные отправлять тут
Эрл
могу написать такого
Эрл
как вариант
Светлячок
Подскажите куда смотреть в документации что бы я смог создать юзера который сможет коннектится к любой базе данных и не было такого
Светлячок
Создаю юзера но могу подключится только к той базе в которой его создал
yopp
я его на прошлой неделе выкинул: платно — дорого, а CAS бесполезно. капча бесполезна не работает когда юзерботов добавляют руками плюс ложно-положительные срабатывания всех этих ботов мешают живым людям. встроенный «агрессивный антиспам» очень агрессивный в этом плане, тоже пришлось отключить спустя почти 10 лете самый надежный способ всё ещё выпиливать руками по факту
yopp
Создаю юзера но могу подключится только к той базе в которой его создал
рекомендую не пытаться создавать пользователей в разных базах, мульти-бд авторизация очень неинтуитивно работает создавайте и аутентифицируйтесь через admin
yopp
(права работают отдельно от аутентификации)
Светлячок
yopp
ох, да, вам нужно явно указать authDb=admin в uri, иначе клиент будет аутентифицироваться используя db_name как источник списка пользователей и прав
Светлячок
Я то думаю почему я могу управлять базой когда подключаюсь без явного указания базы данных в url но не могу подключится к ней когда добавляю ее в url
yopp
Я то думаю почему я могу управлять базой когда подключаюсь без явного указания базы данных в url но не могу подключится к ней когда добавляю ее в url
увы, да. аутентификация и RBAC в монге устроены по какой-то странной логике. их явно делали для multi-tenant окружений, но получилось очень плохо, но с тех пор так и повелось ¯\_(ツ)_/¯ там ещё с шардами весело и усложняется в два раза: отдельно shard local аутентификация, когда напрямую к mongod подключае отдельно cluster, когда через mongos
Kirilll
А изменения/удаления по колл частые?
Была такая же проблема на большой колл в монге 4.4.9 Шардированная По колл часто проходили инсерты и делиты и при запросе документа драйвер питона иногда говорил, что документа нет по указанному фильтру, хотя физически документ был и никуда не девался. Монгс при этом документ всегда отдавал Запрос был по индексируемому полю, из этого было предположение, что монга не успевает нормально перестроить индекс По итогу подставили костыль с вызовом документа через монго Шелл из кода и проблема решилась
Kirilll
Вообще часто натыкались на то, что монго Шелл часто под капотом обрабатывает много косяков Но про индекс тут вряд ли так можно сказать, тут скорее всего ты прав
Kirilll
Поэтому тестим 6 монгу для перехода На 7 не решились, изменений в коде много придется сделать
Nick
Поэтому тестим 6 монгу для перехода На 7 не решились, изменений в коде много придется сделать
чтото интересное, нарушение обратной совместимости между 6 и 7 не замечено и что на 6 работает и на 7 работать будет. В чем там затык?
Kirilll
чтото интересное, нарушение обратной совместимости между 6 и 7 не замечено и что на 6 работает и на 7 работать будет. В чем там затык?
Сейчас точно не скажу Вроде там были деприкейтед методы, которые нельзя было использовать
Kirilll
Для уверенности взяли 6 Потому что база огромная Ее в целом перевозить страшно)
Andrey
4Тб
ну много, но не огромная, в 1 человека, с переписыванием кода сервисов + изменения структуры документов(export, update docs(files) -> import в новый кластер) = на миграцию такой же(5.5 TB - а raw почти 10TB) ушел человеко-месяц.
SoulSilence
ну много, но не огромная, в 1 человека, с переписыванием кода сервисов + изменения структуры документов(export, update docs(files) -> import в новый кластер) = на миграцию такой же(5.5 TB - а raw почти 10TB) ушел человеко-месяц.
Ну тут все относительно. У нас например легаси кодовая база огромная, перевозить страшно так как мягко скажем нет уверенности что будет протестировано все на предмет работоспособности
SoulSilence
Хотя баг с которым мы боремся безусловно эпичный
Andrey
Ну тут все относительно. У нас например легаси кодовая база огромная, перевозить страшно так как мягко скажем нет уверенности что будет протестировано все на предмет работоспособности
я экспортировал из "старой" условные 2 млрд. записей, импортировал в "новую"версию, и смотрел на ней как работает проект...
Andrey
самое долгое: экспорт и обновление и импорт, на это ушло дней 10, даже больше
Andrey
импортировал каким то готовым инструментом или самописным?
mongoexport, потом свой код для обновление записей в файлах, потом mongoimport
Kirilll
понял это надо местом запастись под экспорт)
Andrey
понял это надо местом запастись под экспорт)
да...это да...для этого в облаке Яндекса брали нереплицируемый "ssd" в почти 20tb.
Kirilll
мы будем пробовать поднимать версию с 4.4 до 6 на тестовых стендах и смотреть как работает
Andrey
мы будем пробовать поднимать версию с 4.4 до 6 на тестовых стендах и смотреть как работает
был 4.4.19(+-) но перерос по объем и здравому смыслу, поэтому ушел в "шардирование" - 7 версия, но это прям полный переезд, с изменением в сервисе, структуры и загрузчиках в базу, иногда надо прям переезжать, иначе потом совсем боль.
Kirilll
да мы тоже боролись с чанками около года, победили но решили все таки начать думать в сторону новой версии там к чанкам подход другой уже
Andrey
да мы тоже боролись с чанками около года, победили но решили все таки начать думать в сторону новой версии там к чанкам подход другой уже
были мысли в сторону scylladb(раз уже всё меняем) - но неделя экспериментов, и добиться устойчивой скорость вставки на драйверах python3 не удалось, на go писать уже время кончилось, поэтому пока mongodb
Kirilll
но ньюансов с ней очень много стоит учитывать, что добавить новую ноду в кластер та еще проблема, особенно если нет возможности увести ее в дооолгий ДТ, ну и с большим объемом данных это задача на очень долгое время
Andrey
кст, мы используем сциллу как холодное хранилище если правильно приготовить, то она в целом довольно быстрая и устойчивая
я понимаю, я лет 7 назад с cassandra сталкивался в течении долгого времени, и scylladb должна быть еще лучше, но не пошло сходу.
Kirilll
чтобы ты понимал вместо расширения и добавление ноды в сциллу, мы поднимаем отдельный кластер сциллы рядом)
yopp
понял это надо местом запастись под экспорт)
Для обновления до новых версий не обязательно делать импорт-экспорт. Просто обновляйтесь от одной мажорной версии, до следующей: 4.2 → 4.4 → 5.0 → 6.0 → 7.0 по стандартной инструкции https://www.mongodb.com/docs/manual/release-notes/4.4-upgrade-replica-set/
Kirilll
Это понятно Импорт делали в бд выше версией для теста работоспособности
Denis
добрый день! Как сделать в mongoose, чтобы subdocument был опциональным? например, чтобы в parentInfo необязательным был childInfo const childInfo = new Schema(…) const parentInfo = new Schema( { body: { type: String, required: true, }, child: childInfo, }, );
Юлиан🦉
Привет, а есть у кого то кейсы интеграции с какими-нибудь opensource search engine(в идеале opensearch)?
Denis
required: false
Но куда его добавлять тогда? В примере в child сразу подставляется схема. Или схему можно в type прописать?
Kirilll
Мы стримим в эластик через monstache
Интересно Можешь подсказать где почитать про moonstache Сходу нагуглил только видео от индуса)
Kirilll
Ахах Да я бы почитал, вдруг нам подойдет
Kirilll
А то в свое время с чендж стримами тоже отхлебывали
SoulSilence
Я не настраивал но могу через неделю глянуть как у нас это работает
SoulSilence
Но в целом работает при том что коллекция у нас большая, жирная, апдейтов много и тд. Из единственного прикола у нас есть какой-то скрипт который иногда фиксит расхождения которые появляются между коллекций и ее отображение в эластик но эта штуку редко прогоняют, обычно после инцидентов каких-то приходится
Kirilll
В общих чертах бы Как я понял монга - на ее поток подсаживаем moonstache - а поток с moonstache льется в эластик Верно? Никаких прослоек из кафок?
Kirilll
Поищу информацию по этому Спасибо!
Юлиан🦉
Да
А есть какой-то способ индексировать только определённые поля?
SoulSilence
А есть какой-то способ индексировать только определённые поля?
У нас по-моему где-то есть скрипт который берет весь документ, из него делает другой объект только с нужными полями и потом это уже индексируется монсташем
SoulSilence
Но мне надо посмотреть как это реализовано, не сегодня уже
Yura
Коллеги, всем привет. Есть следующий кейс: Имеется 2 сервера с абсолютно одинаковой конфигурацией, но на первом стоит монга 5.0.24, на втором 6.0.13. Есть скрипт, который каждую минуту ходит в базу и делает несколько операций записи/чтения через оболочку типа "mongo —eval...". Так вот, на версии 5 этот скрипт летает, на версии 6 отрабатывает медленно и вызывает бешеную нагрузку на цпу в 70-80%, при том что скрипты отличаются только тем что на 5 версии вызывается "mongo", а на 6 "mongosh". Провел эксперимент и на 5 версии запустил этот же скрипт с оболочкой mongosh, результат - нагрузка цпу в потолок. Кто-нибудь уже с этим сталкивался?
Yura
Нашел вот такое: https://jira.mongodb.org/browse/MONGOSH-1240
Yura
Произвел замеры у себя: 5.0.24 mongo ... --eval 'db.adminCommand( { replSetGetStatus : 1 } ).myState' real 0m0.088s user 0m0.061s sys 0m0.020s 6.0.13 mongosh ... --eval 'db.adminCommand( { replSetGetStatus : 1 } ).myState' real 0m0.940s user 0m1.066s sys 0m0.087s мда, 6 сотых против целой секунды.. Есть обходные пути? Можно ли использовать старую оболочку на 6 и 7 версиях ?
Yura
Эм, зачем вы меряете скорость запуска утилиты для редких ручных операций и и вообще работы в интерактивном режиме?
Эти команды я привел для примера, в скрипте используются команды на запись и чтение коллекции
Nick
Эти команды я привел для примера, в скрипте используются команды на запись и чтение коллекции
вопрос по сути тот же, но префразирую, зачем используется evalв таком случае а не запуск скрипта?
Yura
вопрос по сути тот же, но префразирую, зачем используется evalв таком случае а не запуск скрипта?
Потому что скрипт административный и выполняет ещё и системные проверки, + запусков оболочки достаточно много и писать под каждую команду mongosh .js файл такое себе, проще запускать всё одним баш скриптом
Владимир Т
здравствуйте, есть такая ошибка при создании дампа