Vadim
Заметил что недавно добавленные пользователи находятся быстро, а старые медленно
Vadim
да вот запрос let user = await User.findOne({_id:user_id}).exec();
Vadim
пробовал, не помогло
Alchemist
Можно ли шардировать коллекции по элементу в массиве?
Vadim
я пробовал findById но проблема осталась, старые пользователи ищутся медленней
Если недавно добавленный находится за 0,060 с, то старый 1 сек, В базе около 300 записей
Alchemist
Например { _id: '8192471', set: [ { token: '123' }, { token: '345' } ] }, { _id: '8192472', set: [ { token: '789' } ] }
Alchemist
На поле token есть индекс
Alchemist
Можно ли шардировать коллекцию по нему?
Nick
интересный вопрос, видимо охото пострелять себе в ногу. как вы себе представляете куда отправить балансер ваш док, если значения внутри массива будут в разных диапазонах?
Nick
Nick
монга выгружает не используемые данные обратно на диск и подгружает только при необходимости, вот ваши юзеры и лежат на дисках
AstraSerg
Nick
если они тянутся редко - то легко могут улететь на диск
Nick
и мы не знаем еще какая стурктура у юзера, может он 10 метров там весит
Nick
опять же индексы так же могут быть свопнуты на диск
AstraSerg
Nick
на самом деле легко првоеряется, деалется просто два запрсоа подряд, если второй запрос отрабатывает мгновенно - то значит монга вываливает на диск
Vadim
Vadim
AstraSerg
ага, точно! хороший тест. Я вот только не могу себе представить, что б запрос к коллекции в 300 документов занимал секунду
Nick
если диски выбиты по IO то изи
Nick
опять же - дешевый хостинг не честно выделяющий io или вообще подрезающий
Nick
куча факторов, которые могут все затормозить. да даже пресловутая ошибка самого способа измерения времени запроса
AstraSerg
@vosyukov Всё вам на заметку :)
Nick
может в сети дроп пакетов 90% и слава богу что вообще хоть чтото отвечает
AstraSerg
Nick
так ведь и не 100% дроп)
Nick
это так разминка для мозга понапридумывать причины. в реальности все как правило банально
AstraSerg
так ведь и не 100% дроп)
тогда правльнее охарактеризовать дроп не "90%", а "периодически большой"
Nick
наверное да, просто так сразу нагляднее и понятно о чем речь
M
Привет) может кто подскажет в какую сторону смотреть, нужно найти друзей пользователя (их количество), друзей друзей пользователей (их количество) и вернуть в форме друзья: кол-во, друзья друзей: кол-во. Не понимаю как такое сделать, может рекурсией какой? Я представлял что-то вроде aggregate
$match: $in: userid,
$project: friends: $$root
И далее не знаю
M
В какую сторону смотреть вообще, чтобы выполнить два раза $match и сформировать в ответ типа $match1: results, $match2: results
Yaroslav
Хай товарищи монговоды , подскажите по админской части :
Есть кубер в нем монга без реплика сета ,
сделал реплика сет (1 primary 2 secondary ).
Реплика сет при старте поднимается чистый, без данных , я с помощью mognorestore раскатываю дамп на primary ноде , насколько я корректно делаю и можно ли обойтись без этого ?
У меня не получилось в кубере настроить PVC и реплика сет не видит старых данных или для реплики сета такое поведение нормально ?
Yaroslav
и если накатывать дамп то правильно я понимаю что сначало поднимаем primary ноду > накатываем дамп на нее > затем только поднимаем secondary ноды ?
AstraSerg
AstraSerg
ep4sh
какой аналог в mongo primary_key Auto increment?
собственно не понимаю, как выглядит мало-мальски энтерпрайз БД, не тащятся же записи чисто по текстовым полям?
yopp
yopp
Можно руками, на атомарном inc, монотонно возрастающий счетчик сделать
ep4sh
ххмммм, окау, запилил я такой таблицу с видами сыров и делаю вывод юзеру:
5ba13f7fc22819d582b15eab | Голландский | 399 руб
5ba13f7fc225454a5211fca11| Российский | 500 руб
5ba13f7fc225454a5211f2222| Российский | 600 руб
И тут произошел крах человечества и Российский за шесть драных соток (!!!!!) перестал существовать, и надо его удалить.
Я как вижу в SQL:
DETELE from cheese where id=5ba13f7fc225454a5211f2222
А в mongo не вижу, направьте
То ли этот ужасный oid таскать, то ли в моем чердаке проблемы со структурами устройства мира (что вероятно!!!)
ep4sh
Простите, коллекцию :))
ep4sh
таблицы пусть в mysql живут
yopp
Да, таскать object id
ep4sh
yopp
Вы можете его с более высокой базой кодировать. Например в base63
yopp
Он будет визуально короче.
ep4sh
}{ммм
ep4sh
Хм
ep4sh
Спасибо за ответ)
AstraSerg
ep4sh
ep4sh
Хотя в принципе...эти данные достаточно определяют уникальность элемента...
ep4sh
Верно?
ep4sh
Даж если будет два сыра Российских по 600... тогда разные производители... ведь не бывает, что полностью одинаковые сущности с разным oid
ep4sh
🤔
Alex ZeroDub
Бывает и так. Зависит от бизнес логики.
AstraSerg
Верно?
Именно. Зачем притягивать синтетический идентификатор, если есть исчерпывающее определение без него?
ep4sh
хахха) у меня крутое ощущение
как будто жил до этого дня и не знал
а теперь увидел и прозрел
ep4sh
А где-нибудь можно глянуть примеры готовых mongo-баз (используемых в Ынтерпрайзе)
ep4sh
ну или просто в обиходе
AstraSerg
Буду у компа, смогу дать несколько линков.
AstraSerg
AstraSerg
Буду премного благодарен
еще сам погляжу сейчас
Не знаю на сколько юзабельная, но реальная: https://s3.amazonaws.com/edu-downloads.10gen.com/enron/enron.zip Описание: Enron was an American corporation that engaged in a widespread accounting fraud and subsequently failed.
In this dataset, each document is an email message. Like all Email messages, there is one sender but there can be multiple recipients.
ep4sh
Alchemist
Как происходит апдейт на шардированной коллекции, если в условии не то поле, по которому шардировалась коллекция?
Alchemist
Есть где про это почитать может?
SvPupok
yopp
yopp
https://docs.mongodb.com/manual/core/distributed-queries/#write-operations-on-sharded-clusters
Alchemist
спасибо
Yaroslav
здравствуйте, Товарищи монговоды !
есть инстанс монги версия 3.4
есть реплика сет 4.0
Могу ли я добавить инстанс монги в реплика сет и назначить этот инстанс primary нодой без остановки
этого инстанса и реплика сета, на горячую короче ?
Bro
хм что-то туплю
Bro
$nin and $ne queries cannot be answered by indexes, and force collection scans. If you need to use these ensure you are filtering down using indexes as much as possible and leaving the $nin and $ne terms to the very last part of the query selector.
Bro
действительно так?
Bro
селекты по 100м коллекции с $ne занимают несколько миинут
Bro
эксплэйн показывает что идет сканирование коллекции
AstraSerg