
Arthur
17.01.2018
19:47:58

Zloy Dobriy
17.01.2018
19:50:48
Наверное. Хотя, как поставлен вопрос, так и получен ответ, тамщемта. Возможно стоит воспользоваться $match в том же aggregate

Arthur
17.01.2018
19:54:31

Zloy Dobriy
17.01.2018
19:54:55
Да ну опять же.

Google

Zloy Dobriy
17.01.2018
19:54:59
Модно зато
Ну да ладно, продолжайти

Arthur
17.01.2018
19:58:55
если делать db.coll.find({customid: 1408}).sort({member.timestamp: 1, client.date: 1});
то сначала выводяться все отсортированные документы с member.timestamp , а потом client.date отсортированные
а надо чтобы они вместе сортировались ))

Ivan
17.01.2018
21:00:29
А что если у элемента две даты, то как сортировка будет? Если извращаться, то смотри в сторону pipeline, а на деле неправильно хранишь данные, вот и задача дурацкая

Arthur
17.01.2018
21:34:47

Nick
18.01.2018
07:36:41

Arthur
18.01.2018
07:38:01


Nick
18.01.2018
07:39:15
но лучше всетаки пересмотреть структутуру данных пока не поздно, обычно такие проблемы - это первые звоночки, что данные не подходят под запросы
например просто вынести дату на верхний уровень документа и обозвать updatedTime, если это оба время про время создания или последнего изменения, и жизнь сразу улучшиться
и еще я вижу у вас две разные сущности в одной коллекции, если допустимо, то общее нужно вынести на врехний уровень документа и добавить флаг client/member, позволит строить нормальные индексы

Arthur
18.01.2018
07:47:25
согласен, спасибо за помощь!надо будет както изменить данные которые уже есть...

Moe
18.01.2018
11:11:50
парни, тут пытаюсь подключиться к mongodb atlas
он спрашивает у меня версию драйвера - выше 3.6 или ниже 3.4
а как мне узнать мою версию драйвера, чтобы подсунуть ему?

Serge
18.01.2018
12:23:36
https://twitter.com/lig1/status/953965736002834432

Google

Serge
18.01.2018
12:24:22

Artem
18.01.2018
13:06:59
коллеги, а не подскажете, можно ли питоновским скриптом вытащить db.getReplicationInfo()? pymongo вообще позволяет это?

Moe
18.01.2018
13:16:09

Serge
18.01.2018
13:27:29

Artem
18.01.2018
13:32:55
http://api.mongodb.com/python/current/api/pymongo/database.html#pymongo.database.Database.command
подойдет?
хм, насколько я понял это просто вызов команды монги из питона. Поясню ситуацию, у меня есть 3 кластера, в каждом 10-12 репликасетов, в каждом репликасете 4 ноды (3+архивная, с отставанием на час). Время от времени случаются ситуации, когда из за интенсивной записи, архивные ноды отваливаются в recovering, потому как не хватает размера оплога. на наиболее критичных репликасетах мы выкрутили оплог до максимума, что в общем то исправило ситуацию. К остальному хозяйству, я хочу прикрутить мониторящий скрипт, который покажет размер оплога, время на которое его хватает, для каждой из нод кластера.


Serge
18.01.2018
18:19:23
хм, насколько я понял это просто вызов команды монги из питона. Поясню ситуацию, у меня есть 3 кластера, в каждом 10-12 репликасетов, в каждом репликасете 4 ноды (3+архивная, с отставанием на час). Время от времени случаются ситуации, когда из за интенсивной записи, архивные ноды отваливаются в recovering, потому как не хватает размера оплога. на наиболее критичных репликасетах мы выкрутили оплог до максимума, что в общем то исправило ситуацию. К остальному хозяйству, я хочу прикрутить мониторящий скрипт, который покажет размер оплога, время на которое его хватает, для каждой из нод кластера.
вопрос был "как дернуть db.getReplicationInfo()".
это команда. её можно дернуть с помощью метода command класса Database
а вот мониторить монгу у нас туту есть специально обученные товарищи;)
@dd_bb


Dmitry
18.01.2018
19:15:53
Ребят, привет. Я фронтендер, в серверной разработке новичок.
В чём вопрос:
Есть костяк сайта, сервер на node.js, фронт на vue.js, бд монго. Локально CRUD в монго работает, на удалённом сервере (у меня linode 1gb) появляется ошибка: "net::ERR_CONNECTION_REFUSED"
Как настроить права доступа для приложения?
Ubuntu 16.04
Прокси nginx

yopp
18.01.2018
19:50:23

Artem
18.01.2018
20:22:44
Я пошел немного другим путем. Дернул в питоне оплог как коллекцию, и размер вытащил из статов. А время думаю рассчитать как разницу между последней и первой записью коллекции

yopp
18.01.2018
20:22:53
не надо думать
можно просто исходник метода в шелле посмотреть
просто убрав скобки
но так да, логика верная
https://github.com/db-ai/mongo_collection_exporter/blob/master/app/models/exporter/collector/op_log.rb
а зачем оно надо?


Artem
18.01.2018
20:32:40
а зачем оно надо?
Ну просто интенсивность записи в шардированный кластер видимо настолько велика, что у нас пару раз была ситуация, когда оплога в 10 гигов, в репликасетах кластера хватало всего на 5-10 минут. Из за этого отваливались бэкапные ноды, которые по задумке архитектора должны были отставать на час от мастеров. Поэтому я для собственного удобства понимания картины происходящего с кластером, пытаюсь скриптами вытащить данные по состоянию репликасетов.

yopp
18.01.2018
20:33:02
разверни mongo_collection_exporter
prometheus + grafrana + экспортер

Google

yopp
18.01.2018
20:33:24
там даже готовые дешборды есть,
но вообще надо просто увеличить размер оплога

Artem
18.01.2018
20:33:55
Не поверишь, так и делаю.

yopp
18.01.2018
20:34:40
а зачем бекапные ноды отстают?
вы же знаете что ваши бекапы сломанные, если это в шардед кластере?
Sharding
In sharded clusters, delayed members have limited utility when the balancer is enabled. Because delayed members replicate chunk migrations with a delay, the state of delayed members in a sharded cluster are not useful for recovering to a previous state of the sharded cluster if any migrations occur during the delay window.
https://docs.mongodb.com/manual/core/replica-set-delayed-member/#sharding

Artem
18.01.2018
20:38:20
мин, ща за нормальную клаву пересяду.
а зачем бекапные ноды отстают?
идея была в следующем, отставание бэкапных нод сделано было для того что бы можно было вытащить по горячим следам удаленные документы, в течении часа. Балансировка происходит ночью, в течении семичасового окна, а в дневное рабочее время можно было бы воспользоваться в случае необходимости быстрого восстановления, отстающими нодами
но сейчас, я практически везде делей убрал

yopp
18.01.2018
20:43:42
вообще делейд ноды в шрадед кластере это очень кривая забава, такие гипотезы надо проверять на копии боевых данных и желательно симулиря боевые нагрузочные условия
так как например два часа с момента запуска балансировки уже выпадают
делать бекапы с этих нод надо очень аккуратно и есть очень высокая вероятность получить неконсистентные бекапы которые потом в бой будет очень дорого выкатить.
вообще бекапить шардед кластер сложновато

Artem
18.01.2018
20:45:36

yopp
18.01.2018
20:46:08
по плейбуку из доки, с маркерами?

Artem
18.01.2018
20:46:20
не запись, путаюсь в терминах, репликация.

yopp
18.01.2018
20:46:51
если это не по плейбуку сделано, то надо изучить плейбук и переделать как там написано
дожидаться завершения репликации до маркера нодами с которых снимается снепшот, не забывать тоже самое делать в CSRS
убеждаться что балансер и выключен и не активен

Google

Artem
18.01.2018
20:48:45

yopp
18.01.2018
20:48:47
под большой нагрузкой выключение балансера != завершению работы балансера
https://docs.mongodb.com/manual/tutorial/backup-sharded-cluster-with-filesystem-snapshots/
И да, вот это:
IMPORTANT
To capture a point-in-time backup from a sharded cluster you must stop all writes to the cluster. On a running production system, you can only capture an approximation of point-in-time snapshot.
Всё ещё актуально

Artem
18.01.2018
20:52:22

yopp
18.01.2018
20:53:31
ну вот тогда надо сделать risk assesment вашего бекапа
но вообще, большой и жырный кластер в большинстве случаев нужно логически поделить по ценности и критичности для бизнеса и не бекапить всё
скорее всего окажется что реально кричных данных пару сотен гигов, а всё остальное можно не бекапить, а просто хорошенько резирвировать
а что у вас там с такими размерами, что оплога хватает на 5-10 минут?
gridfs?
или что-то с высокой частотой обновления?
RTB там какой

Serge
18.01.2018
21:54:52

eshch
18.01.2018
21:59:23
stop the world

Serge
18.01.2018
22:03:49
В каком городе вам было бы удобнее всего посетить MongoDB митап?
Москве – 19
??????? 28%
Санкт-Петербург – 16
?????? 24%
Всё это далеко от меня – 12
???? 18%
Киев – 6
?? 9%
Владивосток – 4
? 6%
Ростов-на-Дону – 4
? 6%
Екатеринбург – 3
? 4%
Минск – 3
? 4%
Воронеж – 1
▫️ 1%
Астана
▫️ 0%
? 68 people voted so far.

Google

Dmitry
18.01.2018
22:37:25

Alexander
19.01.2018
04:26:59
парни, а в mongoose можно в схеме определить тип массив и чтобы допустимые значения были ограничены данными из массива?
о! или валидатор проще прикрутить?

IGOR
19.01.2018
05:24:04
У меня очень интересный вопрос. Как Монго воспринимает пустую строку в отношении занятого места?
Что "экономнее" хранить, пустую строку типа '' или null ?
Этот вопрос родился когда я увидел что база в SQL занимает 130 кб, а в Монго 6 мегабайт. Пустые строки есть и их прилично, вот и подумал

Alexander
19.01.2018
06:07:16
NULL - 1 байт
"" = 2 байта

IGOR
19.01.2018
06:20:35

Alexander
19.01.2018
06:21:14
https://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=GSQL_langelements_null
Since a NULL truly has no value, appending a blank to it creates a string of length 1. But an empty string does have a character value, so appending a blank to it creates a string of length 2

Mykola
19.01.2018
06:31:28
Кто сталкивался. Почему может JSON приходить в противоположной очерености ?.
Да, но всегда возвращало одинаково и теперь поменялось. Что может быть причиной ?.

Alexander
19.01.2018
06:50:52
python?

Mykola
19.01.2018
06:55:10
Node
Пробывал в разных браузерах и разных JSON formator extension

GNU/Docker
19.01.2018
07:52:19
Эм.