Dmitriy
Если условие звучит таким образом,что мы хотим получать только тех у кого подтверждён только 1 из 2 контактов,т.е. если подтверждены оба - мы их не получаем
Dmitriy
Не совсем
Dmitriy
тогда рассказывайте подробнее что вы хотите получить, ясновидцы как известно сейчас в отпуске
Oleksandr
А версия mongodump какая?
Версия 2.6.10. В целом поискал в интернете, что есть ограничение в 16МБ в MongoDB, но не понял если оно (ограничение) есть, почему дало создать этот файл. паралельно прочитал что это может быть поврежденная БД. Начал делать дамп каждой базы по 1 шт за раз. Нашел базу во время дампа которой полоучаю ошибку. Сейчас думаю над двумя идеями, 1 сделать mongodump --repair --dbpath /var/lib/mongodb/XXX --db XXX, или как-то поискать этот файл (возможно как-то через MongoDb Compass найти файл с индексом(?) 13106 - UPD понял что написал глупрость, это просто код ошибки) ?
yopp
Сделать экспорт всей БД, верно? Repair пока не запускать?
Нет, только этой конкретной коллекции
Oleksandr
Нет, только этой конкретной коллекции
Хмм, глупый вопрос задам, коллекция "documents"? UPD: нашел ответ, в логе который выводил на экран mongodump
yopp
Да, похоже так
Dmitry
Всем привет! Есть такой вопросик: в коллекции schedules в текстовом поле timetable лежит формат запуска задачи, как для crontab (а-ля * * * * *, 1,4,7,58 * * * *, */20 3 * * *, 6-36/12 1,5,19 * * * и т.д.) Как можно выбрать необходимые задачи на текущий момент имея строку текущего времени (а-ля date('i G j n w', time())) ?
yopp
Вы конечно можете попробовать написать свой парсер расписаний на AF, но толку от этого не будет совсем
Dmitry
Хм.. Нужно придумать тогда какое-то решение
Nick
Хм.. Нужно придумать тогда какое-то решение
Зачем вам это, если вы не сможете нормально контролировать факт выполнения?
Dmitry
Зачем вам это, если вы не сможете нормально контролировать факт выполнения?
Этот вопрос на последнем месте, сейчас основная задача, чтобы крон (* * * * *) выбирал только необходимые задачи из коллекции
Dmitry
Чтобы пользователи могли добавлять необходимые задачи из интерфейса (и они выполнялись в нужный им кастомный момент)
Nick
Dmitry
Что мешает сразу их шедулить в нормальный крон, параллельно сохранению в базу?
100К записей в кронтабе вообще не айс, тем более это докер-контейнер
Nick
100К записей в кронтабе вообще не айс, тем более это докер-контейнер
А вы можете использовать какойнить не системный шедуллер? Ту же имлементацию крона в вашем языке
Nick
И на счет основной, это вам она кажется основной, хотя на самом днле вам нужно их выполнять согласно расписанию, а не выбирать из базы, так что и решать нужно реальную проблему, а не выдуманную задачу
Nick
То что вы хотите решить делается с помощью регулярки, либо достаточно упоротого комбинированного условия, которое нужно булет генерить, и оба метода не будут использовать индексы
Oleksandr
Да, похоже так
Прошу прощения что поздно - mongoexport в .json проблемной коллекции (которая не дампилась из-за ошибки) зевершился успешно. Большое спасибо за помощь 😊
Bro
я тут подумал
Bro
что делаю update документов
Bro
https://docs.mongodb.com/manual/reference/method/db.collection.replaceOne/
Bro
а есть же replace
Bro
он по идее быстрее должен работать?
Bro
плохо =(
yopp
Нет!
yopp
Можно рассказать о своей проблеме
Bro
хочется побыстрее писать в БД
yopp
insert в коллекцию без индексов самое быстрое решение
yopp
Меняете схему данных на append-only и скорее всего вы сможете выбрать всё доступное вам io
Alexander
insert в коллекцию без индексов самое быстрое решение
Тогда захочется побыстрее читать ;)
yopp
Такой задачи не стояло
Bro
судя по графикам в атласе и так выберается все доступное io
Bro
читать тоже надо =(
Bro
да пока нет проблем. но вот insert-only хоршая идея, надо подумать
Bro
а что за схема append-only это на уровне приложения или на уровне монги?
yopp
На уровне приложения
Bro
ясно
yopp
Всякие событийные вещи простой пример
Bro
кстати говоря
Bro
я тут новые коллекции создаю на после 200 миллионов записей
yopp
Вместо того чтоб писать состояние в базу, выпишите события. А потом вычисляете состояние, если надо
Bro
просто тупить начинает
Bro
чтение, апдейты
yopp
Без какой либо конкретики единственный совет: нажать кнопку resize cluster и переехать на тайер подороже ;)
Bro
у нас bare metal
Bro
монга часть системы просто, куда я пишу, затем оттуда данные дальше идут на обработку.
yopp
Посмотреть в какие ресурсы упирается монга и провпгрпедить железо. Но вы скупы на конкретику, а без конкретики можно только в капитана очевидность играть :) Покупайте подписку, помогу накопать конкретику и понять что у вас происходит: https://db-ai.co
Bro
добавил в букмарки
Bro
я если честно пока сам не знаю че хочу
Bro
вот недавно монгу ребутнул
Bro
и все заработало нормально
Bro
еще кэш вайред тайгра увеличил а то зачем-то свопаться база даннных начала
yopp
еще кэш вайред тайгра увеличил а то зачем-то свопаться база даннных начала
Потому что этого не надо было делать. Вы уменьшили эффективность использования памяти
yopp
Крутить эту ручку стоит только в том случае когда монга не может корректно определить объём доступной ей памяти. Ещё ей можно симптоматически зарывать проблему «монга делит ресурсы с другими приложениями». И во всех этих случаях ручка крутится вниз, в не вверх
Bro
там сервер с 512Гб памяти (но HDD), где крутится только одна монга
Bro
с которой я работаю
Bro
память была занята наполовина и при этом рос своп
Bro
после накрутки ручки своп уменьшился утилизация памяти увеличилась
yopp
память была занята наполовина и при этом рос своп
Потому что монга выделяет под кеш половину доступной памяти. Ещё какое-то количество она будет выделять под свои структуры и всё остально должно быть использовано операционной системой под дисковый кеш
yopp
Так как wt в своём кеше хранит несжатую версию страницы, и сжимает их только сбрасывая на диск, то увеличивая кеш wt вы уменьшаете количество данных которые могут уместиться в памяти.
yopp
Своп вообще стоит отключить. Своп и базы данных плохо живут вместе. Базы данных расчитывать получать и записывать страницы в память, а не на диск. Swap in/swap out в условиях и так повышенного давления на память, может создать огромные проблемы, за одно ещё добавив нагрузки на io
yopp
HDD давно надо выкинуть и заменить на nvme. Интел 660p на 2Тб стоит 200 долларов.
yopp
Там «всего» 400TB write endurance, но сейчас цена на nand падает с такой скорость, что когда у него подойдёт ресурс вы за 200 баксов уже 4тб купите.
yopp
https://camelcamelcamel.com/Intel-Internal-Solid-State-SSDPEKNW020T8X1/product/B07GCLLKDC
yopp
на newegg уже $184.99
yopp
в мае было 209
yopp
в октябре 18 было 399