Nick
неважно кто вылетает, если осталось (N+1)/2 живых нод то все работает, если меньше - кластер останавливается
ASPIRIN
т.е. они между собой решат кто будет мастером?
Nick
да
ASPIRIN
а арбитр только ускоряет решение?
Nick
нет, он нужен для кворума
ASPIRIN
т.е. я могу обеспечить кворум без него?
Nick
да, любое нечетное число нод с данными
ASPIRIN
но при этом они будут сами решать кто мастер на каждом запросе или они опрашивают друг друга?
ASPIRIN
спасибо, за ответы
ASPIRIN
а что по поводу читать со слейвов, я так понимаю в стандратной настройки читать с них нельзя?
ASPIRIN
например если у меня много операций чтения и я хочу их размазать по серверам
Petro
Может кто подсказать, для чего нужны views? Улучшают ли они производительность. Как вообще работают views? Если я делаю lookup с view он запускает view pipeline?
yopp
Но эта практика не рекомендуется авторами монги, они предлагают масштабировать через шардирование
yopp
Есть несколько исключений из этой рекомендации
Alex
А вот про эти исключение можно где-то подробнее прочитать?
Meowbe/BSD-2-Clause
Приветствую, господа хорошие, и сразу вопрос: вставляется 200к документов, монга откусывает 2 гига оперативки. После перезапуска и вставки ещё ~10к откусывает теперь 1.3 гига. Вопрос: куда ухожит оперативка и чем ограничивать её потребление проще всего?
Meowbe/BSD-2-Clause
storage.wiredTiger.engineConfig.cacheSizeGB видимо
Meowbe/BSD-2-Clause
попробую сделать его меньше
Max
Вообще это лучше не делать монга с памятью знает, как работать. Эту крутилку надо крутить или в случае, если монга в контейнере и не вся видимая память доступна, или же ее и правда надо придушить, чтобы не мешала другим сервисам.
Meowbe/BSD-2-Clause
Написано что берёт половину - 1 гиг памяти
Meowbe/BSD-2-Clause
И да, душит
Meowbe/BSD-2-Clause
Meowbe/BSD-2-Clause
Выставил в 0.5 и кажется больше чем 500мб не растёт
Meowbe/BSD-2-Clause
Спасибо!
Vitaly
👍
Peter
Всем привет! Кто-нибудь знает как реализовать фичу "прочитано"/"не прочитано" для новости, как это должно выглядеть на сервере?
White2Demon
ты новость в каком виде хранишь?
White2Demon
я реализовывал через boolean столбец в бд
Ilya
я так понимаю тут для каждого пользователя надо сделать просмотренна или нет
Peter
да, для каждого пользователя.
Peter
вот я не могу поняьт как правильно организовать
yopp
Какое количество новостей и какое количество пользователей?
yopp
Какой ежемесячный прирост?
Nick
если для каждого пользователя, то это ойкак не тривиально будет
Nick
правда если пользователей не 10 штук)))
Vitaly
вот я не могу поняьт как правильно организовать
вот такая статья есть. Олдовая, но может поможет: https://habr.com/company/dataart/blog/242593/
Peter
как вы думаете, допустимо ли хранить информацию о прочитанных/не прочитанных новостях на клиенте, в кеше или в памяти устройства?
Peter
главное что-бы инфа после перезапуска приложения оставалась
Vitaly
ну если кешировать в сторадже клиента, то, наверное, можно
Denis
Всем привет! Подскажите пожалуйста ответ на такой вопрос. У меня есть монга в реплика-сет. Можно как нибудь конектится к этой реплике на прямую?
Denis
у меня проблема, что после сбоя, меняется мастер в кластере, а сервис конектится к слейву и не может туда записать данные
Denis
Помогает только в ручную указание мастера через консоль
ㅤㅤㅤㅤㅤ
how to make replication in mongodb?
Denis
how to make replication in mongodb?
I use mongodb-replicaset in k8s cluster.
Slava
у меня проблема, что после сбоя, меняется мастер в кластере, а сервис конектится к слейву и не может туда записать данные
а какой драйвер используете? просто не припомню такого поведения например в .net\go драйверах
Denis
а какой драйвер используете? просто не припомню такого поведения например в .net\go драйверах
А вот тут извиняюсь не могу правильно ответить на вопрос. Используется в приложении библиотека pymongo, которая коннектится к монге по адресу типа mongodb.local:2017
Slava
Если у вас реплика сет, то необходимо указывать все ноды
Denis
Если у вас реплика сет, то необходимо указывать все ноды
Понял. Имеется в виду после этого приложение будет само выбирать мастер ноду из всех нод членов реплики и конектится туда?
Denis
Понял спасибо.Будем думать!
Nikolas
а монгос на что? если через него пускать не правильней?
Sebor▂▅▇█▓▒░
Так он же вроде только для шаренного кластера?
Evgeny
Здарова парни! Подскажите, пожалуйста, можно ли в монге построить запрос так, что бы результаты были отсортированы по предустановленному списку. Типа так: В БД есть apple, pear, orange. Я хочу чтобы в ответе мне пришли сначала все pear, потом все apple, и потом все orange. Здесь обычный .sort({type: 1}) не подойдет. А по другому я не оч умею. И еще связанный с этим вопрос. Хочу что бы мне в ответе пришли все pear, но если ни одного pear не найдено, то тогда все apple, а если и их не найдено, то тогда все orange. Здесь я вижу решение - со стороны ноды проверять результат, и посылать следующий запрос, если предыдущий ничего не вернул. А можно ли сделать это одним запросом?
Ruslan
Это все разные коллекции?
Yurii
Здарова парни! Подскажите, пожалуйста, можно ли в монге построить запрос так, что бы результаты были отсортированы по предустановленному списку. Типа так: В БД есть apple, pear, orange. Я хочу чтобы в ответе мне пришли сначала все pear, потом все apple, и потом все orange. Здесь обычный .sort({type: 1}) не подойдет. А по другому я не оч умею. И еще связанный с этим вопрос. Хочу что бы мне в ответе пришли все pear, но если ни одного pear не найдено, то тогда все apple, а если и их не найдено, то тогда все orange. Здесь я вижу решение - со стороны ноды проверять результат, и посылать следующий запрос, если предыдущий ничего не вернул. А можно ли сделать это одним запросом?
aggregation framework + facet (https://docs.mongodb.com/manual/reference/operator/aggregation/facet/) и сразу сделать паралельно необходымие расчёты, а потом с на этапе project отсеять ненужные. Но это сложный путь. 1 запрос, но кучу гемора. Проще действительно разрулить все на уровне ноды и нескольких запросов…
Evgeny
Это все разные коллекции?
Это одна коллекция fruits, допустим. с документами типа {type: 'apple', someParam: 1, ... }
Ruslan
А чем тебя не устраивает сортировка по типу?
Evgeny
если именно .sort({type: 1}), то будет не правильный порядок
Evgeny
Мне нужен свой, заранее определенный: pear, apple, orange
Ruslan
А, ну да, только $facet
Evgeny
Буду на уровне ноды решать. Спасибо за ответы)
Roman
Подскажите логи хранить в монге это нормально?
Nick
хранить - да, обрабатывать - нет
Nick
ну и опять же если вы сначала логи приводите к определнному виду, по которому уже можно построить вменяемые запросы, которые вы уже все определили, то почему бы и нет. но про фултекст забудьте
yopp
как вы думаете, допустимо ли хранить информацию о прочитанных/не прочитанных новостях на клиенте, в кеше или в памяти устройства?
Это доставит адскую боль пользователям с несколькими устройcтвами или вам придётся решать проблему синхронизации между клиентами. А это нетривиально.
yopp
Я ещё раз задам вопрос: о каком объёме новостей и каком количестве пользователей идёт речь? Не обязательно точные цифры, порядка будет достаточно
Roman
хранить - да, обрабатывать - нет
ну посути зачем фулл текст? в случаи чего посмотреть кто что менял и возможно откатить данные