
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

AstraSerg
10.09.2018
07:00:59


rdcm
10.09.2018
07:26:07

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

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

rdcm
10.09.2018
07:57:30

Vova
10.09.2018
08:05:22

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
но мне казалось у тразакций это под капотом должно быть реализовано ?

Nick
10.09.2018
08:37:55

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
Ребят помогите советом)
у меня регулярно дропается монга
не понятно почему
просто стираются все данные без всяких ошибок и тд
как можно узнать какого хрена это происходит?))))

Viktor
10.09.2018
08:45:32

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

Иван
10.09.2018
08:46:48

Viktor
10.09.2018
08:47:08

Constantin
10.09.2018
08:47:13

Иван
10.09.2018
08:47:48

yopp
10.09.2018
08:53:16
В плане хранения данных: с 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

yopp
10.09.2018
10:54:42

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

rdcm
10.09.2018
10:59:35
там есть BsonClassMap
или можно атрибутом

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

AstraSerg
10.09.2018
11:32:17

[Anonymous]
10.09.2018
11:34:18

AstraSerg
10.09.2018
11:36:53

Google

[Anonymous]
10.09.2018
11:37:43

Alexander
10.09.2018
11:37:52

yopp
10.09.2018
11:42:29

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

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

another
10.09.2018
11:55:29

rdcm
10.09.2018
12:00:55
https://pastebin.com/WDZVVvps
не благодарите ) но docker-compose надо составить самому

Constantin
10.09.2018
12:06:40

yopp
10.09.2018
12:07:12
без докера есть http://blog.rueckstiess.com/mtools/mlaunch.html
и мой совет: не стоит автоматизировать раскатываение кластера в продакшене

Constantin
10.09.2018
12:08:24

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
Там размазанный по континенту кластер

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

Google

Constantin
10.09.2018
12:11:53

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

rdcm
10.09.2018
12:16:25

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

Constantin
10.09.2018
12:18:33

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

Constantin
10.09.2018
12:19:21

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

rdcm
10.09.2018
12:21:22

Banschikov
10.09.2018
12:25:39

yopp
10.09.2018
12:25:54

Banschikov
10.09.2018
12:26:20

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