yopp
Во-первых, в монге есть защита от запуска нескольких экземпляров монги с одним путём Во-вторых, это почти в любой субд является крайне рискованной идеей
Pavel
Гайс, вопрос про mongoose: шо делать если у тебя 50 сабсхем и все вкладываются друг в друга и в том числе сами в себя? КОнфликт можно разрешить с помощью ref, но тогда будут создаваться побочные коллекции и в круде придется джойнить релейшены. Есть способ их вкладывать без ref?
Pavel
Pavel
Типа того)
Constantin
Можно решить через промежуточный модуль, назовем его schemas.js Он просто экспортирует наружу пустой объект. Есть модуль, который сделает require (import) в себя schemas.js и все схемы, после чего положит все схемы в объект который был импортирован из schemas.js и экспортируем этот же объект. Внутри схем импортим в себя не конкретные схемы, а schemas.js Во внешнем коде (например где из схем создаете модели), импортите тот модуль, который импортил в себя все.
Constantin
Мы всегда так решали циклические зависимости. Как это сделать на TypeScript вместо JS, не скажу, так как пишу на чистом, но вроде можно сделать экспортируемый объект — any или Map
Constantin
Mongoose делает примерно также, вы когда модель объявляете через model, он в mongoose.models кладет
Anonymous
могнус же медленнее нативного драйвера?
Constantin
могнус же медленнее нативного драйвера?
Монгус использует нативный драйвер
yopp
Сейчас ответ бота выключу
yopp
+
yopp
Теперь тихо будет работать
yopp
Нет, это Феди Скуратова
tenni
и здесь этот собиратель метрик
Anonymous
Монгус использует нативный драйвер
Это да Но скорость то его ниже?
Anonymous
Статья на медиуме говорит что да Захотел узнать мнение пользователей тут
Anonymous
Просто при чтении файла только 60к в минуту записываеься в дб(updateone) Хочу ускорить, ищу варианты(в любом случае попробую, но мб кто знает еще варианты)
Constantin
Это да Но скорость то его ниже?
Смотря что вы подразумеваете под скоростью. Монгус перед вставкой делает прогон документа по схеме для валидации или приведение типов. + выполняет хуки, если они есть. В принципе, если все это вам не нужно, можно не использовать монгус, но не думаю, что сильно медленнее. На чтение и удаление ничего такого, насколько я знаю не делается. Главное понимать, что когда вы делаете .exec() у вас данные кладутся в массив (аналог toArray, нативного драйвера). Это определенно даст вам просадку на больших выборках, как по оперативке так и по процессору, с другой стороны монгус предоставляет .cursor, который возвращает нормальный курсор, как и стандартный драйвер
Constantin
Просто при чтении файла только 60к в минуту записываеься в дб(updateone) Хочу ускорить, ищу варианты(в любом случае попробую, но мб кто знает еще варианты)
Факторо много может быть: Если есть индексы, и они сложные, вставка будет дольше Еще может упираться в диск, optlog и т. п.
Bohdan
Господа, а не подкажите, как подключится именно к своей базе, а то у меня строка в формате mongodb://root:root@mongo:27017/admin и получается у меня модели создаются в базе admin, а мне нужно в своей базе?
Constantin
Вместо admin сделайте имя вашей базы
Bohdan
Вместо admin сделайте имя вашей базы
я делал, тогда аутентификацяи не работает
Constantin
?authSource=admin попробуйте добавить к строке
Constantin
Еще root:root лучше не делать, а создавать пользователя/коллекцию авторизации под проект
Constantin
Bohdan
Еще root:root лучше не делать, а создавать пользователя/коллекцию авторизации под проект
и еще маленький вопросик, но уже связанный с докером, можно при инициализации базы задать другой порт, не 27017 ?
Bohdan
вот мой конфиг докер-комоса mongo: image: mongo:latest volumes: - mongo:/data/db ports: - $MONGO_PORT:$MONGO_PORT environment: MONGO_INITDB_ROOT_USERNAME: $MONGO_INITDB_ROOT_USERNAME MONGO_INITDB_ROOT_PASSWORD: $MONGO_INITDB_ROOT_PASSWORD MONGO_INITDB_DATABASE: $MONGO_INITDB_DATABASE
Constantin
Докер тут не причем, можно в файле конфигурации mongodb. Хотя если у вас докер — это должно быть неважно, потому что вы прокидываете порты
Constantin
Ну вот в ports один у вас порт — это порт хостовой машины, а другой дочерней
Bohdan
Докер тут не причем, можно в файле конфигурации mongodb. Хотя если у вас докер — это должно быть неважно, потому что вы прокидываете порты
ну как бы прокидываю только наружный порт, а в компосе другие контейнера видят только внутренний порт
Constantin
Порт хостовый поменяйте на тот, который вам нужен. В композе как раз контейнеры общаются по внешним портам, а не по внутренним
Constantin
хм ... сейчас еще раз проверю
Суть контейнера в том, что вам все равно, в целом что там внутри, докер определяет какой порт изнутри будет смотреть на какой порт наружу
Constantin
ports: - $MONGO_PORT:$MONGO_PORT Вот тут у вас должны быть разные переменные
Bohdan
но вот не работает
Bohdan
Bohdan
а вот внешние программы - видят порт
Bohdan
так что получается, в компосе контейнера взаимодействуют через внутренние порта
Constantin
Bohdan
Может быть, тогда посмотрите переменные контейнера
не понял, какие именно переменные посмотреть?
Constantin
окружения в контейнере
Constantin
Возможно можно переопределить конфигурацию, также как вы задает логин/пароль
Bohdan
вот-вот, я уже гуглил на эту тему и нашел только эти 3 переменные: логин, пароль, база аутентификации. Вот и ищу как порт переопределить
Bohdan
ну при инициализации базы в докере
Constantin
Customize configuration without configuration file — вот этот раздел тут: https://hub.docker.com/_/mongo/
Bohdan
вроде получилось, может кому-то будет полезно mongo: image: mongo:latest command: --port 27018
Bohdan
Всем спасибо, за помощь
Bohdan
и еще маленький вопрос, а какой есть норм viewer баз данных под Windows?
Bohdan
а то компас какой-то тормознуты, а Robo 3T - жутко неудобный
Andrew
Mongoboost, studio 3Т ещё
Andrew
Хотя я себе тоже нормальный клиент не нашел, пользуюсь robomongo ибо shell адекватно работает, а конструкторы мне нафиг не нужны
Bohdan
мне вот для реляционных БД Dbeaver очень понравился, он вроде поддерживает и NoSQL но уже в Enterprise версии за денюшку
Bohdan
а вот для Редиса, вообще ничего не нашел
Constantin
Cli наше все
Constantin
Я использую плагин для атома run-script. Mongo Hub ещё иногда, но не знаю есть ли он под винду
Bohdan
Я использую плагин для атома run-script. Mongo Hub ещё иногда, но не знаю есть ли он под винду
сенкс, а что за монго хаб? А то в гугле не могу найти, все ссылки на репозиторий монги
Constantin
https://github.com/jeromelebel/MongoHub-Mac — но он всеже только для мака
Владислав
Друзья, есть вопрос Не могу найти информацию, транзакции работают на асинхронном java драйвер или нет? И работают ли не на кластере, например, на бд из млаба?
Vh
Здравствуйте, а как в MongoDB сделать интеграцию с сервером?
Constantin
Здравствуйте, а как в MongoDB сделать интеграцию с сервером?
Расскажите подробнее, пока не понятно
Игорь
Товарищи, помогите разорбаться. Стала падать монго. Последнее, что остается в логах перед падением. 2018-08-04T20:22:48.376+0300 I NETWORK [conn751161] received client metadata from 127.0.0.1:35178 conn751161: { driver: { name: "PyMongo", version: "3.6.1" }, os: { type: "Linux", name: "Linux", architecture: "x86_64", version: "4.9.0-6-amd64" }, platform: "CPython 3.6.3.final.0" } 2018-08-04T20:22:48.378+0300 I NETWORK [listener] connection accepted from 127.0.0.1:35180 #751162 (134 connections now open)
Игорь
Падения в преложении стали систематическими, но я не могу понять причину этого
Игорь
после перезапуска долгое время все скрипты работают, все штатно. В данном случае упала спусться почти два дня работы
Игорь
[Sat Aug 4 11:35:09 2018] [181993] 0 181993 11523 1433 25 3 0 0 systemd-journal [Sat Aug 4 11:35:09 2018] [182060] 506 182060 7895 461 19 3 0 0 pgrep [Sat Aug 4 11:35:09 2018] Out of memory: Kill process 259299 (mongod) score 290 or sacrifice child [Sat Aug 4 11:35:09 2018] Killed process 259299 (mongod) total-vm:31873268kB, anon-rss:22790924kB, file-rss:0kB, shmem-rss:0kB
Игорь
нашел причину, тонее "убийцу"
Constantin
OOM Killer настройте, чтобы у монги был самый низкий приоритет. Можно сделать это через systemd юнит монги, чтобы при запуске сразу ее пиду выдавались более низкие позиции в списке жертв OOM Killerа
Constantin
Еще советую накинуть оперативки, на худой конец свопа, и найти запрос который выжирает вам оперативку
Игорь
Вопрос, скрипты работают с монго через pymongo и бывает, что по каким-то причинам запрашивается большая выдача даных из базы, но в этот момент происходит сбой и не считанный курсор так и остается висеть в базе со всей выделенной под него оперативкой. У монго есть внутренний механизм убивать курсоры, которые долго весят?
Constantin
Вообще по таймауту должна резать курсор
Ilya
таймаут
Игорь
в данный момент ситуация такая, размер рабочей базы к которой идут запросы порядка 9 гб, но со временем работы она постепенно отжирает около 30 гб оперативной памяти и показывает, что всегда висит около 7-9 соединений даже когда активных скриптов нет и к базе, кроме меня через терминал ни кто не обращается