yopp
Сможете конечно, даже с mmapv1 могли
D
хорошо, надо значит пробовать
D
ботами я все равно проверю,
D
хоть и не близкую картину, но как минимум менеджмент памяти и иопсы надо проверить заранее
yopp
Но нужно понимать что если под «работать» вы подразумеваете ситуации, когда у вас коллекция и индексы больше чем доступная память и одновременно частый паттерн это проехать всю коллекцию, это будет достаточно неээфективно, так как кэш не будет стабилизироваться и как следствие вы будете ещё и disk io bound из-за постоянного чтения в кеш с диска
yopp
но это не только монги касается, это для всех хранилищ так
yopp
нагрузочное тестирование может дать какое-то представлние о том, что может происходить, но по опыту настоящие грабли будут лежать где-то в другом месте :)
yopp
по этому первый вопрос: есть ли у вас сейчас уже такая нагрузка?
D
последние такие грабли у меня были, когда репликация уперлась в иопсы
yopp
если у вас «репликация уперлась в ипосы», вероятнее всего у вас был ресурсный дисбаланс, что частая ошибка
yopp
standby capcity кластера должен быть эквивалентен active capacity кластера
D
уж не знаю, что там за дисбаланс был, но пришлось срочно купить nvme рейд и проблема ушла
yopp
nvme рейд имеет очень мало практического смысла, так как параллелизация nvme практически не даёт никакого прироста производительности, а избыточность на уровне дисоковй системы в монге так-же редко помогает уменьшить RTO, так как уровень деградации производительности рейда в режиме восстановление целостности практически всегда на уровне критического отказа и не позволяет обслуживать клиентов. Так что быстрее просто заменить диски и восстановить ноду из бэкапа и вернуть её в кластер
yopp
у вас иопсов не хватало на праймари, я так понимаю?
yopp
и nvme вы точечно только на ту ноду добавили, а не на те ноды, которые могут в результате выборов стать праймари?
D
это была не монга, а постгрес, насчет перехода на монгу я как раз думаю
yopp
а зачем вам монга?
D
потому что нравится как там сделаны из коробки репликасеты, шарды и роутеры, а теперь появились еще и транзакции и евенты. Выглядит красивее, проще и дешевле. Мы когда-то давно пытались делать проект на монге, но ад гонок и костыли с дфухфазными коммитами немного достали, в результате монга была заброшена, и база переведена в пг.
yopp
В первую очредь, убедитесь что ваша логика будет работать в монге. Не все паттерны легко и просто перекладываются на монгу, в ряде случаев могут потребовться очень существенные изменения в архитектуре
yopp
Например монга не поддрживает блокировки, если у вас есть транзакции требующие блокировок, вам будет _очень_ трудно
D
иопсов не хватало на секондари, такая особенность работы с wal, я так и не понял в чем фишка, но nvme справляется, и ладно. Насчет блокировок да, конечно, надо все проанализировать. Система большая, но не сложная.
D
yopp
То что вы называете событиями, событиями не является. Это change notification, а не очереди. Там нет никаких инстурментов для реализации полноценных очередей с гарантиями
D
печаль
yopp
Очереди можно реализовать мимо change stream, но это другая история уже
D
события - это события на апдейт данных, как notify триггеры в пг. Если это будет работать, этого достаточно. А вот отсутствие блокировок и очередей транзакций... Даже не знаю, а как поступают когда надо запустить следующую транзакцию только после завершения другой?
yopp
монга не умеет ставить транзакции в очередь?
Не понимаю что вы имеете ввиду.
Если у вас несколько транзакций, которые одновременно меняют одни и те-же документы, то успешно завершится только одна транзакция, остальные получат write conflict и вам его разрешать
D
yopp
Да, именно это я и имел ввиду говоря что не все паттерны легко перекладываются
yopp
Производительность меньшая из ваших проблем :)
D
если бы у нас не было проблем, за что бы платили деньги?))
D
ладно, спасибо за консультацию, яснее стало
D
а еще хотел вопрос не по теме. Вот есть некая коллекция, документ имеет поле, в котором есть словарь с произвольным количеством однотипных ключей и значений. Можно ли создать такой индекс, который позволял бы выбрать документы, в словарях которых есть указанный ключ?
yopp
динамические имена ключей — антипаттерн
yopp
индекса по именам ключей в монге нет
yopp
есть wildcard index, но я не уверен что он умеет именно по именам ключй искать
Mike
там наверно массив субдокументов имеется в виду ? нет?
D
нет, не массив, с массивами все понятно
yopp
единственный разумный выход — изменить схему, так, чтоб динамический ключ, стал значением
yopp
т.е. сделать массив из того, что у вас сейчас является парой ключ-значение
D
да, да, я понял.
Сергей
кто либо встречался с такими ошибками?
Mike
а ключей много их количество ограничено?? или они генерируются?
yopp
D
ключей не более 10, на такое и валидатор наверное не пишется, хотя в жсон схеме в спецификации есть такая возможность
yopp
это железное правило дизайна схем в монге: никогда* не использовать динамические ключ
yopp
(* — кроме ряда очень редких случаев)
yopp
Mike
итем более если ключей 10
yopp
yopp
я ещё раз повторю: если ключ _динамический_, то это очень плохо
yopp
с появлением AF в 4.2 в update, смысла практичесеи не осталось
D
ключ не рассматривается как данные, это часть схемы
yopp
именно. динамический ключ делает схему динамической
yopp
а это боль и страдание
D
понятно, значит надо хватать за руку при попытке так сделать )
yopp
да, а полиморфизм это не плохо
yopp
главное чтоб он явный был :)
yopp
т.е. было поле явно идентифицирующее схему структуры
yopp
потому что это создаёт проблемы во всём
yopp
и скорее всего это признак архитектурной проблемы
D
да, а полиморфизм это не плохо
тот полиморфизм когда ты точно знаешь по какому индексу какая субсхема - да, а если нет? Если массивы случайных разных документов?
yopp
зависит от того что с ними будет
yopp
если по ним не надо искать, то почему бы и нет. пусть ваше приложение разбирается
yopp
а если по ним надо искать, то могут быть нюансы
yopp
но вообще, explicit всегда побеждает implicit
yopp
если у вас случайные документы и у них нет идентификатора типа, то это в принципе проблема, не только в монге :)
stay
У меня одного атлас не дает залогиниться?
stay
Вернее подключиться к базе
Сергей
здравствуйте помогите отфильровать данные с столбцов
Сергей
я получаю слово которе вводится в инпуте , осталось отфильтровать в бд по фио
Сергей
Dmitriy
Dmitriy
или по полному совпадению?
Сергей
Dmitriy
тогда так: https://docs.mongodb.com/manual/reference/operator/query/regex/