Nick
Вопрос про шардинг по отсвтсвующему значению конечно вкликолепен))
yopp
ОТРЕЗАТЬ НОГИ (w: 1, j: t)
yopp
И РУКИ (w: 1, j: f)
yopp
А МОЖНО И ГОЛОВУ (w: 0, j: f)
AstraSerg
ну такое
что ж ты такой не polite :)
yopp
прост потом «говно эта ваша монга, данные теряет»
yopp
потом afair нет никакой экономии на fsync с j: f. журнал скидывается на диск независимо от желания клиента. прост в случае с j: t клиенту акнут только когда журнал с операцией слился
yopp
а, нет, действительно, форсит синк • If the write operation includes a write concern of j: true, WiredTiger forces a sync of the WiredTiger journal files.
yopp
ладно!
AstraSerg
воооо :)
yopp
но всё равно совет так себе
yopp
если нет write capacity надо собиратсья с духом и шардировать, а не пытаться на дюрабилити выйграть
yopp
потому что write capacity от этого больше не станет
AstraSerg
а неужели fsync на каждую запись в файл будет форсится? это ж удар по производительности дисковой подсистемы огромный
yopp
по этому хороший совет у монги в документации
yopp
не могу найти где было про «shard all the things» нашёл только вот это, там тоже про журнал есть, но там вместо отрезать ноги предлагают костылей
yopp
https://docs.mongodb.com/manual/core/write-performance/
Denis
Такой вопрос, нужен неизменяемый уникальный айдишник для идентификации элементов. Ну типа userId Есть «системное» поле _id, которое можно для этого использовать Или можно добавить свое поле userId со строкой сгенерированной uuid Какой вариант лучше? Будет ли разница в производительности?
yopp
Если вам надо связь установить между документами, то используйте _id документов, который тоже ObjectId
Denis
Спасибо)
Vlad
Всем привет, в aggregate можно сгенерить date range, знает кто-то? Для каждого документа по двум датам в нем (формат дат строка "Y-m-d"). Лучшее к чему я пришел это date_range:{$range:[{$toLong:{$dateFromString:{dateString:"$fromDate"}}},{$toLong:{$dateFromString:{dateString:"$toDate"}}},3600*24], но $range не принимает на вход Long. Видимо, придется через mapReduce делать, но вдруг кто-то знает
S
всем привет, пожете подсказать, мне нужно написать програмку в которой будут уитываться тмц, но нужно написать ее с использованием базы данных монгос цего начать? (уровень знаний вообще минимальный)
S
товарно материальные ценности, В программу можно вносить какой либо товар и
S
он будет там храниться
Vlad
вообще для начала достаточно загуглить "ваш язык+mongodb"
S
удаление, редактирование, добавление
S
ну информации я просто не нашел или может не там искал, поэтому обратился к вам
Vlad
удаление, редактирование, добавление
это довольно все просто, по мере необходимости вникать уже можно в более сложные вещи
S
С#
Vlad
С#
по запросу "C# mongodb" видает кучу разных ссылок для начала работы, берите любую, что нравится, лучше англ, если знаете
S
плохо
Vlad
плохо
тогда по-русски лучше гуглить, да. тоже много ссылок можно найти, хотя бы это https://habr.com/ru/post/127290/
S
спасибо
Kozimjon
Всем добра)) по-моему я пишу туда куда нужно - практикую nodejs (ts) + mongo + mongoose + express ну и + swagger - промис должен вернуть тип ITodo, в котором есть поле desc - но ошибка по-моему ясна - что можете посоветовать? в доках монго ничего путного не могу найти - может плохо ищу? заранее спасибо
Nick
Уберите авайт перед файнд
Kozimjon
таким вот привидением решили вопрос))
Kozimjon
а это не костыль? но работает))
Kozimjon
спасибо)) тоже работает
Vlad
а правда, что для такого запроса {fromDate:{$lte:'2019-01-01'},toDate:{$gte:'2015-06-01'}} лучше будет работать такой индекс? {fromDate:1, toDate: -1} что-то не могу найти инфу по этому поводу, но выглядит вроде бы логично
Александр
Что-то напрягает.. 1) Ищу объект по значению Nested Array 2) Обновляю объект в базе Время уходит 0:08:29.519951 на 36 тыс. запрос+апдейт
Александр
Локальная монго
Александр
8 мин..
Александр
изза $elemMatch ? { 'email_list': { '\$elemMatch': { 'email': email } } }
Александр
Сделал индекс сейчас и вывод в консоль убрал 0:02:01.852662 2 мин теперь
Александр
это нормально 2 минуты? на 72 тыс транзакций =0
Nick
это нормально 2 минуты? на 72 тыс транзакций =0
Зависит от кучи пспаметров, вообще это 600 рпс что уже очень хорошо для хдд диска если каждая операция отправляется с включенгым журналировагием
Александр
ssd диск, но монго у меня запущен не как сервис помоему.. в окошке терминала чето показывает
Александр
Nick
Тогда смотрите приложение, запросы синхронно отправляются? В одном потоке?
Nick
И каков размер одного документа?
Александр
У меня теперь вопрос, я не убью свой SSD на ноуте? =0 Прям шипит ноут с 4 минуты.. Запросы почти синхроно, я использую пакет для dart - помоему там что идет асинхронно Но я в цикле запускаю функцию, где делаю селект и апдейт, с ожиданием ее завершения и потом программа идет дальше. Размер документа:
Александр
Александр
350B
Vlad
а можно получить значение storage.wiredTiger.engineConfig.cacheSizeGB как-то? не вижу его getParameter
Vlad
а можно получить значение storage.wiredTiger.engineConfig.cacheSizeGB как-то? не вижу его getParameter
нашел, это видно в db.serverStatus().wiredTiger.cache, строка maximum bytes configured
Anonymous
Не дайте соврать, но preference/concern - это почти целиком про топологию, а не про атомарность. Если я правильно понял, что вы хотите - то это findoneandupdate
Vlad
findAndModify?
Ilya
Ребят, подскажите пожалуйста, как сейчас обстоят дела с размером oplog-а в монге? Насколько я знаю, он фиксированного размера и перезаписаваемый. То есть если, допустим, у меня оплог на 5 гб, и в своем кластере у меня одна из реплик отвалиться на пару деньков, а за эту пару деньков oplog заполнится на все 5 гб и начнет перезаписываться уже новыми операциями, целостность данных считай потеряна, и реплику надо было своими руками восстанавливать.
yopp
Если у вас ноды постоянно выпадают за оплог ищите причину
Ilya
Ничего не изменилось, разве что с 4.0 появилась возможность на ходу менять размер capped коллекций, включая rs.oplog. Это не постгрес чтоб руками восстанавливать отставшую реплику. Если нода выпала за оплог, она сама сделает initial sync
Хмм, а разве initial sync не должен запускаться только тогда, когда хранилище базы очищено (просто все файлы удалить), чтобы он с нуля начал все восстанавливать? Если есть вариант принудительно запустить Initial sync, то как тогда данные будут восстанавливаться?
Ilya
Если у вас ноды постоянно выпадают за оплог ищите причину
Нее, я не по работе, в образовательных целях интересуюсь
Ilya
yopp
Тогда как постгрес))
yopp
https://docs.mongodb.com/manual/tutorial/resync-replica-set-member/
Ilya
Около часа и ~80Гб
Любопытно, у меня кластер работал медленней (на отставшую реплику выкачал около 2,7 гб за 7 минут примерно), хотя наверное это потому, что я все делал на моем полумертвом компуктере))