Yura
Второй момент: если активность запросов которые используют новые данные высокая, то эта выделенная память может заполниться очень быстро, почти мгновенно, и далее будете наблюдать активное освобождение/заполнение этой памяти. Третий момент: если вы запустили фулскан коллекции, допустим на несколько сотен тысяч или млн документов (если без индекса то совсем плохо), то монга может потребить всю память (т.к. результат запроса не вместился в объем ram) - и тогда есть риск падения сервиса и перезагрузки сервера из-за ООМ. Ну и после перезагрузки сервиса монго вся память освобождается полностью.
Vadzim
подскажите ещё пожалуйста по поводу закрытия соединения там выше писали, что нужно закрывать соединение, так ли? или в новых версиях не нужно это делать?
Nick
подскажите ещё пожалуйста по поводу закрытия соединения там выше писали, что нужно закрывать соединение, так ли? или в новых версиях не нужно это делать?
Нужно настраивать мониторинг. Если количество коннектов будет проблемой это будет видно из него. И не надо заниматься оптимизациями, если нет никаких проблем, которые этими оптимизациями надо решить. А без пром использования с метриками и соответствующими тербованиями таким заниматься только время тратить
Nick
может подскажите как настроить сониторинг соединениев, как раз пока предположение что узкое горлышко в моем проекте оно
"соединениев" чего с чем? а узкое место определили профилированием или на глазок?
izy
"соединениев" чего с чем? а узкое место определили профилированием или на глазок?
Пул соединений с сервером монго да на глазок, так как мониторинг пока не настроен про него и спрашиваю по сути
Vadzim
Если монга в контейнере, то просто лимит задайте какой вам комфортно и забудьте пока не начнет падать
то что я лимит задам это проблему не решит (хотя как я понял проблемы нет), как я понимаю когда лимит наступит, то контейнер либо рестартанётся либо база просто тупить будет, поправьте пожалуйста если я неправильно понимаю
Nick
Пул соединений с сервером монго да на глазок, так как мониторинг пока не настроен про него и спрашиваю по сути
для мониторинга пула надо чтото делать в софте, а там уже что используете, читайте доки. По монге - ставите прометей, графану, экспортер метрик, настариваете сбор, доавбляете дашборд и в путь. Старт https://github.com/percona/mongodb_exporter и дальше по докам
Vadzim
Пул соединений с сервером монго да на глазок, так как мониторинг пока не настроен про него и спрашиваю по сути
я через docker stats смотрю, мне вполне хватает если монго не в докере запущена пробуйте через htop мониторить, для начала может и ок будет
Yura
Подскажите плз, составной индекс {a: 1, b:1, c:1} будет корректно работать с запросом, с обратным порядком полей: {c, b, a}?
TheDiVa
Не подскажите, есть ли возможность работать с mongo db как с реляционной базой?
Yura
Подскажите плз, составной индекс {a: 1, b:1, c:1} будет корректно работать с запросом, с обратным порядком полей: {c, b, a}?
В доке по составному индексу написано что порядок префиксов и полей важен, а в доке по правилу ESR написано что нет
Yura
В доке по составному индексу написано что порядок префиксов и полей важен, а в доке по правилу ESR написано что нет
"An index may have multiple keys for queries with exact matches. The index keys for equality matches can appear in any order."
yopp
https://github.com/mongodb/mongo – а почему тут нет 8.0.6 и вообще коммитов последние 2 месяца?
Да, при этом это уже не первый такой случай, но не помню чтоб уже почти 3 релиза не публиковали исходники. Завёл тикет в jira https://jira.mongodb.org/browse/SERVER-103498 Думаю будет полезно, если вы там тоже отметитесь и коротко напишете почему вам нужны исходники
yopp
Возможно кроме CVE-2024-10921 нашлось что-то ещё и они ждут когда достаточное количество инсталляций обновится. Но это тоже так себе подход
Alexey
И полуответ на https://news.ycombinator.com/item?id=43583349
Yura
Добрый день, подскажите пожалуйста, почему может происходить дублирование сканирования ключей индекса? Ситуация следующая: В документах коллекции есть поле "compositeId": "49138781-922-9-1003641012-9" Эти значения уникальны и на это поле есть соответствующий уникальный индекс: { "v" : 2, "key" : { "compositeId" : 1 }, "name" : "compositeId_1", "unique" : true } При выполнении запроса: "compositeId": { "$in": [ "49138781-922-9-1003641012-9", "49137125-922-9-1003641012-9", "49136159-922-9-1003641012-9" ] } В плане выполнения вижу следующее: "indexName": "compositeId_1", "isUnique": true, "indexBounds": { "compositeId": [ "[\"49136159-922-9-1003641012-9\", \"49136159-922-9-1003641012-9\"]", "[\"49137125-922-9-1003641012-9\", \"49137125-922-9-1003641012-9\"]", "[\"49138781-922-9-1003641012-9\", \"49138781-922-9-1003641012-9\"]" ] } "totalKeysExamined": 6, "totalDocsExamined": 3, "nReturned": 3
Yura
Такое же поведение и с $in, и с $or. И значит ли это что монга тратит в 2 раза больше времени на этот скан?
Ильдар
Кто нибудь использует pmm для мониторинга запросов в psmdb? Включаю профилирование, через хелм. Но на дашборде qan не отображаются запросы... хотя по дашбордам вижу запросы.
Александр
Привет народ, подскажите как через mongosh создать пользователя с паролем для определённой бд и как запихнуть это в докерфайл???
Нуриддин
Привет народ, подскажите как через mongosh создать пользователя с паролем для определённой бд и как запихнуть это в докерфайл???
На первое ответ да, на второе слой с задачей типо mongosh << 'command'
Нуриддин
Остальное лучше самому разбираться там много вариантов как и что сделать
Нуриддин
И все они ситуативные
Ильдар
Ребята подскажите как зацепить монго_экспортер к кластеру? Делаю как тут указано, + в самой документации также написано, но не хочет работать... https://github.com/prometheus-community/helm-charts/blob/main/charts/prometheus-mongodb-exporter/values.yaml#L32
Hunter
Подскажите, как можно сделать поиск посимвольно в монге что б в результате были только самые подходящие результаты, а не просто то что совпало в regex. Возможно есть индексы или библиотеки?
Vladimir
Подскажите, как можно сделать поиск посимвольно в монге что б в результате были только самые подходящие результаты, а не просто то что совпало в regex. Возможно есть индексы или библиотеки?
https://stackoverflow.com/questions/38421664/fuzzy-searching-with-mongodb Ну и в целом это называется нечеткий поиск в тексте. Да, в oracle есть функции которые высчитывают похожесть. Здесь в базовой версии нет, каждый извращается как может Покопайте в эту сторону
Hunter
Понял, спасибо за ответы)
El
Приветствую Для кода с Монго хватит Intel i3-12100?
Constantine
да
El
В целом для кода тоже? Node.js, React.js, Mongo или Postgre.
Nick
В целом для кода тоже? Node.js, React.js, Mongo или Postgre.
если хотите 1кк рпс то конечно не хватит) а для простого петпроекта вполне. Основное ограничение будет память скорее всего и ее менеджмент. Проще всего все упаковать в докер композ и ограничить базам доступную память
Nick
Обычный проект средней компании, пишу код, сервера для БД там не будет.
для старта хватит, а потом по метрикам уже смотреть упираетесь ли в прцо или нет. Настройте мониторинг для сбора информации по потреблению ресурсов системы и периодически првоеряйте. Наверняка когда проект разовьется уже и деньги появятся на доп ресурсы
El
Спасибо.
🅰️nimeCoder
Есть ли какие то человеческие веб юай для монги кроме dbgate? Сколько лет наблюдаю - клиентов по пальцам пересчитать, а веб то и вообще особо нету Таргет на поддержку мобилок ещё хорошо бы dbgate блочит с мобилки типа нет саппорта Видел можно ещё компас пакет пропатчить и поднять, почему этого нет официально - тож удивляет
Alexander
а чем стэнделон ЮАй не устраивают?
🅰️nimeCoder
в контексте вопроса видимо ssh туннель не вариант?
хотелось бы иметь веб доступ не прибегая к mongosh по ssh, и rustdesk / anydesk для compass. Особенно с мобильного телефона
🅰️nimeCoder
Напрямую в сеть не факт что это будет шейрится, опять же или по ssh тунелю или vpn вероятнее всего
El
Была немецкая фирма с десктоп клиентом, на иконке платипус был, studio 3t, потом они его обновили, проверьте.
Krapka
хотелось бы иметь веб доступ не прибегая к mongosh по ssh, и rustdesk / anydesk для compass. Особенно с мобильного телефона
Что-то типо subabase (по интерфейсу/функционалу) только с возможностью подключения к собственной?
🅰️nimeCoder
Что-то типо subabase (по интерфейсу/функционалу) только с возможностью подключения к собственной?
Да хотяб как dbgate / compass толко dbgate с мобилами не дружит, а compass по факту desktop only
🅰️nimeCoder
MongoExpress не подойдет?
Видал, в целом наверное может быть, правда выглядит с стороны так себе
Alexander
а какой смысл с базой вообще с мобилки работать? этож не удобно
🅰️nimeCoder
🅰️nimeCoder
Ну это скорее не "работать", а чета там срочно перехерачить
Nick
Ну под реляционки достаточно вроде, чем монга хуже
Во первых в базу лазить руками это некошерно. Во вторых с мобилки = в попыхах, можно легко налажать. Так что оставьте эти затеи и меняйте свое отношение к работе с бд
🅰️nimeCoder
Хотя я в целом бы и работать мог бы еслиб достаточно нормально было, уровня компаса хватало бы в целом, если что-то уже больше то опять же шелл или в нем или по ssh
🅰️nimeCoder
Чаще в разы проще залезть в базу, чем написать то что будет в неё лазать
Nick
Ну, а кто туда хочет лезть?)
Так не лезте) зачем в бд чтото править не скриптами через автоматизацию?
🅰️nimeCoder
Когда нужно что-то отмигрировать то да, проще скрипт написать
🅰️nimeCoder
А если по мелочи (даже не оченб точечно) проще в базу залезть, особенно ради какого то пайплайн билдера
Nick
А если по мелочи (даже не оченб точечно) проще в базу залезть, особенно ради какого то пайплайн билдера
От этого все ушли уже с десяток лет назад. Руками в базу ходить чтото править это себя не уважать. Чините процессы на проекте чтобы такого не было
🅰️nimeCoder
Ладно :(
🅰️nimeCoder
🤔
Нуриддин
Ребята, последние чем занимается айтишник в карьере это с телефона чето там делает в базе. Век технологий, все таки)
Сергей
Добрый день! Ребят, подскажите пожалуйста, 3 сервера в кластере должны иметь одинаковые параметры по памяти и cpu? Или допустимо, к примеру, что на одном сервере один размер озу, на другом другой?
yopp
Добрый день! Ребят, подскажите пожалуйста, 3 сервера в кластере должны иметь одинаковые параметры по памяти и cpu? Или допустимо, к примеру, что на одном сервере один размер озу, на другом другой?
Здравствуйте! Количество ресурсов может быть любым, со стороны монги это никак не форсируется. Вопрос только в том, сможет ли самая слабая нода потянуть нагрузку праймари, в случае если её выберут или нужно будет на неё переключить нагрузку (например для обслуживания других нод) По этому с точки зрения отказоустойчивости и операционной простоты, надежнее когда все избираемые ноды одинаковой конфигурации
Andrey
Приветствую, есть дев. кластер (1 mongos, 3 cfg nodes, 2 data node - каждая отдельная реплика(шард)). Решили двигаться дальше, и уже использовать как prod. Соответственно, необходимо каждому шарду добавить хотя бы по 1 ноде, 3-у будут как арбитры. И вот вопрос такой. Что лучше: а). "чистые" сервера добавить в каждую реплику в шард б) можем остановать кластер, скопировать каждый шард его базу данных на новые сервера(каждый на свой), поднять новые сервера stanalone, удалить информацию о кластере, потом рестартануть уже и включить в реплики к старым шардам. И посмотреть. Причина пунка б) - не хочется ждать времени на репликацию, на каждом шарде сейчас с индексами и прочим по 4TB.
yopp
Приветствую, есть дев. кластер (1 mongos, 3 cfg nodes, 2 data node - каждая отдельная реплика(шард)). Решили двигаться дальше, и уже использовать как prod. Соответственно, необходимо каждому шарду добавить хотя бы по 1 ноде, 3-у будут как арбитры. И вот вопрос такой. Что лучше: а). "чистые" сервера добавить в каждую реплику в шард б) можем остановать кластер, скопировать каждый шард его базу данных на новые сервера(каждый на свой), поднять новые сервера stanalone, удалить информацию о кластере, потом рестартануть уже и включить в реплики к старым шардам. И посмотреть. Причина пунка б) - не хочется ждать времени на репликацию, на каждом шарде сейчас с индексами и прочим по 4TB.
Здравствуйте! Если можете остановить и скопировать, это самый быстрый вариант Останавливаете ноду, делаете копию, включая конфиг. Запускаете обе ноды и на доноре через rs.add() добавляете новую: https://www.mongodb.com/docs/manual/tutorial/add-member-to-shard/
Yura
А, т.е. еще одну под данные добавить и одну под арбитр… если прод то монгос вам нужен точно не один, а еще если нод в шарде с арбитром будет 3, то посмотрите в доке как работает writeConcern majority в связке с арбитром, можете наткнуться на неприятную ситуацию. Если есть возможность, лучше чтобы все ноды были с данными