
Roman
24.07.2018
14:24:07

Iván
24.07.2018
14:24:51
Hi guys. Anyone speaks english here?

Roman
24.07.2018
14:25:21
на сервере заканчивалось место и монга падала! но потом я почистил левак и она завелась! может чего он отключил когда небыло места и нужно включить?

AstraSerg
24.07.2018
14:26:27

Google

AstraSerg
24.07.2018
14:26:50

Iván
24.07.2018
14:26:58

Roman
24.07.2018
14:27:04
так а как это сделать в консоле?

Iván
24.07.2018
14:27:07
I wanted to know which MongoDB should I download

Roman
24.07.2018
14:27:32
с сайта все работает

Iván
24.07.2018
14:27:41
Because there are different versions of it. Like Atlas/Community Server, etc
I will use MongoDB for a course

Roman
24.07.2018
14:30:56

AstraSerg
24.07.2018
14:33:27

yopp
24.07.2018
14:34:00

Iván
24.07.2018
14:34:13
Perfect

yopp
24.07.2018
14:34:14
We have English group: @mongo_db

Google

Bandikoot
24.07.2018
15:53:34
так а как это сделать в консоле?
для работы с консолькой почитай про директиву use, например. а также стоит понимать, что бд, с которой работаешь и бд, в которой авторизуешься, могут быть и разными


Roman
24.07.2018
15:55:17
Ну да я разобралсч спасибо. Просто в доке было написано что команда дб вернет доступные базы
И кода он возвращал одну то меня это стопарило
А он походу возвращал тукущую

Bandikoot
24.07.2018
15:57:21
show dbs попробуй
в общем, https://docs.mongodb.com/manual/reference/mongo-shell/

Roman
24.07.2018
15:58:21
Да да там я и нашел ответ при очноедном просмотре
Спасибо


Sergey
24.07.2018
16:30:42
Всем доброго дня! Подскажите плиз, python, pymongo. Есть две коллекции, в одну сохраняются товары текущего парсинга (перед парсингом коллекция дропается), во вторую – тоже самое, но там товары накапливаются и появляется дополнительное поле-массив с датами, когда товар был доступен. Индексы в обеих коллекциях по _id и uuid. Для обновления данных во второй коллекции пытаюсь использовать конструкцию:
db[collection].update(item, {"$addToSet": {'avl_date': date}}, upsert=True)
item вот такого вида:
item ={'uuid': '89579073-237f-50bb-a51c-8ba4c93b1edb', 'sku': '311565011', 'outOfStock': True, 'category': 'Toys & Entertainment/Technology & Electricals /Radios', 'brand': 'View Quest', 'price': {'currentPrice': '£65', 'unitPrice': '£65 each'}, 'avl_date': ['2018-07-22', '2018-07-23'], 'name': 'Blue Retro Mini Digital Radio', '_id': ObjectId('5b546efeb859c869112da997')}
пробовал с полем _id и без, с полем avl_date и без. Выдает ошибку дубликата ключа по uuid. Работает вот так:
db[collection].update({‘uuid’: item[‘uuid’]}, {"$addToSet": {'avl_date': date}}, upsert=True)
но тут вопрос, если продукта с таким uuid нет, то он должен вставить документ (как я пробовал это сделать в первом случает), а где его указать в этой конструкции?
Еще раз поинтересуюсь, вечером как то более оживленно здесь


Constantin
24.07.2018
16:34:14
Всем привет! А кто-то уже успел «в бою» испытать транзакции?

Dmitry
24.07.2018
16:41:58
в новом релизе добавили
https://www.mongodb.com/press/mongodb-announces-multi-document-acid-transactions-in-release-40
например, очень важная штука для банка
когда нужно одновременно уменьшить баланс у одного аккаунта и увеличить у дрогого, при переводе денег
если одна из операций упадет, вторая тоже должна откатиться, для этого придумали транзакционность, когда несколько запросов пушатся в одной транзакции
но вообще я хз, особо их не юзал :))


Constantin
24.07.2018
18:38:30
Всем доброго дня! Подскажите плиз, python, pymongo. Есть две коллекции, в одну сохраняются товары текущего парсинга (перед парсингом коллекция дропается), во вторую – тоже самое, но там товары накапливаются и появляется дополнительное поле-массив с датами, когда товар был доступен. Индексы в обеих коллекциях по _id и uuid. Для обновления данных во второй коллекции пытаюсь использовать конструкцию:
db[collection].update(item, {"$addToSet": {'avl_date': date}}, upsert=True)
item вот такого вида:
item ={'uuid': '89579073-237f-50bb-a51c-8ba4c93b1edb', 'sku': '311565011', 'outOfStock': True, 'category': 'Toys & Entertainment/Technology & Electricals /Radios', 'brand': 'View Quest', 'price': {'currentPrice': '£65', 'unitPrice': '£65 each'}, 'avl_date': ['2018-07-22', '2018-07-23'], 'name': 'Blue Retro Mini Digital Radio', '_id': ObjectId('5b546efeb859c869112da997')}
пробовал с полем _id и без, с полем avl_date и без. Выдает ошибку дубликата ключа по uuid. Работает вот так:
db[collection].update({‘uuid’: item[‘uuid’]}, {"$addToSet": {'avl_date': date}}, upsert=True)
но тут вопрос, если продукта с таким uuid нет, то он должен вставить документ (как я пробовал это сделать в первом случает), а где его указать в этой конструкции?
В секции, где $addToSet добавить нужно $setOnInsert
https://docs.mongodb.com/manual/reference/operator/update/setOnInsert/index.html — вот тут есть пример


Sergey
24.07.2018
18:39:28

Maxim
24.07.2018
20:14:49
Привет !

Google

Maxim
24.07.2018
20:15:39
подскажите пожалйста - как можно с существующей MongoDB ну или моделек с монгуза получить красивую DBSchema ? (Это как ЕRD для реляционок, только более общее понятие). Я понимаю что в монге и связей между колекциями как таковых нету, но всё же
пришёл на новый проек, модельки вижу, но трудно собрать раму что к чему
юзаем по идее MongoDB Atlas

Анатолий
25.07.2018
05:21:47
мне кажется монгодб это не та бд в которой имеет место быть схема бд... документ он же может быть любой...
список коллекций можете получить командами. а вот какие у документов есть поля - это лучше спрашивать у тех кто делал проект до вас, либо смотреть по коду что туда пишется.

Nick
25.07.2018
07:44:52

Maxim
25.07.2018
07:46:39

Nick
25.07.2018
07:58:35
Да и на самом деле диаграммы рисуются людьми при разрабоике не хуже тулов, если в вашем текущем проекте все еще нет описания бд и схем, а сама структура бд уже устоялась и особо не меняется, то совместите приятное с полезным - опишите все и сами разберетесь и спека по базе будет

AstraSerg
25.07.2018
08:30:31

Maxim
25.07.2018
08:31:27

AstraSerg
25.07.2018
08:31:38

Геннадий
25.07.2018
11:41:53
Всем привет. Подскажите, пожалуйста, как убрать лишние сообщения в логах? Уже установил logLevel в 0, quiet тоже стоит. У меня множественные коннекты к БД и остался спам сообщения:
mongod[25605]: 2018-07-25T14:38:00.709+0300 I NETWORK [conn1] received client metadata from 127.0.0.1:33528.............
Как это убрать на фиг?

AstraSerg
25.07.2018
11:43:48

Геннадий
25.07.2018
11:44:47
Это вам в консоль сыпется?
Ну куда настрою, туда и сыпится. И в логфайл сыпалось, сейчас у меня journalctl используется, теперь туда (через syslog).

AstraSerg
25.07.2018
11:46:47
> Ну куда настрою, туда и сыпится
Может в /dev/null настроите? Там и места побольше и IO жрать не будет :)

Геннадий
25.07.2018
11:48:22
Да я это уже прочитал, и прямо, и задом наперёд. Поэтому и пишу. У меня в результате машина половину ресурсов тратит не на полезную работу, а на спам вот этого. Драйвер переписывать - тоже не айс идея.
Ну дело пахнет к /dev/null, но блин, у меня только что было ощущение, что можно делать прямо, красиво. Выводить всякие ошибки и ворнинги, читать их по утрам вместе со свежей прессой. Ан... нет. Опять через ж...

AstraSerg
25.07.2018
11:51:05
а не пробовали db.setLogLevel(-1, "network" ) ?

Геннадий
25.07.2018
11:51:50
Дык -1 это использовать родительскую настройку. А родительская можетбыть только 0, -1 поставишь - не стартанёт.

Google

AstraSerg
25.07.2018
11:52:07

Геннадий
25.07.2018
11:52:19
Ладно. Плюнул. Дефнул.

AstraSerg
25.07.2018
11:52:37
больше мыслей нет

yopp
25.07.2018
11:52:42
Половина ресурсов на логи?

Геннадий
25.07.2018
11:53:26

AstraSerg
25.07.2018
11:54:05

Геннадий
25.07.2018
11:56:00
Половина ресурсов на логи?
Это художественная гипербола, литературный приём для подчёркивания моего негодования. Ну на самом деле journal настроен у меня сейчас не писать логи на диск, только в памяти. Сейчас парсится на виртуалке база около 40 гигов, там парсится бэкэндом большой xml и распихивается всё в MongoDB. Ну так journal при обработке логов процессор жрёт неплохо, ибо идёт спам от монги.

yopp
25.07.2018
11:58:00
Информация о подключениях не просто так остаётся в логах. Если у вас в логах много сообщений о подключениях, то скорее всего вам необходимо использовать connection pool

AstraSerg
25.07.2018
11:58:02
@GennadyKovalev Чёт как-то странно это....

yopp
25.07.2018
11:58:29
Открытие соединения — дорогая операция, особенно если используется TLS

AstraSerg
25.07.2018
11:59:25

Геннадий
25.07.2018
12:00:50
Про connection pool, про драйвера - это всё очень понятно. У меня вопрос не как убрать множественные коннекты, ибо это вопрос драйвера, а как убрать сообщения в логах. С драйвером мне всё понятно.

yopp
25.07.2018
12:01:00

Геннадий
25.07.2018
12:02:43
Метрики говорят, что пока грузит обработка логов. У меня задача за неделю файл распарсить, переписыванием драйверов я не хочу сегодня заниматься :) Ну /dev/null спасёт мир.

yopp
25.07.2018
12:03:55
Отключите обработку логов и пишите в файл. Даже на высоконагруженных кластерах логгирование это около одного-двух мегабайт в секунду

Геннадий
25.07.2018
12:04:43
Зачем мне писать логи в файл и дополнительно грузить диск, если я это читать не буду?

yopp
25.07.2018
12:04:46
Это sequential write, который в таких объёмах не является проблемой

AstraSerg
25.07.2018
12:05:04
Сделал:
while true; do echo hellohellohellohellohellohellohello | systemd-cat; done
получилось:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
19771 root 20 0 27676 8248 3160 S 28.6 0.1 0:07.58 bash
265 root 20 0 41580 9516 7032 S 9.0 0.1 0:12.55 systemd-journal
Не то что бы сильно много и это с записью в файл

Геннадий
25.07.2018
12:05:19
Вот, пожалуйста, /dev/null и грузит только мой бэк и монга. Всё нормуль.

Google

yopp
25.07.2018
12:06:50
Моя мысль в том, что у вас проблемы не с самим фактом журналирования, а где-то на этапе обработки журнала. Если это продуктивная инсталляция, то лечить надо причину, а не симптом

Геннадий
25.07.2018
12:06:57
@AstraSerg ну понятно, у меня покруче нагрузочка была. bash несколько медленее...

AstraSerg
25.07.2018
12:09:18

Геннадий
25.07.2018
12:09:50

yopp
25.07.2018
12:11:09
Как я уже говорил: несколько мегабайт журнала в секунду (тысячи записей в журнал в секунду) , не должны являться проблемой. Если это является проблемой, это серьезный симптом

Геннадий
25.07.2018
12:11:18
@AstraSerg ну я вчера залез в исходники драйвера... и как-то сник :) Если бы, как всегда, не срочность... Ну я сейчас обработаю свои 40 гигов с /dev/null, потом займысь выпрямлением количества коннектов.

AstraSerg
25.07.2018
12:11:48


Геннадий
25.07.2018
12:28:07
Как я уже говорил: несколько мегабайт журнала в секунду (тысячи записей в журнал в секунду) , не должны являться проблемой. Если это является проблемой, это серьезный симптом
Да выша мысль-то понятна. По-умолчанию systemd-journald` использует временное хранилище, которое живёт на `tmpfs`. Настраивать это можно сколь угодно долго, но это теоретически упрется в ресурс. Либо дай диск для хранение объёма, либо настрой фильтр чего логировать, а чего нет - это процессор, либо дай оперативки для хранения, либо настрой стирание старых записей - это тоже процессор. В данном случае у меня упор ушёл в процессор. И то не упор, а просто увидел, что "поджирает...".
Можно долго настраивать всякие rate limit и не собирать много сообщений от одой службы, но фокус вопроса не как обработать поток дряни, у меня вопроса тут нет. А почему вообще этот поток существует. С учётом того, что множественные соединения я прямо сегодня победить не могу, вот и задал вопрос как отключить поток всякого г... от монги. А то я может в читал доку и в упор чего-то не увидел. Ответ получил. Тоже никак. Ну значит срочняк решим с /dev/null, а лечить будем драйвер, а не обработку ненужного потока г...


AstraSerg
25.07.2018
12:31:35
> а лечить будем драйвер
А что за язык, если не секрет?

Геннадий
25.07.2018
12:59:29
Питон, c motor.

AstraSerg
25.07.2018
12:59:55

Геннадий
25.07.2018
13:01:08
motor - обёртка для pymongo для поддержки ассинхронности. Вернее для псевдоассинхронности.