Анатолий
А лучше сделать так:
const date = Date.now - SOME_INTERVAL;
model.find({ScannedOn: {$lte: date}})
И не хранить интервалы в базе, а оставить как есть дату последнего сканирования
yopp
Это хорошо, когда интервалы везде одинаковые
yopp
А вот когда у разных сущностей разные интервалы или интервалы задаются динамически, то так не сработает.
Анатолий
Это ужасно если они везде разные, один тип действия, один интервал, много типов действий, много интервалов, но все равно они должны лежать отдельно а не в каждом документе.
yopp
Это вполне себе нормально.
yopp
Интервал может динамически высчитываться исходя из предыдущих взаимодействий , их результатов и миллиона других факторов.
yopp
Бизнес так хочет™
Анатолий
Я не говорил что это ненормально, я сказал что это ужасно, бесконтрольное обновление. Есть некие действия которые нужно делать с некой переодичностью, и если их все делать одновременно с каким-то одним интервалом кучей, это будет более контролируемо, и более удобно для разработчика + изменяя и подстаивая интервалы можно контролировать нагрузку итд.
Анатолий
особенно если ресурс может отвечать 429
yopp
Не вижу смысла упражняться, не зная бизнес-задачи. Как архитектурный приём это более чем допустимо
Максим
По задаче пользователь задает нужный интервал обновления в зависимости от приоритета фильтра так как данные по некоторым фильтрам меняются достаточно редко.
Anonymous
Ребята, мне нужно бэкенд собрать с авторизацией
Anonymous
Что заюзать для авторизации?
Anonymous
Если это jwt, то токены надо хранить в базе монго?
✙
На клиенте можешь получать jwt, будь это js, ios, android
✙
на бэке просто валидировать
✙
юзеры будут в firebase храниться
Yaroslav
https://www.rdegges.com/2018/please-stop-using-local-storage/
Anonymous
в firebase можно хранить другие данные, кроме пользователей?
Yaroslav
что про это скажете?
✙
✙
ну на своём бэке можешь хранить
✙
firebase database это уже замена бэку
Anonymous
с базой данных и авторизацией
Anonymous
кому в личку могу побомбить сообщениями? с меня пиво рублей на 500
Yaroslav
могу тебе кинуть просто чисто мой бекенд там все это есть
Yaroslav
Yaroslav
даже один протектед роут
Anonymous
вау, спасибо, посмотрю
Anonymous
👍
Ruslan
Вопрос по работе бд
когда считывается елемент коллекции, он грузится целиком или последовательно?
Ruslan
хочу понять, что быстрее
1) поиск ключевого слова в одном большом елемнте коллекции
2) поиск ключевого слова среди 1000чи елементов колекции
Ruslan
это как считать весь файл а потом парсить или считывать построчно и парсить
Vlad
Пока непонятно. Что значит считывание последовательно одного элемента? Он полностью грузится. Как его одного последовательно грузить? Если надо вывести только некоторые поля элемента - да, возможно.
Vlad
Vlad
Если есть поле в элементе - не важно какой большой будет элемент, лишь бы индекс на нем был, чтобы фулл скан не проводить
Ruslan
Ruslan
хорошо
скажу проще
я хочу считать первый символ из елемента коллекции размером в 1TB
Vlad
Так по определению 1000 элементов будет дольше искать, чем 1
Ruslan
что он сделает?
Vlad
Так понимаю: цель - хранить файлы (видео) в коллекции? Бинарники
Vlad
Если цель в этом, то лучше файлы хранить в чем-то другом. У монги есть ограничение на элемент коллекции в 16 мб. Есть гридфс, который позволяет разбить бинарники как бы на небольшие кусочки... Но блин, не для этого придумана эта база
Vlad
Проще в ней хранить ссылки на файлы, а сами файлы в какой-нибудь распределенной glusterfs
Vlad
Такие вот мысли, могу быть не прав
Ruslan
блииин
я не про как хранить
а про то как он читает это всё
Ruslan
но выше изложенная инфа тоже интересна
Ruslan
Ruslan
Нет, бинарники хранить не думаю
Vlad
Vlad
А грузить данные потоком (ну то есть получить первый символ, потом второй и т.д.) он может, но вроде только бинарные.
Ruslan
Понятно. Интересно мнение: что лучше
1)большой json
2) разбитый на елементы коллекции json со ссылками друг на друга
Vlad
Ruslan
К примеру большой mind map
Ruslan
Бд не для высокой нагрузки от большого кол-ва юзеров
Vlad
Если он всегда будет нужен только сразу целиком, тогда так целиком и хранить. Думаю нет смысла разбивать.
Ruslan
Vlad
Ну типа здесь рулят антипаттерны реляционщины )) сплошная денормализация
Ruslan
Если планируется считывать конкретное поле(типо многоразовое), то, мне:
1) Считать его из большого json?
2) вынести в отдельный елемент коллекции и оставить ссылку на него в большом?
Ruslan
Типо это поле может быть самостоятельной единицей и часть большого json
Vlad
Vlad
Я правильно понял?
Ruslan
Ruslan
Тут скорей вложенность
Ruslan
Как папка внутри папки
Ruslan
Типо твой пример для 2d а у меня 3d
Vlad
Или ты имеешь ввиду, что у тебя есть коллекция условных яблок и есть коллекция корзин и тебе надо, чтобы в корзине был список (list) каких то определенных яблок
Ruslan
Нее, корзины с яблоками в одном елементе коллекции
Ruslan
Но есть красная корзина которая может пригодиться отдельно
Ruslan
И она в той куче
Vlad
🤪
Ruslan
О, придумал
Vlad
На самом деле лучше показать пример )) пускай из корзин и яблок )
Ruslan
Есть два mind mapa (2 елемента коллекции, сама коллекция одна)
Ruslan
И у них есть общие поля
Vlad
Так