Olexandr
не подскажете как с помощью GridFsStorage записывать данные именно в тип данных avatar? знаю что сумбурно написано😅
Serg
2021-01-21T03:00:49.078+0300 I COMMAND [ftdc] serverStatus was very slow: { after basic: 24, after asserts: 24, after connections: 204, after electionMetrics: 540, after extra_info: 540, after flowControl: 540, after globalLock: 671, a fter locks: 695, after logicalSessionRecordCache: 697, after network: 990, after opLatencies: 990, after opReadConcernCounters: 990, after opcounters: 990, after opcountersRepl: 990, after oplogTruncation: 990, after repl: 990, after sec urity: 990, after storageEngine: 990, after tcmalloc: 990, after trafficRecording: 990, after transactions: 990, after transportSecurity: 990, after twoPhaseCommitCoordinator: 990, after wiredTiger: 998, at end: 1668 }
Serg
на secondary ноде в логе посыпало такое и пришел oom killer
Serg
нагрузки особо не было есть идеи куда посмотреть ?
Artem
Как во вложенном документе монги указать поле "type" ? Монгус считывает его как тип объекта
Дмитрий
Если вы про тс то там дженерики
yopp
на secondary ноде в логе посыпало такое и пришел oom killer
Если пришёл OOM значит ей не хватило памяти. У вас кроме монги на сервере что-то ещё есть?
Николай
Всем привет, можете подсказать, пожалуйста такой вопрос. Я хочу сделать для себя сайт по книгам, я создал коллекцию с жанрами (Id, name). Хочу в документ с книгой добавлять массив жанров, каким образом описать его? Какие типы? Что хранить? (Только id или полный объект) Как потом получать сджоиненные значения? (Работал только с mysql и postgres, впервые с mongodb работаю)
Artem
Если вы про тс то там дженерики
какие дженерики? никакого тс.
Artem
Тогда вопрос не оч понял)
new mongoose.Schema({ field: { subfield: Number, type: String } }) Я хочу чтоб тут было поле field.type и чтоб оно было строковым. А монгус это воспринимает так, буд-то я хочу задать тип String для field
Николай
Сделайте коллекцию жанров, храните ссылки (_id)
то есть я в массив добавляю просто objId нужных жанров?
Николай
Да
А как получить при выборке полный объект?
Дмитрий
$lookup
Дмитрий
Погуглите, несложно
Николай
Это да, ща погуглю, спасибо. Нужно ли в схеме описывать, что это ссылки или что-то типо того?
Дмитрий
Если ссылка будет не массивом, то погуглите ещё и $unwind
Дмитрий
Да, там есть тип ref
Дмитрий
https://mongoosejs.com/docs/populate.html
Николай
Да, там есть тип ref
А, ну тогда все нужное сделал уже) Спасибо) Попробую разобраться с lookup
Дмитрий
Ну и да, можно populate =)
Дмитрий
Лукап может и не пригодится
Николай
Чет не сразу понял, как с этим работать, подумал не оно. Спасибо попробую углубиться
Serg
Если пришёл OOM значит ей не хватило памяти. У вас кроме монги на сервере что-то ещё есть?
нет, только mongod есть какието бестпрактик чтобы ограничить процессу монги память ? RHEL 7
Serg
soft memlock hard memlock не помогают
yopp
монга в контейнере?
Serg
монга в контейнере?
нет в виртуалке вертикально масштабировать некуда допустим
yopp
если монга правильно видит объём оперативной памяти, то за ней oom приходить не должен
yopp
если кроме монги ничего нет, ищите что является триггером для oom
Dmytro
а куда логи монгуза пишуться?
Dmytro
output path
Artem
output path
никуда
Artem
юзай mongoose.set('debug', func) и в func сохраняй ну или попроще — node app.js 1>/some/path/app.log 2>&1 &
Dmytro
юзай mongoose.set('debug', func) и в func сохраняй ну или попроще — node app.js 1>/some/path/app.log 2>&1 &
тобишь, всё что будет порождать нод процесс будет логировать всё в файл?
Artem
тобишь, всё что будет порождать нод процесс будет логировать всё в файл?
второй случай будет логгировать всё, что логгирует приложение, не только монгус. первый — только монгус
Viktar
На чём основывается это утверждение?
На личном опыте. В моем случае переджойнить 100 млн с 200 млн записей получилось на 40% медленнее, чем в постгресе
yopp
Без точных условий это сравнение не имеет никакого смысла
yopp
200 млн документов в монге и 200 млн документов в пг это два абсолютно разных 200 млн документов
Viktar
Согласен
Nick
На личном опыте. В моем случае переджойнить 100 млн с 200 млн записей получилось на 40% медленнее, чем в постгресе
а можете сказать в чем потребность джойнить 100кк с 200кк доков? интересен кейс
yopp
https://www.mongodb.com/blog/post/building-with-patterns-the-extended-reference-pattern https://www.mongodb.com/blog/post/building-with-patterns-the-subset-pattern
Николай
Всё зависит от того как вы хотите потом эти жанры использовать
В документ книги добавлять массив жанров, выводить при выдаче на клиент наименования жанров, также организовать фильтры по ним
Viktar
Может кто сталкивался с дедублицированием записей в монге? Имеется несколько цсв с данными, надо их дедублицировать при загрузке
Nick
ну и конкретно с csv можно просто sort file.csv | uniq > file_uniq.csv
Nick
и потом хедер найти и на место запихать
Viktar
Мне нравится. Спасибо
Nick
тока над понимать что это от полного дубликата
WolderVsrat
Люди и адреса. Две разных коллекции
Даже в специфичной вертике так редко джойнят. Обычно для этих целей с такими объемами создаётся отдельная материализованные таблица, куда данные джобами/триггерами заливаются/обновляются инкрементально. Так скорость доступа до данных гораздо лучше, хоть и требуется больше места
WolderVsrat
В принципе, тот же подход рекомендуется и в доке монги - мапредюс или аут/мерж в пайплайне
Viktar
Nick
отлично
Nick
а точно там ж -u есть
Andrey
Здравствуйте, помогите подобрать правильное решение: Есть база которая дампится и разворачивается на другой машине. В изначальную и новую базу добавляются новые данные, через какое-то время нужно новые данные с первой базы добавить во вторую только так бы те данные которые были добавлены за этот период во вторую базу остались. Как лучше это реализовать? Обычный import как-то долго работает. Заранее спасибо!
yopp
В принципе, тот же подход рекомендуется и в доке монги - мапредюс или аут/мерж в пайплайне
Для адресов нет смысла в отбельной коллекциии. Это скорее всего 1-n связь и если адреса используются только связке с аккаунтами их дешевле хранить прямо в аккаунте
Andrey
Добавить в документ какой-то идентификатор, который позволит выбрать только изменившиеся документы
А импортировать/экспортировать через mongoimport? Это самый быстрый вариант? И в каком формате лучше (быстрее)? Вот так вот нормально или можно как-то оптимизировать? mongoexport --collection=data_storage --db=main --out=/home/user/data_storage.json mongoimport -d main -c data_storage --file /home/user/valid_data.json
Андрей
Привет. Ребят, юзал кто-нибудь odbc конекторы для подключений с использованием unixodbc? Ни https://docs.mongodb.com/bi-connector/master/reference/odbc-driver не работает ни даже платный от devart. Первый при подключении не передает никаких команд в базу, хотя подключение поднимает и тупо держит, а второй даже не подключается.
Andrey
Понял, благодарю за информацию.
Anvar
Привет коллеги! Стек: aws lambda (NodeJS + mongoose) -> aws ec2 -> mongodb. В логах постоянно: "Error sending response to client. Ending connection from remote","attr":{"error":{"code":6,"codeName":"HostUnreachable","errmsg":"Connection reset by peer"}. При этом лямбды нормально возвращают результат. Подскажите пожалуйста, кто сталкивался, куда смотреть?
...
Всем привет, а монго есть что-то для подсчета данных снизу вверх?
...
грубо мне нужно собрать сумму значений записи на основе его потомков
Vladislav
https://yatsapp.herokuapp.com/login здрастуйте создал сайт и развернул на heroku подскажите какие недостатки? Что стоит убрать и поменять
Vadim
Создаешь профиль, потом хочешь его обновить и загрузка постоянная проходит, без возможности редактировать + подтверждение почты сделать хорошо бы
Vadim
Сергей
Господа, подскажите как проектировать схему в данном случае: Есть склад, есть товары. Экземпляр товара может находится на разных складах на разных полках. Если у меня есть реляционная модель, из-за связи many-to-many я делаю join table, в котором дополнительно к двум foreign key'ям, указывающим на склад и на товар соответственно, я добавляю информацию о номере полки на котором он лежит. Здесь как я понял many-to-many это документы с двусторонними array'ями reference'ов. И никаких тут join collection никто не использует. Вопрос куда затолкать мне расположение в складу?
Сергей
Пытался вот что-то изобразить, но число pipeline'ов с lookup'ами, которые надо сделать наталкивают на мысль, что тут так дела не делаются
Artem
$or: [ { a: 1 }, { a: 10 } ] или a: { $in: [1, 10] } ?