hoxnox
Это будут последние строчки в файле. У вас же не работает процесс mongodb, следовательно лог не пополняется.
Не. После этого я живу с dump/restore - оооочень долго восстанавливаются индексы. 700Гб данных примерно за 6 часов, а потом еще сутки могут индексы строиться.
Богдан
Всем привет! Подскажите, какую структуру ФИО сделать, когда у меня может быть несколько вариантов фамилии, имён и отчеств. Сейчас так: [{ фам.: "Иванов", имя: ["Василий", "Васелий"] }, { фам.: ["Петров", "Питров"], имя.: ["Георгий", "Жора"] }] В принципе сама структура меня устраивает, но проблема возникает, когда я делаю составные индексы. Из-за массивов они не делаются
Богдан
А в чём ваша цель?
Проводить поиск по ФИО или просто по фамилии \ имени \ отчеству
Нуриддин
Эммм, у вас слишком много перечеслений может быть в одну коллекцию. Потому что у вас очень много возможных изменений за время может произойти. Может обратить внимание на способ поиска чем на изменение базы? Там n-грамный анализ, метод расстояние Левенштейна
Нуриддин
Не искать по возможным вариантам а самые ближайшие возможные по ключу
Нуриддин
Так и запросы будут отрабатывать значительно быстрее, и точность увеличив - ресурсы сэкономите.
Богдан
Не искать по возможным вариантам а самые ближайшие возможные по ключу
А что за метод такой? Как называется, почитаю о нём, чтобы понять как сделать
Нуриддин
Тут 2 варианта, но в зависимости от задач их число растёт. Принцип как в подборе подходящего слова при ошибке(Т9)
Нуриддин
Тут 2 варианта, но в зависимости от задач их число растёт. Принцип как в подборе подходящего слова при ошибке(Т9)
По последнему предложению сможете найти минимум 4 (не считая ранжирования)
Богдан
По последнему предложению сможете найти минимум 4 (не считая ранжирования)
Посмотрел про эти методы. Пропишу, что понял, вдруг не понял) 1. структуру базы не меняем 2. в коде используем метод n-грамный анализ или расстояние Левенштейна 3. поиск будет возвращать похожие результаты (что для меня очень хорошо) 4. Такой подход должен ускорить запросы. Сейчас у меня в базе 24 млн документов.
Y
Добрый день, подскажите https://www.geeksforgeeks.org/how-to-perform-query-optimization-in-mongodb/#:~:text=Use%20%24in%20and%20%24nin%20Carefully%3A%20These%20operators%20can%20be%20slow%20for%20large%20arrays.%20Instead%2C%20use%20multiple%20%24or%20conditions%20if%20possible Вот тут написано, что следует избегать оператора $in если в массиве много элементов, и заменить его на $or. А о каком колличестве идет речь? Например 100 это много или мало? Или как в моем случае 600 - это еще сносно или стоит переписывать?
Y
И насколько вообще это нужно, может быть рекомендация уже устарела и под капотом где-нибудь запрос сам перестраивается...
Y
Странная рекомендация, нигде подобного не видел. стоит вооружиться эксплейном и потестить
Тоже думал об этом, но мало ли может быть уже кто-то сталкивался
Y
И не стоит наступать на те же грабли
Alexander
Может быть стоит проверить? Все таки если план выполнения запроса будет лучше, то и железу будет легче
Возможно. Делюсь нашим кейсом. Я точно не готов сейчас пробовать это перепроверять, потому что конкретно в этом месте нас всё устраивает и есть более важные задачи.
Alexander
Просто может быть вам повезло и у вас мощное железо:)
Возможно. Это всё, что я могу тут сказать. Мы просто не задумывались, что тут может быть какая-то проблема.
Alexander
Ну разве что кроме того, чтобы не влезть в размер запроса. Такое бывало, но это уже совсем другое.
Y
Возможно. Это всё, что я могу тут сказать. Мы просто не задумывались, что тут может быть какая-то проблема.
У нас, кстати надо сказать, тоже тут проблем нет. Просто сама статья, в принципе, из авторитетного источника заставила задуматься...
Alexander
У нас, кстати надо сказать, тоже тут проблем нет. Просто сама статья, в принципе, из авторитетного источника заставила задуматься...
Как обычно: если у вас всё работает и вас устраивает, то не парьтесь. А если хочется заморочится преждевременной оптимизацией, то стоит построить тестовый стенд и попробовать различные варианты.
Meseret
Здравствуйте, я использую MongoDB. Не могли бы вы предложить бесплатные инструменты безопасности для проверки уязвимостей?
Ильдар
кто нибудь поднимал mongodb с помощью percona operator? какая то проблема в новых версиях, не поднимается пмм агент, при включении... pmm: enabled: true image: repository: percona/pmm-client tag: 2.44.0
Yura
Всем привет, а может кто-нибудь подсказать утилиты для работы с логом монги? jq не предлагать) Был ещё опыт работы с Hatchet, но это не очень удобно в настройке и когда нужно что-то найти/проанализировать оперативно. И ещё mtools, но она с версиями монги >4.4 не работает
Kenya-West
Всем привет! Почему в документации не описан запуск database-tools посредством docker-compose?
Kenya-West
Эх. Сдаюсь. Решил было сделать бекап на основе mongodump/mongorestore. А что? База 14 мегов занимает. Для этого мне нужен способ воспроизводимой установки mongodb-database-tools на Ubuntu. В macOS есть такая штука: brew install mongodb-database-tools А в Linux её нет. Надо качать tatar'ы с уникальными именами, а как их узнавать программно - загадка. Парсить HTML ради этого или городить иные подобные костыли я не готов. Потом ещё и бинарники оттуда вилкой выковыривать и в /usr/share/bin/ пихать. Ну, ладно, Ansible всё стерпит. Так что вопрос всё ещё актуален. Каким образом вы получаете гарантированно свежие mongodb-database-tools на свой Linux хост воспроизводимым автоматизированным неинтерактивным и желательно девственным способом?
Kenya-West
Ненавижу роботов. В основном за то, что они умнее, быстрее и сильнее меня. Но и тут примерно тот же ответ. Только не говорите мне, что реально придётся костылить...
Nick
Ненавижу роботов. В основном за то, что они умнее, быстрее и сильнее меня. Но и тут примерно тот же ответ. Только не говорите мне, что реально придётся костылить...
что мешает сделать образ один раз и положить его к себе в реджистри? всеравно же вы не будете тянуть тулы которые не проверили и не прописали явно версию
Kenya-West
что мешает сделать образ один раз и положить его к себе в реджистри? всеравно же вы не будете тянуть тулы которые не проверили и не прописали явно версию
Нужно городить инфраструктуру для постоянного обновления образа, его развертывания и публикации для гарантии предоставления максимально свежих утилит стабильных версий... Что-то не то. Я привык на чужом горбу в опен-сурсе выезжать и истерить в issue, как и 99.9% участников GitHub...
Kenya-West
что там в тулах надо нового? они и старые работают замечательно
Они не существуют в вакууме, к сожалению. СУБД MongoDB постоянно обновляется (в облаке Atlas, где я хостюсь нахаляву - люблю бесплатновое), мне постоянно приходится обновлять бекенд, чтобы угнаться за обновлениями каждые полгода. Уверен, тулзы в какой-то момент устареют настолько, что не переварят новую версию Монги. Поэтому прошу именно чего-то такого, что всегда будет устанавливать свежак - выбора нет, экосистема диктует правила. А вообще, Монго - редиски, могли бы и подсобить с автоматизированной установкой...
Kenya-West
у меня проект на монгусе на атласе лет 6 работает без единого апдейта драйверов монги, хз что и зачем там обновлять)
Эх. То ли я пакет не тот к Nest прикрутил, то ли сам Nest как-то жёстко чекает версию Монги... В общем, наелся, три раза обновлял его за два года. За это время монга скакнула с 6 до 8 версии, и каждый раз при очередной мажорке начинался секс, причём я всегда был снизу
Kenya-West
Всем привет! mongodump'нул БД. Создал контейнер с новым, совершенно пустым экземпляром Монги: services: mongodb: image: mongo container_name: test_mongodb environment: - PUID=1000 - PGID=1000 volumes: - ./database:/data/db ports: - 27020:27017 restart: unless-stopped Запускаю mongorestore командой: mongorestore --uri="mongodb://localhost:27020/?authSource=admin" .\path\to\backup Но он не понял, как. Так и написал. И я не понял, как. Тоже написал сюда. Вот логи: 2025-02-03T00:08:05.914+0500 preparing collections to restore from 2025-02-03T00:08:05.935+0500 don't know what to do with file "path\to\backup\mydatabase\contracts.bson", skipping... 2025-02-03T00:08:05.935+0500 don't know what to do with file "path\to\backup\mydatabase\contracts.metadata.json", skipping... 2025-02-03T00:08:05.935+0500 don't know what to do with file "path\to\backup\mydatabase\creatives.bson", skipping... 2025-02-03T00:08:05.935+0500 don't know what to do with file "path\to\backup\mydatabase\creatives.metadata.json", skipping... 2025-02-03T00:08:05.936+0500 don't know what to do with file "path\to\backup\mydatabase\invoices.bson", skipping... 2025-02-03T00:08:05.936+0500 don't know what to do with file "path\to\backup\mydatabase\invoices.metadata.json", skipping... 2025-02-03T00:08:05.936+0500 don't know what to do with file "path\to\backup\mydatabase\medias.bson", skipping... 2025-02-03T00:08:05.936+0500 don't know what to do with file "path\to\backup\mydatabase\medias.metadata.json", skipping... 2025-02-03T00:08:05.936+0500 don't know what to do with file "path\to\backup\mydatabase\persons.bson", skipping... 2025-02-03T00:08:05.936+0500 don't know what to do with file "path\to\backup\mydatabase\persons.metadata.json", skipping... 2025-02-03T00:08:05.936+0500 don't know what to do with file "path\to\backup\mydatabase\user-frontend-configs.bson", skipping... 2025-02-03T00:08:05.936+0500 don't know what to do with file "path\to\backup\mydatabase\user-frontend-configs.metadata.json", skipping... 2025-02-03T00:08:05.936+0500 0 document(s) restored successfully. 0 document(s) failed to restore.
🅰️nimeCoder
Всем привет! mongodump'нул БД. Создал контейнер с новым, совершенно пустым экземпляром Монги: services: mongodb: image: mongo container_name: test_mongodb environment: - PUID=1000 - PGID=1000 volumes: - ./database:/data/db ports: - 27020:27017 restart: unless-stopped Запускаю mongorestore командой: mongorestore --uri="mongodb://localhost:27020/?authSource=admin" .\path\to\backup Но он не понял, как. Так и написал. И я не понял, как. Тоже написал сюда. Вот логи: 2025-02-03T00:08:05.914+0500 preparing collections to restore from 2025-02-03T00:08:05.935+0500 don't know what to do with file "path\to\backup\mydatabase\contracts.bson", skipping... 2025-02-03T00:08:05.935+0500 don't know what to do with file "path\to\backup\mydatabase\contracts.metadata.json", skipping... 2025-02-03T00:08:05.935+0500 don't know what to do with file "path\to\backup\mydatabase\creatives.bson", skipping... 2025-02-03T00:08:05.935+0500 don't know what to do with file "path\to\backup\mydatabase\creatives.metadata.json", skipping... 2025-02-03T00:08:05.936+0500 don't know what to do with file "path\to\backup\mydatabase\invoices.bson", skipping... 2025-02-03T00:08:05.936+0500 don't know what to do with file "path\to\backup\mydatabase\invoices.metadata.json", skipping... 2025-02-03T00:08:05.936+0500 don't know what to do with file "path\to\backup\mydatabase\medias.bson", skipping... 2025-02-03T00:08:05.936+0500 don't know what to do with file "path\to\backup\mydatabase\medias.metadata.json", skipping... 2025-02-03T00:08:05.936+0500 don't know what to do with file "path\to\backup\mydatabase\persons.bson", skipping... 2025-02-03T00:08:05.936+0500 don't know what to do with file "path\to\backup\mydatabase\persons.metadata.json", skipping... 2025-02-03T00:08:05.936+0500 don't know what to do with file "path\to\backup\mydatabase\user-frontend-configs.bson", skipping... 2025-02-03T00:08:05.936+0500 don't know what to do with file "path\to\backup\mydatabase\user-frontend-configs.metadata.json", skipping... 2025-02-03T00:08:05.936+0500 0 document(s) restored successfully. 0 document(s) failed to restore.
https://www.mongodb.com/community/forums/t/mongorestore-error-dont-know-what-to-do-with-file-bjson-and-json/147404/2 ?
Kenya-West
https://www.mongodb.com/community/forums/t/mongorestore-error-dont-know-what-to-do-with-file-bjson-and-json/147404/2 ?
Прочитал. Это не помогло. Я про флаг -d. А вот создание папки с любым именем и засовывание туда всего бекапа помогло. Правда, возникает вопрос - а почему тогда такой важный параметр, как имя базы, определяется именем какого-то там папки? Впрочем, бекапы работают, я в этом убедился.
🅰️nimeCoder
Ну вероятно дело в том, что так делает mongodump
🅰️nimeCoder
Ну и обратно из результата восстанавливает mongorestore
🅰️nimeCoder
Не вижу проблемы и какой либо "важности" которая мешает хранить имя в имени папки
🅰️nimeCoder
Ну была бы не папка, а огромный файл который хранит все пути к коллекциям и мета инфе + название бд Так это та же самая папка только оверинженерная
Назар
Всем привет. Есть довольно наверное типичная задача. Пользователь загружает ексель файл, и на каждую строку нужно создать сущность в бд. Такж ще еще 1 сущность общую. И по 1 сущности на каждую 1000 строк. Но файл может быть например 100к строк. Итого 101001 сущность. И мне это нужно в транзакции, потому что если хоть одно что то я не могу сохранить, то все остальные данные нельзя сохранять. Во первых сейчас транзакция занимает 25 сек, при лимите а 30. Ну это еще поднять можно. Но у коллеги локально упало и сказало, что мало памяти. Да и вообще читал, что транакции больше 1к не рекоммендуется делать. Как тогда? Очереди? Или флажки какие то?
Артем
и какой-нибудь garbage collector документов, что неконсистентно вставились раз в сутки (например)
Kenya-West
Ну была бы не папка, а огромный файл который хранит все пути к коллекциям и мета инфе + название бд Так это та же самая папка только оверинженерная
Да, мне единый файл удобнее, тем более скоро restic его будет бекапить инкрементально. С опцией mongodump --archive и mongorestore --archive удобнее в разы. Отлично, спасибо за подсказку!
Назар
Что упало по памяти?
вроде какая то такая ошибка была. mongodb transaction is too large and will not fit in the storage engine cache
Сергей
Добрый день, подскажите, после выполнения deleteMany, надо какой-нибудь commit делать? Версия 4.4
Сергей
Запросы делаю в терминале
Nick
Добрый день, подскажите, после выполнения deleteMany, надо какой-нибудь commit делать? Версия 4.4
Если явно не стмртанули транзакцию то и коммит делать не надо
Кирилл
Добрый день, пытаюсь подключится к WSL к локально установленной монге, но выдает ECONNREFUSED 127.0.0.1:27017, в Компасе же по mongodb://127.0.0.1:27017 корректно подключается
Tim🌵
Привет, монга жрет 24 гига оперативки на сервере Идет активная запись и чтение в коллекции на скрине. Как видно коллекции большие. 24 гига для работы с такими коллекциями это вообще норм или где-то есть проблемы?
Abdurazzoq
Если ты имеел ввиду total index size
Abdurazzoq
То это объем данных для хранения индексации
Tim🌵
Вот скрин с докера
Tim🌵
То это объем данных для хранения индексации
Кстати интересно, что он очень похож на RAM по объему 🤔
Oleg
у нас какие-то монги на 256G RAM кажется и планируем до 512-1024 увеличивать..
Oleg
железо щас стоит недорого, особенно если за пределами РФ
Nick
Привет, монга жрет 24 гига оперативки на сервере Идет активная запись и чтение в коллекции на скрине. Как видно коллекции большие. 24 гига для работы с такими коллекциями это вообще норм или где-то есть проблемы?
Холодная часть индексов будет выгружена из памяти. Если же запросы будут идти по всем данным то недостаток оперативы под индексы аукнется ликой нагрузкой на диски. Начинайте периодически смотреть на то что с дисками творится
Nick
ну это если монгу вовремя обновлять
Ну в 2025 сидеть на 3 версии такое себе)
Yura
Подскажите пожалуйста, почему при выполнении команды db.serverStatus().globalLock: { totalTime: Long('342384277000'), currentQueue: { total: 0, readers: 0, writers: 0 }, activeClients: { total: 16, readers: 0, writers: 16 } } Для writers потолок всегда 16, вне зависимости от количества ядер на ВМ, или это количество зависит от другого параметра? И можно ли его регулировать? Версия монги 7.0.12