@MongoDBRussian

Страница 301 из 342
rdcm
10.09.2018
00:11:54
Всем привет. Есть проблемный кейс с транзакцией в 4.0. Делаю ~10 параллельных запрсов на запись, часть падает с 500. На каждый http запрос на монго клиенте стартую новую сессию и на ней уже стартую транзакцию. Часть запросов падает с MongoWriteException, стэк трейса под рукой нет. Если запросы идут последовательно всё ок. Есть подозрение, что время жизни сессии per request некорректно. https://docs.mongodb.com/manual/reference/method/Session/ https://docs.mongodb.com/manual/reference/method/Session.startTransaction/

Кто-нибудь сталкивался уже с таким? .net driver

Naught
10.09.2018
03:02:35
подскажите, есть запущенная монга на сервере (просто демоном без спецификации db-path) и база на mlab. Хочу перенести из mlab на сервер, mlab предлагает команду mongorestore, пытаюсь её без указания директории использовать - ругается. Как посоветуете поступить? Команда: mongorestore -h lolkek.mlab.com:123456 -d dbname -u <user> -p <password> <input db directory> Говорит: 2018-09-10T05:00:05.286+0200 the --db and --collection args should only be used when restoring from a BSON file. Other uses are deprecated and will not exist in the future; use --nsInclude instead 2018-09-10T05:00:05.287+0200 using default 'dump' directory 2018-09-10T05:00:05.287+0200 see mongorestore --help for usage information 2018-09-10T05:00:05.287+0200 Failed: mongorestore target 'dump' invalid: stat dump: no such file or directory

Artem
10.09.2018
06:01:20
а если предварительно экспортировать через mongodump?

Google
Vova
10.09.2018
07:00:09
Кто-нибудь сталкивался уже с таким? .net driver
Полагаю что у тебя падает с ошибкой из-за одинаковых индексов. Ты айди сам считаешь или их создаёт монга?

rdcm
10.09.2018
07:26:07
Полагаю что у тебя падает с ошибкой из-за одинаковых индексов. Ты айди сам считаешь или их создаёт монга?
Тот же код работает при последовательном выполнении. Одинаковых индексов? _id вычисляю сам

Vova
10.09.2018
07:26:53
Кинь код в лс, может замечу что-то

another
10.09.2018
07:53:55
Привет, есть простой способ запустить докер с монгой с поддержкой Replica sets?

для того что бы слушать ивенты

дополнительных нод не нужно

rdcm
10.09.2018
07:57:30
Кинь код в лс, может замечу что-то
стектрейс: https://pastebin.com/8NjxAVwU код: https://pastebin.com/aqbRKzur

Vova
10.09.2018
08:05:22
стектрейс: https://pastebin.com/8NjxAVwU код: https://pastebin.com/aqbRKzur
Write conflicts indicates that multiple clients are trying to update exactly the same document within the same fraction of a second. This window is the time between the execution of the WiredTiger API's WT_SESSION::begin_transaction()and WT_SESSION::commit_transaction() operations.

rdcm
10.09.2018
08:15:51
ок, да у меня действительно есть поле с "ids": ["id_1..", "id_2..", "id_3.." ...] и к нему конкуретный доступ на обновление с оптимистик канкаренси у монги тоже всё понятно это получается надо хэндлить этот эксепшен и ретраить или есть более человечные сопсобы?

ну т.е. документ-то в итоге надо обновить ?

Vova
10.09.2018
08:21:02
В рамках одной сессии обновляй всё что нужно

Google
rdcm
10.09.2018
08:25:28
у меня сейчас ссессия стартует на каждый http запрос и в ёё рамках траназкция обновляет всё что нужно но конфликт видимо возникает на стороне монги короче кроме такого решения я ничего придумать не могу https://stackoverflow.com/questions/33928136/mongodb-optimistic-concurrency-control-with-net

но мне казалось у тразакций это под капотом должно быть реализовано ?

rdcm
10.09.2018
08:38:59
две коллекции, у документов одной FK на документы из другой

Nick
10.09.2018
08:41:48
так а что делается то?

rdcm
10.09.2018
08:45:01
добавляется новый FK, вставляется новый документ во вторую коллекцию

Иван
10.09.2018
08:45:12
Ребят помогите советом) у меня регулярно дропается монга не понятно почему просто стираются все данные без всяких ошибок и тд как можно узнать какого хрена это происходит?))))

Constantin
10.09.2018
08:46:31
Перезапуск контейнера и досвидания все данные

Иван
10.09.2018
08:46:48
скорее всего база без аутентификации смотрит в интернет и ее дропают злобные хакеры
фак, рили? а то что на ВПС у меня fail2ban + логин\пасс?? или доступ в базу не зависит от доступа к ВПСке?

Иван
10.09.2018
08:47:48
Еще может быть запущена в контейнере без монтирования раздела снаружи.
пока не знаю что такое контейнер, вряд ли он у меня вообще есть??

yopp
10.09.2018
08:53:16
Всем привет. Коллеги, не сочтите троллем. Изучаю монгодб, не могу понять когда его стоит использовать вместо mysql\postgres и собственно почему. Это равноценная замена или в каких-то задачах монго непревзойден?
За исключением резервного копирования шардированного кластера — монга имеет очень низкий операционный оверхед. Automatic Failover (был) лучшим на рынке. У монги очень низкий порог вхождения для разработчиков. Основные принципы даются часов за 8. На мой взгляд, за счёт возможности выбрать ключ, шардинг имеет больше гибкости чем другие базы где ключ или его тип уже зафиксированы. Ну и зоны отличная вещь.

В плане хранения данных: с 4.0 уже нет разницы. С 4.2 когда транзакции будут и в шарде работать, монга будет отличным повседневным решением. Но если у вас данные с высокой степенью связанности и высокой нормализацией, монга так себе решение. Как и для всяких графов

Документные хранилища хороши и плохи своей гибкостью. Вы можете моделировать очень сложные структуры и принципы хранения.

pplcf
10.09.2018
09:16:13
хорошо расписал

rdcm
10.09.2018
10:45:43
ну я бы только накинул, что низкий порог вхождения и все плюшки не гарантируют хороший проект на выходе :) если у администраторов нет желания разбираться в особенностях сопровождения, а у разработчиков нет желания моделить данные, так как это предлагают гайды mongodb

https://stackoverflow.com/questions/33928136/mongodb-optimistic-concurrency-control-with-net оптимисчтичная блокировка решила мою проблему пока, вечером буду смотреть почему транзакция не хочет делать тоже самое ?

Google
AstraSerg
10.09.2018
10:51:09
Привет, есть простой способ запустить докер с монгой с поддержкой Replica sets?
никаких проблем. Вот официальный образ: https://hub.docker.com/_/mongo/

yopp
10.09.2018
10:54:42
ну я бы только накинул, что низкий порог вхождения и все плюшки не гарантируют хороший проект на выходе :) если у администраторов нет желания разбираться в особенностях сопровождения, а у разработчиков нет желания моделить данные, так как это предлагают гайды mongodb
Инструменты никакого существенного влияния на качество результата не оказывают. Результат можно получить и некачественными инструментами, а не получить и качественными. Если в команде нет «желания» это не к инструменту вопрос, а к процессам и руководству

rdcm
10.09.2018
10:55:29
c mongo проще ошибиться, это факт

yopp
10.09.2018
10:55:51
дайте данные чтоб говорить про «факт»

ошибиться можно с любым инструментом

и даже не можно, а нужно

ошибки это единственный способ обучения

AstraSerg
10.09.2018
10:57:00
rdcm наверно имеет ввиду, что на высоком пороге входа отсеится больше неграмотных специалистов.

rdcm
10.09.2018
10:57:30
не совсем так, но ближе к делу

yopp
10.09.2018
10:57:36
и останется три человека с рейтом в три тысячи евро в чаc ;)

AstraSerg
10.09.2018
10:57:52
ошибки это единственный способ обучения
Есть ещё один не плохой способ изучения: самому начать обучать ;)

Vova
10.09.2018
10:58:07
В .NET Driver как пометить поле _id для свойства модели? [BsonId] будет распространяться на это: Builders<Model>.Filter.Eq("_id", "my id") Или оно распространяется только на сериализацию BsonDocument?

yopp
10.09.2018
10:58:21
без практического эксплутационного опыта, можно хоть заобучаться

AstraSerg
10.09.2018
10:59:33
без практического эксплутационного опыта, можно хоть заобучаться
Согласен, но я не об этом. Я вот это имел ввиду: https://en.wikipedia.org/wiki/Learning_by_teaching

rdcm
10.09.2018
10:59:35
там есть BsonClassMap

или можно атрибутом

[Anonymous]
10.09.2018
11:31:06
подскажите, когда лучше делать связи между коллекциями, а когда можно просто пихать одну коллекцию в другую? Например комментарии.. Лучше сделать отдельную коллекцию для них или нет?

AstraSerg
10.09.2018
11:36:53
а с обновлением проблем не будет?
В каком случае? :) Я к тому, что оба подхода имеют свои плюсы и минусы :)

Google
[Anonymous]
10.09.2018
11:37:43
В каком случае? :) Я к тому, что оба подхода имеют свои плюсы и минусы :)
ну если коменты у меня прямо в документе с постом то как обновить комент? Придется и id комента и поста передавать

AstraSerg
10.09.2018
11:47:19
с комментами настолько общее место, что даже доку написали :) И в универе это рассказывают

rdcm
10.09.2018
11:49:57
если захочешь допустим искать самый топовый комментарий дня, то в отдельной коллекции

another
10.09.2018
11:55:29
никаких проблем. Вот официальный образ: https://hub.docker.com/_/mongo/
там ведь нет образов поддерживающих(сконфигурированных) replication sets

rdcm
10.09.2018
12:00:55
https://pastebin.com/WDZVVvps

не благодарите ) но docker-compose надо составить самому

Constantin
10.09.2018
12:06:40
там ведь нет образов поддерживающих(сконфигурированных) replication sets
Это уже к системе управления конфигурацией, вроде ansible, chief, ну или docker-compose как говорит rdcm

yopp
10.09.2018
12:07:12
без докера есть http://blog.rueckstiess.com/mtools/mlaunch.html

и мой совет: не стоит автоматизировать раскатываение кластера в продакшене

yopp
10.09.2018
12:08:56
у вас сотни машин?

у нас в чяте есть кто-то с сотней нод?

Constantin
10.09.2018
12:09:11
у вас сотни машин?
У меня нет, но знаю ребят у которых сотни, не машин, а контейнеров правда

yopp
10.09.2018
12:10:07
они уже купили ops manager?

Constantin
10.09.2018
12:10:19
Там размазанный по континенту кластер

они уже купили ops manager?
я без понятия, если честно

yopp
10.09.2018
12:10:39
вероятнее всего у них автоматизирован провижининг, но основные операции они делают руками

Google
Constantin
10.09.2018
12:11:53
вероятнее всего у них автоматизирован провижининг, но основные операции они делают руками
Да, скорее всего так. Вроде через Ansible еще миграции накатывают, но могу ошибаться

yopp
10.09.2018
12:12:24
автоматизация конфигурации — адски сложная задача и я ещё не встречал ни одной успешной реализации

кроме atlas :D

rdcm
10.09.2018
12:16:25
и мой совет: не стоит автоматизировать раскатываение кластера в продакшене
вредный совет) я даже три виртуалки устал конфигурировать под репликасет один раз написал скрипты для ansible, всё стало гораздо проще но есть нюансы конечно

yopp
10.09.2018
12:17:46
конфигурирование кластера и провижининг нод это разные вещи

провижининг очень легко автоматизируется

а вот автоматическое добавление нод в кластер это дорога к потерянным данным

yopp
10.09.2018
12:18:52
особенно если это прикручивать к всяким шедулерам

Constantin
10.09.2018
12:19:21
а вот автоматическое добавление нод в кластер это дорога к потерянным данным
Ну кто-то же использует монгу в кубернетесе, а там только автоматикой все можно делать, иначе поды не заведутся? (хотя сам я далеко не DevOps инженер, и реальной эксплуатации кубернетеса не имел)

yopp
10.09.2018
12:20:03
я сомневаюсь что там что-то сложное

rdcm
10.09.2018
12:21:22
А используете нативный mongo через модуль shell + changed_when? Или какой-то доп-модуль ставите?
первое, но есть желание попробовать более человечные модули

Banschikov
10.09.2018
12:25:39
yopp
10.09.2018
12:25:54
я использую монгу в k8s
в какой топологии?

Banschikov
10.09.2018
12:26:20
в какой топологии?
типичная replicaset

в какой топологии?
если интересно, то погугли реализацию helm k8s chart

yopp
10.09.2018
12:28:54
я про него слышал, но я сомневаюсь в надёжности такого решения

Banschikov
10.09.2018
12:29:40
я про него слышал, но я сомневаюсь в надёжности такого решения
люди в продакшене используют долгое время. А что не так?

yopp
10.09.2018
12:31:12
ну например упавший агент, который триггерит фейловер с деплоем новой ноды, при том, что нода жива

или у нас отъехал шард, шедуллер решил его снова развернуть

Banschikov
10.09.2018
12:33:01
ну например упавший агент, который триггерит фейловер с деплоем новой ноды, при том, что нода жива
не совсем понимаю тебя о чем сейчас говорим. Наверное о разных вещах

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