Aga
По одному нормально
и последний вопрос, для продакшна где будет тысячи запросов в секунду в БД, есть какие-то лайфхаки?
yopp
Но если что, я сижу в самолете и жду когда мы всё-же полетим.
Aga
Или просто поставить по инструкции голую монгу и юзать?
yopp
Вложиться в observability
yopp
Чтоб видеть где возникнут проблемы
yopp
Да, лайфхак заключается в наличии данных о состоянии кластера
yopp
Начать можно с Percona Monitoring
yopp
Наше наверное будет только через полгода готово
Aga
ух
Андрей
Покажите на примерах пожалуйста. Не понятно что вы хотите получить в итоге
Есть данные { "_id" : "1", "text" : "hello" } { "_id" : "2", "text" : "hello2", "parent" : 1 } { "_id" : "3", "text" : "hello3", "parent" : 2 } { "_id" : "4", "text" : "hello4", "parent" : 3 } Я хочу получить при запросе объекта с text=hello4 получить объект { "id" : "4", "text" : "hello4", "parent" : 3, "parents":[3,2,1]}
Aga
Наше наверное будет только через полгода готово
Я думал конфиг там настроить достаточно будет)
Aga
Пару тысяч запросов в секунду монга потянет голая?
yopp
Может потянуть, а может не потянуть
Aga
Свечку поставлю))
yopp
на моем древнем эйре 2013 года монга может выжимать 23-25 тысячи запросов на вставку или около сотни мегабайт в секунду. Дальше уже в ссдшку упирается. Но это абстрактные документы в абстрактную коллекцию в вакууме
yopp
Про сотню я наверное вру, скорее всего побольше. Но документы очень маленькие: по сути три ключа
Nick
Пару тысяч запросов в секунду монга потянет голая?
настолько сильно зависит от данных, вида запросов, железа, да и как вообще приложуха их кидает, что здесь нельзя ответить однозначно. Так что настраивайте, имитируйте работу приложения, желательно даже чтоб сам софт был тот же что будет потом в проде и грузите извне, а там смотрите справляется с вашими тящами рпс или нет
Aga
Инстаграм через два дня упал, но потому же встал)
Aga
Будет даже приятно, что от большого трафика упали)
Roman
Привет! Подскажите, пожалуйста, насколько плохая идея включения профилирования запросов с параметром (2) на продакшене?
Aga
А что с ним?
Так нагрузка же, взлетели слишком быстро
Bro
Насколько быстро?
AstraSerg
Поздравляю прекрасную половину нашего чатика! Верю, вы есть и спасибо вам за это :)
Slava
Наше наверное будет только через полгода готово
делаете свое решение для мониторинга?)
Sardor
Ребят, как можно написать на node.js, чтобы .updateOne() срабатывал, только если в коллекции нет документа со значениями, переданными первым аргументом (поиск)? upsert: false за это отвечает?
Veaceslav
Всем привет. Мужики подскажите плиз что я не правильно делаю, Есть такой запрос: AlertModel.find({status: {status: 'sended'}}) Вот только ничего не может найти в базе... Хотя вроде как должен
Veaceslav
Вот и Object в базе. Подскажите что не так с запросом ? Заранее спасибо
yopp
делаете свое решение для мониторинга?)
Для анализа производительности
Veaceslav
попробуйте так: AlertModel.find({"status.status": 'sended'}})
Да, так работает. Но проблема в том что я бы хотел фильтровать по всем полям объекта status, я для этого мне прописывать для всех полей правила, что не очень радует... Может есть другое решение ? Заранее спасибо
Nariman
Всем привет. Есть три сервера mongodb с обы4ной репликой + eсть java app в apache tomcat который записывает обы4ные логи в один MongoDB, при падении первои node-ы запись в DB берет на себя вторая node-а, но tomcat все еще пытается отправлять логи на node1. Мой вопрос: Как app правильным методом должен узнать о правильнои node ? Заранее благодарен
Denis
И это будет работать автоматом ?
Точнее мне кажется лучше так делать MongoClient mongoClient = new MongoClient( new MongoClientURI( "mongodb://host1:27017,host2:27017,host3:27017/?replicaSet=myReplicaSet")); Да. Драйвер для подключения к монге коннектится к репликасету и попадет на мастера всегда
Nariman
То есть driver знает какая noda - активна какая в down-е а какая read only ?
Viktor
@dd_bb ^
AstraSerg
То есть driver знает какая noda - активна какая в down-е а какая read only ?
Точнее, скажет кто из них примари, ибо пишется только в примари. Читается — тоже, если не указана опция secondaryPreferred
AstraSerg
У меня только write, read операции нету
О как! Зачем писать, если не читать потом? :)
Nariman
Да согласен но запицыва только log-и
Stas
Привет. Подскажите как сделать выборку из коллекции бд? Есть бд all, в ней есть коллекция users, db.all.users.find() ничего не выводит
AstraSerg
Сделайте use all потом db.users.find()
Stas
Большое спасбо)
AstraSerg
Да не за что. Если хотите углубиться в монгу, рекомендую https://unuversity.mongodb.org
RapidCodeLab
Привет, я пока только пробую, вопрос такой, допустим коллекция в 100М записей, по ней нужно сделать какие-то операции, при чем не по всей, а выборки по некторым полям, но в выборке тоже по миллионов 10-30 будет, как адекватно это сделать?
RapidCodeLab
я так понял там курсор возвращяется а не все данные из коллекции?
RapidCodeLab
то есть можно по курсору фигачить
AstraSerg
Так же как и другие выборки, find. Да, конечно курсор возвращается.
AstraSerg
то есть можно по курсору фигачить
Да. В терминах питона — это типа итератора.
RapidCodeLab
то есть память всей коллекцией не сожрется, плохо понимаю, сорри. вот из постгреса если сделать выборку, он весь результа в память приложению отдает, без limit
RapidCodeLab
то есть если не юзать limit
RapidCodeLab
limit/offset только, если я правильно понял
RapidCodeLab
select не возвращяет курсор же там
AstraSerg
Лимит не о том
AstraSerg
Nick
то есть память всей коллекцией не сожрется, плохо понимаю, сорри. вот из постгреса если сделать выборку, он весь результа в память приложению отдает, без limit
это если вы не используете курсоры при вычитке, а выбираете жадно. За питон не скажу, но в джаве можно так же открыв курсор выдирать данные кусочно а не все сразу вычитывать. Посмотреть чтонить про fetchSize
RapidCodeLab
select * where условие, с индлексами на полях, очень медленно работает
AstraSerg
Если у вас питон, попробуйте померять память при помощи memit
RapidCodeLab
по 40-50 сек, на 2М базе
RapidCodeLab
у меня golang
Nick
ну так посмотрите там что предлагается
Nick
и запомните - если вы выбираете все данные, то это всегда долго
RapidCodeLab
там скан всей таблицы
RapidCodeLab
RapidCodeLab
постгрес просто липнет