rdcm
ок, да у меня действительно есть поле с "ids": ["id_1..", "id_2..", "id_3.." ...] и к нему конкуретный доступ на обновление с оптимистик канкаренси у монги тоже всё понятно это получается надо хэндлить этот эксепшен и ретраить или есть более человечные сопсобы?
rdcm
ну т.е. документ-то в итоге надо обновить 😁
Vova
В рамках одной сессии обновляй всё что нужно
rdcm
у меня сейчас ссессия стартует на каждый http запрос и в ёё рамках траназкция обновляет всё что нужно но конфликт видимо возникает на стороне монги короче кроме такого решения я ничего придумать не могу https://stackoverflow.com/questions/33928136/mongodb-optimistic-concurrency-control-with-net
rdcm
но мне казалось у тразакций это под капотом должно быть реализовано 😶
rdcm
две коллекции, у документов одной FK на документы из другой
Nick
так а что делается то?
rdcm
добавляется новый FK, вставляется новый документ во вторую коллекцию
Іван 🤙
Ребят помогите советом) у меня регулярно дропается монга не понятно почему просто стираются все данные без всяких ошибок и тд как можно узнать какого хрена это происходит?))))
Constantin
Перезапуск контейнера и досвидания все данные
Іван 🤙
скорее всего база без аутентификации смотрит в интернет и ее дропают злобные хакеры
фак, рили? а то что на ВПС у меня fail2ban + логин\пасс?? или доступ в базу не зависит от доступа к ВПСке?
Іван 🤙
Еще может быть запущена в контейнере без монтирования раздела снаружи.
пока не знаю что такое контейнер, вряд ли он у меня вообще есть😂😂
yopp
Всем привет. Коллеги, не сочтите троллем. Изучаю монгодб, не могу понять когда его стоит использовать вместо mysql\postgres и собственно почему. Это равноценная замена или в каких-то задачах монго непревзойден?
За исключением резервного копирования шардированного кластера — монга имеет очень низкий операционный оверхед. Automatic Failover (был) лучшим на рынке. У монги очень низкий порог вхождения для разработчиков. Основные принципы даются часов за 8. На мой взгляд, за счёт возможности выбрать ключ, шардинг имеет больше гибкости чем другие базы где ключ или его тип уже зафиксированы. Ну и зоны отличная вещь.
yopp
В плане хранения данных: с 4.0 уже нет разницы. С 4.2 когда транзакции будут и в шарде работать, монга будет отличным повседневным решением. Но если у вас данные с высокой степенью связанности и высокой нормализацией, монга так себе решение. Как и для всяких графов
yopp
Документные хранилища хороши и плохи своей гибкостью. Вы можете моделировать очень сложные структуры и принципы хранения.
pplcf
хорошо расписал
rdcm
ну я бы только накинул, что низкий порог вхождения и все плюшки не гарантируют хороший проект на выходе :) если у администраторов нет желания разбираться в особенностях сопровождения, а у разработчиков нет желания моделить данные, так как это предлагают гайды mongodb
rdcm
https://stackoverflow.com/questions/33928136/mongodb-optimistic-concurrency-control-with-net оптимисчтичная блокировка решила мою проблему пока, вечером буду смотреть почему транзакция не хочет делать тоже самое 😐
AstraSerg
Привет, есть простой способ запустить докер с монгой с поддержкой Replica sets?
никаких проблем. Вот официальный образ: https://hub.docker.com/_/mongo/
yopp
ну я бы только накинул, что низкий порог вхождения и все плюшки не гарантируют хороший проект на выходе :) если у администраторов нет желания разбираться в особенностях сопровождения, а у разработчиков нет желания моделить данные, так как это предлагают гайды mongodb
Инструменты никакого существенного влияния на качество результата не оказывают. Результат можно получить и некачественными инструментами, а не получить и качественными. Если в команде нет «желания» это не к инструменту вопрос, а к процессам и руководству
rdcm
c mongo проще ошибиться, это факт
yopp
дайте данные чтоб говорить про «факт»
yopp
ошибиться можно с любым инструментом
yopp
и даже не можно, а нужно
yopp
ошибки это единственный способ обучения
AstraSerg
rdcm наверно имеет ввиду, что на высоком пороге входа отсеится больше неграмотных специалистов.
rdcm
не совсем так, но ближе к делу
yopp
и останется три человека с рейтом в три тысячи евро в чаc ;)
AstraSerg
ошибки это единственный способ обучения
Есть ещё один не плохой способ изучения: самому начать обучать ;)
Vova
В .NET Driver как пометить поле _id для свойства модели? [BsonId] будет распространяться на это: Builders<Model>.Filter.Eq("_id", "my id") Или оно распространяется только на сериализацию BsonDocument?
yopp
без практического эксплутационного опыта, можно хоть заобучаться
AstraSerg
без практического эксплутационного опыта, можно хоть заобучаться
Согласен, но я не об этом. Я вот это имел ввиду: https://en.wikipedia.org/wiki/Learning_by_teaching
rdcm
там есть BsonClassMap
rdcm
или можно атрибутом
Anonymous
подскажите, когда лучше делать связи между коллекциями, а когда можно просто пихать одну коллекцию в другую? Например комментарии.. Лучше сделать отдельную коллекцию для них или нет?
AstraSerg
а с обновлением проблем не будет?
В каком случае? :) Я к тому, что оба подхода имеют свои плюсы и минусы :)
Anonymous
В каком случае? :) Я к тому, что оба подхода имеют свои плюсы и минусы :)
ну если коменты у меня прямо в документе с постом то как обновить комент? Придется и id комента и поста передавать
AstraSerg
с комментами настолько общее место, что даже доку написали :) И в универе это рассказывают
rdcm
если захочешь допустим искать самый топовый комментарий дня, то в отдельной коллекции
Let’s
никаких проблем. Вот официальный образ: https://hub.docker.com/_/mongo/
там ведь нет образов поддерживающих(сконфигурированных) replication sets
rdcm
https://pastebin.com/WDZVVvps
rdcm
не благодарите ) но docker-compose надо составить самому
Constantin
там ведь нет образов поддерживающих(сконфигурированных) replication sets
Это уже к системе управления конфигурацией, вроде ansible, chief, ну или docker-compose как говорит rdcm
yopp
без докера есть http://blog.rueckstiess.com/mtools/mlaunch.html
yopp
и мой совет: не стоит автоматизировать раскатываение кластера в продакшене
Constantin
без докера есть http://blog.rueckstiess.com/mtools/mlaunch.html
Спасибо, не знал о такой штуке.
yopp
у вас сотни машин?
yopp
у нас в чяте есть кто-то с сотней нод?
Constantin
у вас сотни машин?
У меня нет, но знаю ребят у которых сотни, не машин, а контейнеров правда
yopp
они уже купили ops manager?
Constantin
Там размазанный по континенту кластер
Constantin
они уже купили ops manager?
я без понятия, если честно
yopp
вероятнее всего у них автоматизирован провижининг, но основные операции они делают руками
Constantin
вероятнее всего у них автоматизирован провижининг, но основные операции они делают руками
Да, скорее всего так. Вроде через Ansible еще миграции накатывают, но могу ошибаться
yopp
автоматизация конфигурации — адски сложная задача и я ещё не встречал ни одной успешной реализации
yopp
кроме atlas :D
rdcm
и мой совет: не стоит автоматизировать раскатываение кластера в продакшене
вредный совет) я даже три виртуалки устал конфигурировать под репликасет один раз написал скрипты для ansible, всё стало гораздо проще но есть нюансы конечно
yopp
конфигурирование кластера и провижининг нод это разные вещи
yopp
провижининг очень легко автоматизируется
yopp
а вот автоматическое добавление нод в кластер это дорога к потерянным данным
yopp
особенно если это прикручивать к всяким шедулерам
Constantin
а вот автоматическое добавление нод в кластер это дорога к потерянным данным
Ну кто-то же использует монгу в кубернетесе, а там только автоматикой все можно делать, иначе поды не заведутся? (хотя сам я далеко не DevOps инженер, и реальной эксплуатации кубернетеса не имел)
yopp
я сомневаюсь что там что-то сложное
rdcm
А используете нативный mongo через модуль shell + changed_when? Или какой-то доп-модуль ставите?
первое, но есть желание попробовать более человечные модули
yopp
я использую монгу в k8s
в какой топологии?
Denis
в какой топологии?
типичная replicaset
Denis
в какой топологии?
если интересно, то погугли реализацию helm k8s chart
yopp
я про него слышал, но я сомневаюсь в надёжности такого решения