@MongoDBRussian

Страница 331 из 342
Maxim
16.10.2018
11:46:02
то есть +1 поля в коллекции с индексом

Google
Maxim
16.10.2018
11:46:08
ок, спасибо, согласен

Oleg
16.10.2018
11:47:35
@yurii_chikhrai что не так?

yopp
16.10.2018
11:48:28
ок, спасибо, согласен
более того, не обязательно чтоб этот код бы уникальным :)

yopp
16.10.2018
11:49:36
зачем?

Maxim
16.10.2018
11:50:08
зачем?
ну что бы однозначно идентифицировать сущность не использую других полей

Yurii
16.10.2018
11:50:39
@yurii_chikhrai что не так?
а монга у тебя какая?

Maxim
16.10.2018
11:50:46
зачем?
или я не прав?

Oleg
16.10.2018
11:51:17
Yurii
16.10.2018
11:51:46
3.2.19
а работаешь по этой документации, верно?

Nick
16.10.2018
11:51:58
@dd_bb обнови в пине версию монги 4.0.3

Oleg
16.10.2018
11:52:06
Google
Maxim
16.10.2018
11:52:08
зачем? :)
для серча

Yurii
16.10.2018
11:52:24
а работаешь по этой документации, верно?
это для 3.6, в 3.2 другой синтаксис

3.2.19
точнее там нет возможности передать таймзону

yopp
16.10.2018
11:53:20
Stable: 4.0.3 (Oct 9, 2018) Bugfix: 3.6.8 (Sep 19, 2018), Legacy: 3.4.17 (Sep 7, 2018) MongoDB quick overview/production notes: https://www.percona.com/live/e17/sites/default/files/slides/Running%20MongoDB%20in%20Production%20-%20FileId%20-%20115299.pdf 4.0.3: https://docs.mongodb.com/manual/release-notes/4.0/#oct-9-2018 3.6.8: https://docs.mongodb.com/manual/release-notes/3.6/#sep-19-2018 3.4.17: https://docs.mongodb.com/manual/release-notes/3.4/#sep-7-2018 End of life: 3.2.21 (Sep 2018 / Sep 2018), 3.0.15 (May 2015 / Feb 2018)

Oleg
16.10.2018
11:53:34
А что может быть плохого, если с 3.2 обновиться до 3.6?

Yurii
16.10.2018
11:54:59
А что может быть плохого, если с 3.2 обновиться до 3.6?
посмотри мануал по миграции, там есть нюанс с конфигом, а так разницы не заметишь

Yurii
16.10.2018
11:56:18
Спасибо, Юра!
https://docs.mongodb.com/manual/release-notes/3.6-upgrade-standalone/ вот, надо featureCompatibilityVersion обновить

yopp
16.10.2018
11:57:09
для серча
в целом, эти все номера — дурацкая затея

Maxim
16.10.2018
11:57:25
бизнес логику я описал выше - вполне адекватная

yopp
16.10.2018
11:57:37
правильно не требовать от пользователя тренировать память :)

не знаю что у вас там за поездки, но обычно самая классическая проблема: сел телефон. скорее всего вместе с подтверждением. а я хочу через телефонную поддержку изменить место откуда меня забрать

вообще, мне кажется что начать стоит с разговоров со службой поддержки, узнав как у них вообще это происходит. если службы поддержки нет, то вообще не тратить на эту фигню время. убедится что пользователей можно искать по имейлу или номеру телефона и что поддержке будут видны поездки

Constantin
16.10.2018
12:00:36
состояние когда нода выпала за оплог разрешается с помощью inital sync. это просто копирование данных и последующее накатывание на них оплога
Спасибо! А можете подсказать где в документации почитать про механизм внутреннего устройства подробнее, событий которые возникают между праймари и секондари, и тем как решаются проблемы такого рода.

Constantin
16.10.2018
12:02:24
устройства чего?
Общения праймари и секондари, и какие RPC между ними ходят

yopp
16.10.2018
12:02:45
https://github.com/mongodb/mongo/wiki/Replication-Internals

нет никакого rpc

Google
yopp
16.10.2018
12:02:58
есть дубовый wire protocol

и не очень дубовый мезанизм консенсуса топологии

вам это зачем вообще?

в 99.9% случаев это не стоит читать вообще :)

монга по сути делает mongorestore из соседней ноды, это всё что стоит об этом знать

yopp
16.10.2018
12:06:27
предложите закачику экономить время и деньги

Constantin
16.10.2018
12:18:40
вам это зачем вообще?
Мне нужно сделать репликацию журнала в одном проекте, без внешних зависимостей

Constantin
16.10.2018
12:19:34
репликацию оплога?
Не, внутренней структуры данных. Я почти сделал Raft, но мне не хотелось бы хранить весь журнал, чтобы при подключении нод его на них реплицировать. Мне стало интересно, как это сделано в MongoDB, но в документации не нашел. Не додумался на Github зайти Да и в целом интересно, как оно там все внутри работает. Благодаря вам, узнал немного нового.

Gleb
16.10.2018
12:20:59
Подскажите плс по проду для небольшого проекта со средней нагрузкой, нормальная ли практика использовать один инстанс монги с разными БД, или сделать отдельные инстансы на критически важные данные? Архитектура микросервисная, возможности делать технически сложный деплой нет.

Gleb
16.10.2018
12:22:11
это я понял, но не понял что имеется в виду под БД - инстанс монги, или БД?

Mishell
16.10.2018
12:22:55
Здравствуйте. Использую Mongoose. Мне нужно найти все документы с определенным кошельком компании, и изменить его. Я сейчас попробовал вот такую функцию. await this.updateMany({ company_wallet: wallet_to_change }, { company_wallet: company_wallet.toLowerCase(), $push: { company_wallets: company_wallet.toLowerCase() } }, { new: true }) Но кажется updateMany не подходит, он не изменил документы. Какой метод мне следует использовать для массового обновления документов?

Gleb
16.10.2018
12:22:55
сейчас так и есть - на каждый сервис идет отдельный монго контейнер, но не ту мач ли это?

Constantin
16.10.2018
12:23:26
Constantin
16.10.2018
12:24:24
рафт это же механизм консенсуса, а не репликации
Консенсус предполагает реплкацию журнала действий внутри автомата. То есть по сути есть состояние, мы реплицируем действия на Folower'ов, они меняют состояние внутри себя также, как и Leader

Gleb
16.10.2018
12:25:55
Можно сделать один инстанс (или репликасет) на все.
спасибо, развеяли мои сомнения) читал про репликасет - ужасно сложно на первый взгляд

Constantin
16.10.2018
12:26:23
спасибо, развеяли мои сомнения) читал про репликасет - ужасно сложно на первый взгляд
Разложить приложение по куче контейнеров сложнее. Монга может даже не жить в контейнерах

Google
Constantin
16.10.2018
12:26:59
рафт это же механизм консенсуса, а не репликации
Там несколько частей: Leader Election, Log replication, и safety

yopp
16.10.2018
12:27:27
потому что делать свою репликацию, это путь вникуда. оно конечно прикольно, но сделать это надёжным это сотни человеколет

а нафига нужна репликация, которая ненадёжная

либо любую другую подходящую базу или зукипера или что-то ещё, что работает

Constantin
16.10.2018
12:29:19
либо любую другую подходящую базу или зукипера или что-то ещё, что работает
Это мини-сервис, где лишнюю зависимость не хочется тянуть. Raft как раз решает много проблем с репликацией, мне хочется уложиться в килобайты, а не мегабайты.

Nick
16.10.2018
12:29:36
сейчас так и есть - на каждый сервис идет отдельный монго контейнер, но не ту мач ли это?
задайте себе вопрос - возможна ли такая ситуация, что конкретно одна база, среди 10 на инстансе требует обновления БД, а остальыне не допускают даунтайма. Если такое может произойти - вам на каждуй микросервис - свой инстанс монги

yopp
16.10.2018
12:29:48
синхронизация состояний в распределенных системах это одна из самых сложных технических задач

на уровне токомавка

Gleb
16.10.2018
12:31:56
задайте себе вопрос - возможна ли такая ситуация, что конкретно одна база, среди 10 на инстансе требует обновления БД, а остальыне не допускают даунтайма. Если такое может произойти - вам на каждуй микросервис - свой инстанс монги
да, такое возможно. а как лучше деплоить такое количество инстансов тогда, какой best practice? если еще и реплику на особоважные делать - это же крышеснос будет

Constantin
16.10.2018
12:32:19
синхронизация состояний в распределенных системах это одна из самых сложных технических задач
Тем интереснее попрактиковаться в ее решении. Это же спортивный интерес скорее.

Gleb
16.10.2018
12:32:43
если это дял вас сложно - то тогда пилите монолит
для монолита уже поздно, все готово)

yopp
16.10.2018
12:32:49
Тем интереснее попрактиковаться в ее решении. Это же спортивный интерес скорее.
если это какое-то продуктивное решение, этого не стоит делать. примерно как свою криптографию

Nick
16.10.2018
12:33:31
для монолита уже поздно, все готово)
вообще деплой и все остальное это нужно у народа спрашивать, тут я особо не помогу

Constantin
16.10.2018
12:34:02
если это какое-то продуктивное решение, этого не стоит делать. примерно как свою криптографию
Да так-то да. Можно взять Consul, у него реализованный Raft с репликацией журнала из коробки

Gleb
16.10.2018
12:34:12
вообще деплой и все остальное это нужно у народа спрашивать, тут я особо не помогу
в любом случае спасибо! буду искать решение для множества инстансов

yopp
16.10.2018
12:34:45
Google
Constantin
16.10.2018
12:34:50
вот как раз тоже консул собираюсь использовать
Это я не вам писал, но похвально =)

в любом случае спасибо! буду искать решение для множества инстансов
Попробуйте на «бумаге» схематично изобразить. Выберите сервисы для которых может быть одна монга, выберете те, для которых нужна разная. Когда разобьете на категории, станет проще. Можно UML Deploy диаграммой изобразить, я обычно с этого начинаю в таких «затупах»

Constantin
16.10.2018
12:39:16
Спасибо, попробую!
Можете в чат к девопсерам сходить @ru_devops и @devops_ru, это скорее задача из их области

Gleb
16.10.2018
12:43:45
Можете в чат к девопсерам сходить @ru_devops и @devops_ru, это скорее задача из их области
Спасибо, да, вопросов по проду очень много конечно. Жалко в сети немного готовых решений на основе которых можно было бы учиться. В основном всё подразумевает доработку.

Constantin
16.10.2018
12:45:09
Спасибо, да, вопросов по проду очень много конечно. Жалко в сети немного готовых решений на основе которых можно было бы учиться. В основном всё подразумевает доработку.
Никогда не будет готовых универсальных решений, если только речь не о блоге на Wordpress. Никто не знает внутренностей вашего проекта лучше вас. Нужно больше уверенности и смелости. Если проект еще небольшой, пользователей не очень много и не понятно выстрелит или нет, цена ошибки в проде маленькая.

Oleg
16.10.2018
12:50:23
db.getCollection('payments').aggregate([ { "$match": {status: 'paid'} }, { "$group": { "_id": null, "total": {"$sum": ["$amount", "$credentials.WMI_COMMISSION_AMOUNT"]} } } ]) Как вывести общую сумму оплат с вычетом комиссии, которая находится в credentials.WMI_COMMISSION_AMOUNT? При таком запросе ошибка: Error: Assert: command failed: { "ok" : 0, "errmsg" : "aggregating group operators are unary ($sum)", "code" : 15953 } : aggregate failed

Bo0m4ik
16.10.2018
15:08:14
Добрый день! подскажите плз, хочу использовать реплика сет впервые, но не могу определиться с выбором дистрибутива linux

какой лучше всео подойдет?

Maksim
16.10.2018
15:11:26
Bo0m4ik
16.10.2018
15:11:40
хороший ответ

Maksim
16.10.2018
15:11:57
Дебиан убунту центось

Разницы нету

Bo0m4ik
16.10.2018
15:12:17
Maksim
16.10.2018
15:12:36
Убунту проще всего лтс

Bo0m4ik
16.10.2018
15:13:01
ну я думаю 18,04 ставить

Maksim
16.10.2018
15:15:51
Хороший выбор

Страница 331 из 342