Oleg
Моё увожение
девопёс
Всем привет. Подскажите пожалуйста, можно ли в монге посмотреть время выполнения запроса типа как у постгри с ее \timing?
Митрофан
Привет всем, есть способ хранить в полях документов ссылку/значение по ссылке на поле в другой коллекции?
Митрофан
Чтобы при получении этого документа это значение подтягивалось из другой коллекции
AstraSerg
смотрите на lookup из aggregation https://docs.mongodb.com/manual/reference/operator/aggregation/lookup/
Митрофан
Спасибо
yopp
Привет всем, есть способ хранить в полях документов ссылку/значение по ссылке на поле в другой коллекции?
Да, DBRef, если ваш драйвер поддерживает эту фичу: https://docs.mongodb.com/manual/reference/database-references/
Oleg
я тут mongoose использую. у меня есть курсы рисования, в них есть есть список изображений. я это записал так Courses.js const CourseSchema = Schema({ category: {type: String, require: true}, name: { type: String, require: true }, price: { type: Number, require: true }, pictures: [{ type: String }] }); CoursePictures.js const CoursePicturesSchema = Schema({ course: {type: String, require: true}, name: {type: String, require: true}, }); то есть, я просто описал что должно быть, надеясь, что каждый элемент в списке будет соответствовать курсу в картине. но по факту ничего не мешает создать картину с несёществующим разделом. могу я как-то создать связь между моделями?
Oleg
или это вопрос к node js?
Игорь
Вопрос: можно ли настроить хранение время хранение коллекций в памяти, относительно того, как часто к ним обращаются? То есть, допустим, если есть коллекция, к торой не совершалось запросов больше недели, то её выгрузить из памяти?
yopp
Нет, вы не можете и не должны управлять кешом данных в памяти
yopp
Если к данным не обращаются, они постепенно будут вытеснены из кеша, по мере необходимости
yopp
Какую проблему вы пытаетесь решить?
Игорь
Монго растёт в памяти и скоро ее размер сровняется с размером оперативной памяти на сервере. При этом я знаю, что там много данных, которые практически не запрашиваются. Хотелось бы начать их вычищение из памяти на диск до достижения размера монго равному объёму оперативной памяти
Aga
это любой приложение растёт
Aga
бывало что телега 1-1.5 гига кушала
Игорь
То есть перезапуск, это самый оптимальный вариант?
Aga
То есть перезапуск, это самый оптимальный вариант?
Да, врядли получится пофиксить это на уровне ноды
Игорь
Хм, спасибо
Nick
это вредный совет, монга кушает чтолько сколько есть
Nick
единственное что вы можете сделать, это задать лимиты по памяти для монги, но это не гарант того, что монга не вылезет за них
Aga
лучше систематизировать перезагрузку, чем поднимать при падении
Nick
если монга падает по лимитам, то вы хотя бы узнаете, что ваше потребление выросло и пора разбираться
Nick
и да потребление памяти монгой это лишь объем данных, которые реально нужно обработать для получения ответа, так что на стороне приложения все легко делается - делаете вменяемы условия выборки, перестраиваете структуру, регулируете интенсивности запросов, настраиваете кеши и т.д.
Игорь
В моем случае это засорение данными, которые возможно уже никогда не будут использоваться приложением или будут, но очень не скоро. Но Как данные для анализа и статистики интересны сами по себе, но их анализ можно сделать на отдельном сервере, перенеся их туда.
Игорь
То есть в принципе перезагрузка базы может держать ее размер в памяти в плюс-минус прогнозируемых значениях, прилично меньше реального объема данных на диске
Nick
Не думайте об этом, монга достаточно умна чтобы неисаользуемые данные скидывать на диск и не трогать их
Nick
Но это справедливо если у вас не полных сканов ваших таблиц и используются индексы
yopp
вообще
yopp
монга сама разберётся под что использовать кеш
yopp
единственное что у вас может случится, это OOM Killer будет устраивать расстрелы, если кроме монги на большие объёмы памяти претендуют другие сервисы. например какойнибудь редис или ещё кто-то
yopp
но это настраивается
yopp
лучше систематизировать перезагрузку, чем поднимать при падении
монгу вообще не нужно перезагружать. никогда. единственное зачем её может быть нужно перезагрузить это или обновить или изменить конфигурацию, которая не меняется в рантайме. больше причин останавливать сервер нет
yopp
если вы используете остановку ноды как средство борьбы с нехваткой памяти, у вас огромный пробел в операционных компетенциях
yopp
совершенно не понимаю с чего вы это взяли
Nick
Обычно любую программу стоит перезагружать)
а если она пару лет работает, то тоже надо?
Алексей
Всем привет! Подскажите кто знает, как в 3.4 убрать из логов “received client metadata” на каждый коннект?
Oleg
не подскажете, как сделать архитектуру типа такой? просто я не знаю, как связи организовать.
Nick
никак
Nick
монга не про связи, все связывание логическое на уровне приложения
Oleg
на уровне кода делать только? проверять, чтоб типы были связаны?
Oleg
ну то есть, что вот "это" есть вот "в том поле"?
Nick
типа того
Oleg
окей. спасибо
AstraSerg
вместо связей в монге есть lookup и DBRef https://docs.mongodb.com/manual/reference/operator/aggregation/lookup/ https://docs.mongodb.com/manual/reference/database-references/
Nick
ну не вместо, а просто способы достать чтото из соседней коллекции (лукап) и общая рекомендация по сохранению ссылки на док в другой коллекции (дбреф)
Nick
без них далеко не уедет)
Oleg
без них далеко не уедет)
без реляционных?
AstraSerg
без них далеко не уедет)
судя по вопросу, он пока без них :)
Nick
что значит "реляцонных"?
Oleg
со связями
AstraSerg
без чего?
без знаний по монге в этом месте
Nick
советую для начала поразбираться в монге и том как она структурирует данные (документы и коллекции) и как хранятся данные во всяких туториалах связей в том значении как это обычно в sql (foreign key) в монге нет, т.к. за целостность данных отвечаете вы сами. Благо теперь появились транзации и это стало проще
Nick
это занчит что надо поразбираться
Nick
вообще что брать nosql/sql это отдельная холиварная тема, котоаря без полной постановки задачи нерешаема
Oleg
ну то есть, наличие таких связий - первый признак того, что нужна sql или зависит только от вкуса?
Nick
для начала можете просто сделать все так же как вы бы сделать в обычной реляционке, потом со временем поймете как лучше структурировать данные под ваши задачи просто поменяйте структуру данных
Oleg
другими словами, если я сделаю это на монге, это будет говно?
Nick
нет
Oleg
спасибо.
Nick
говно/не говно - сугубо субъективная вещь, важно выполняет ли оно свои задачи
Max
Привет - кто-то дружил монгу (монгуз) и авс-лямбды?
Max
ловлю ошибку: MongoNetworkErrormongodb-core.lib.connection:connection in TLSSocket.<anonymous> при чём рандомно
Max
лямда наверное останавливается и ловишь ошибку
дак а чего ловить то, если оно хранится где-то в контекстк контейнера..
Max
я хз как это лечить, да и нужно ли вообще лечить
Alexander
так ты подробно опиши как у тебя устроено там всё, может кто поможет
Alexander
а так это вопрос тип «у меня иногда комп лагает, чё делать пацаны?»
Alexander
что откуда коннектится, где работает, где монга, чем коннектится + логи побольше
Max
что откуда коннектится, где работает, где монга, чем коннектится + логи побольше
да и логов то нету - я эту ошибку через sentry поймал. я раньше её не видел. падает рандомно