Easy Rider
L7 не покупается
Nick
а вы такое дырявое говно делаете что возможна атака на L7?
Easy Rider
она возможна везде
Easy Rider
ну например, запрос геообъектов в квадрате, весьма ресурсоемкая операция, и кэшировать сложно
Nick
ну например, запрос геообъектов в квадрате, весьма ресурсоемкая операция, и кэшировать сложно
вот вектор атаки, замечательно. Закрываем авторизацией, ставим рейт лимитер на клиента и полетели.
Easy Rider
свой город
Easy Rider
он еще не юзер
Nick
свой город
а зачем гео?
Easy Rider
кроме того он должен иметь возможность смотреть объекты на карте, еще не будучи зареганным юзером
Nick
сто лет в обед есть дадата которая сама вам найдет ближайшее совпадение по адресу
Easy Rider
ну в любом случае, неавторизированные юзеры тоже должны у меня иметь возможность смотреть карту
Easy Rider
там разные города, объекты всякие
Easy Rider
а я посмотрел, монга не особо шустрая в плане геопоиска
Easy Rider
кстати такой момент, если я увеличу количество ядер на сервере, то получается, если коллекция сидит в памяти, и есть только операции чтения, то это частично решит проблему?
Nick
кстати такой момент, если я увеличу количество ядер на сервере, то получается, если коллекция сидит в памяти, и есть только операции чтения, то это частично решит проблему?
зависит от кучи всего, просто тестируйте, а том может у вас там рядом еще ктото память жрет и данные постоянно из кэша вытесянются
Nick
ну в любом случае, неавторизированные юзеры тоже должны у меня иметь возможность смотреть карту
это прям киллер фича продукта, что об этом надо беспокоиться и реально нужен геопоиск который по координатам?
Easy Rider
можно смотреть лентой, можно на карте
Nick
да, это сайт поиска попутчиков в походы
хех, хз зачем тут защита от ддоса тем более на уровне Л7. Вынести геопоиск на отдельную тачку если это прям может повлиять. Вообще тут как раз и мое сообщение про проработку и вектора атак и оценку в денежном эквиваленте стоимости защиты и выхлопа и чтото сдается мне тут не будет ляма пользователей, а уж тем более те кто смог бы заметить что поиск работает медленнее чем месяц назад изза того что какаято нагрузка пошла. Ну и опять же дастаточно сделать фолбэк в интерфейсе, что если геопоиск за 5 секунд не ответил то юзеру выдать страницу с поиском по названию
Easy Rider
подумаю, спасибо
yopp
В целом защита от DDOS это задача уровня приложения, а не базы данных. Из инструментов в самой монге это время жизни курсора (maxMs). В случае превышения времени выполнения запроса в таком курсоре, задача по обработке будет принудительна завершена. Но это не мешает брать не «тяжестью», а «количеством». На практике практически ни кто «тяжелые» эндпоинты не ищет и не разбирается как их эксплуатировать, это трудозатратно. Дешевле и быстрее взять в аренду ботнет за пару сотен долларов и нагнать на сервис пару гигабит трафика. Если это не статический сайт, то фильтровать такой поток, не задевая реальных пользователей, на порядок дороже чем стоимость аренды ботнета.
Easy Rider
как раз тяжелыми эндпоинтами, например поиском полнотекстовым
Easy Rider
че их искать, и так понятно что тяжелое а что нет
Easy Rider
от всего что меньше уровня приложения, по идее должны спасать специальные сервисы, ну типа ддос гуард или клаудфлар
RapidCodeLab
по моему я это уже все читал про ддос тут, эта песня хороша, начинай сначала?))
RapidCodeLab
у нас есть сайты 500к дейли, никто не ддосит, ибо нах это никому не нужно. а вот сервис поиска попутчиков в пходы, будут ддосить каждый день конечно.
Aryn
Подскажите, как можно сделать так, чтобы при локальных подключениях для рут юзера не нужен был пароль, а для не локальных, требовал пароль?
Aryn
хотел открыть порт для подключений вне сети
Andrey K.
Есть какой-то способ получить в mongodb параметр, означающий степень загрузки?
можно еще длинные запросы отслеживать. Начиная с простейшего мониторинга current ops
Daria
добрый день, помогите составить запрос к монге допустим, есть коллекция events в каждой строке есть дата старта события startDate получается, дата окончания события - это дата старта следующего по порядку, если отсортировано по дате старта как составить запрос, чтобы вывести длительность каждого события?
Daria
вывести, нужно чтобы статистику длительности выполнеия посмотреть
Nick
вывести, нужно чтобы статистику длительности выполнеия посмотреть
если просто для вывода, то проще сделать уже в софте, а на базе только отсортировать
Andrey K.
добрый день, помогите составить запрос к монге допустим, есть коллекция events в каждой строке есть дата старта события startDate получается, дата окончания события - это дата старта следующего по порядку, если отсортировано по дате старта как составить запрос, чтобы вывести длительность каждого события?
можно немного напитонировать. Взять информацию по дате и времени и затем вычесть одно из другого... a = (first_timestamp - second_timestamp) print (a) если забрать из БД объекты даты и времени, то можно прям вот так в питоне вычесть
Daria
Ну да, понятно, что если вычитать куда-то, то посчитать не сложно) Интересно было, можно ли сразу в монгошеле как-то в аггрегации вычислинение вкрутить, т.к. операция разовая
yopp
Ну да, понятно, что если вычитать куда-то, то посчитать не сложно) Интересно было, можно ли сразу в монгошеле как-то в аггрегации вычислинение вкрутить, т.к. операция разовая
Можно через $lookup по $gt и сортировкой по дате и $limit: 1. Тогда к каждому событию подтянется следующее за ним и вы по двум полям сможете высчитать через $addField диапазон времени между двумя событиями
yopp
Надо плейграунд вернуть назад :)
Aryn
Подскажите, возможно ли сделать "триггер", который будет реагировать на обновления документов в коллекциях? Если документ обновили, то создать новый документ в определённой коллекции.
Aryn
https://www.mongodb.com/docs/manual/reference/change-events/
Спасибо! А как сделать так, чтобы при обновлении (update) документа, создавался новый документ в другой одной коллекции?
Mashxurbek
https://www.mongodb.com/developer/languages/javascript/nodejs-change-streams-triggers/
Aryn
https://www.mongodb.com/developer/languages/javascript/nodejs-change-streams-triggers/
Тут описывается создание триггера в атласе, У меня не атлас, сам БД поднял
Михаил
Всем привет. Слушайте никто не знает как это реализовать? У меня есть проект который разделен на две части. Одна из них проверяет сервера и сохраняет их состояние в базу и вторая это сервер на фласке который должен возвращать список серверов страницами. У меня задача такая нужно подгружать этот список динамически на сайте при этом между запросами может проходить большое время. У меня сейчас сделано это в виде /list?start=90&step=20 и сортировка по last_check: pymongo.DESCENDING. Но в этом случае когда новые данные появляются и какие то севера поднимаются выше то они смещаются между запросами и дублируются в таблице на сайте. Возможно ли как то эффективно сохранять состояние курсора и передавать его с каждым запросом чтоб избежать подобных проблем?
Михаил
Михаил
Михаил
Сортировка идет по дате проверки серверов. Когда сервера проверяются они должны попадать в верх списка. Из за этого пока пользователь прокручивает список у него уже под десяток серверов переместилось на вверх. И как раз на эти самые 10 серверов будет дублирование в следующей загрузке.
Vladyslav
Тогда у вас всегда будут актуальные данные
Михаил
Я смог разобраться. Достаточно просто было получить время когда пользователь открыл страницу и передавать это время с каждым запросом. А в бд уже делать last_check: {$lt: start_time}
クォーツ
всем привет тут наверное не раз задавали этот вопрос но я повторюсь какие источники или обучающие видеоролики посоветует по MongoDB? в идеале мне с нуля 🫠
クォーツ
только на английском языке? 🤔
Alexandr
Всем привет, подскажите плз можно ли через монгус при создании модели передать параметр имени бд? кажется я как то это делал, не помню🫠 я имею ввиду заменить дефолтное 'test' на свое
クォーツ
Alexandr
Это то я нагуглил, спасибо.
Женя
Ребята нужен совет или рекомендация Недавно у нас в проекте произошло обновление движка, и теперь нам нужно перенести данные mongodb со старой версии на новый Но дело в том, что схемы на новом проекте более сложные и разветвлённые Есть какие нибудь инструменты чтобы эти данные было легче перевести в новый формат? Сервер к слову на ноде
Женя
Есть. Bash.
💪 кайф
Brykez7
Вопрос а можно ли как то на локалке сделать инкрементное поле у коллекции? Вроде в Atlas такое возможно а как на локалке такое сделать не знаю.
Brykez7
У меня есть "этапы" связанные с "задачей". И я хочу чтобы пользователи могли посмотреть по порядку эти "этапы". Поэтому я планировал сделать инкрементное поле. Но сейчас думаю что будет проще добавить в "этап" дату ее последнего изменения и сортировать по ней.
-
Встроенных средств нет, а objectId зависит от Timestamp, поэтому оно всегда разное.
Brykez7
Если вы будете сортировать по дате изменений, то у вас может сбиться порядок
А как можно сохранить порядок? Ну то есть вывод этапов в порядке котором они были добавлены. Я думаю можно хранить отдельно дату создания "этапа" и дату ее последнего изменения. И тогда все очень просто. Ну и objectId тоже будет присутствовать как минимум для удаления и индексации.