@MongoDBRussian

Страница 306 из 342
Vadim
18.09.2018
09:07:52
Использую монгу в связке с mongoose. Проблема следующая, при извлечении пользователя по _id некоторые пользователи извлекаются быстро , некоторые медленно , подскажите в какую сторону копать?

Заметил что недавно добавленные пользователи находятся быстро, а старые медленно

да вот запрос let user = await User.findOne({_id:user_id}).exec();

пробовал, не помогло

Google
Ruslan
18.09.2018
09:22:13
Можно ли шардировать коллекции по элементу в массиве?

Vadim
18.09.2018
09:23:17
я пробовал findById но проблема осталась, старые пользователи ищутся медленней Если недавно добавленный находится за 0,060 с, то старый 1 сек, В базе около 300 записей

Ruslan
18.09.2018
09:23:21
Например { _id: '8192471', set: [ { token: '123' }, { token: '345' } ] }, { _id: '8192472', set: [ { token: '789' } ] }

На поле token есть индекс

Можно ли шардировать коллекцию по нему?

Nick
18.09.2018
09:33:18
интересный вопрос, видимо охото пострелять себе в ногу. как вы себе представляете куда отправить балансер ваш док, если значения внутри массива будут в разных диапазонах?

монга выгружает не используемые данные обратно на диск и подгружает только при необходимости, вот ваши юзеры и лежат на дисках

AstraSerg
18.09.2018
09:38:24
Nick
18.09.2018
09:38:50
если они тянутся редко - то легко могут улететь на диск

и мы не знаем еще какая стурктура у юзера, может он 10 метров там весит

опять же индексы так же могут быть свопнуты на диск

Google
Nick
18.09.2018
09:40:54
на самом деле легко првоеряется, деалется просто два запрсоа подряд, если второй запрос отрабатывает мгновенно - то значит монга вываливает на диск

AstraSerg
18.09.2018
09:42:31
ага, точно! хороший тест. Я вот только не могу себе представить, что б запрос к коллекции в 300 документов занимал секунду

Nick
18.09.2018
09:42:49
если диски выбиты по IO то изи

опять же - дешевый хостинг не честно выделяющий io или вообще подрезающий

куча факторов, которые могут все затормозить. да даже пресловутая ошибка самого способа измерения времени запроса

AstraSerg
18.09.2018
09:44:45
@vosyukov Всё вам на заметку :)

Nick
18.09.2018
09:44:56
может в сети дроп пакетов 90% и слава богу что вообще хоть чтото отвечает

Nick
18.09.2018
09:45:29
так ведь и не 100% дроп)

это так разминка для мозга понапридумывать причины. в реальности все как правило банально

AstraSerg
18.09.2018
09:46:17
так ведь и не 100% дроп)
тогда правльнее охарактеризовать дроп не "90%", а "периодически большой"

Nick
18.09.2018
09:46:57
наверное да, просто так сразу нагляднее и понятно о чем речь

Алексей
18.09.2018
10:48:38
Привет) может кто подскажет в какую сторону смотреть, нужно найти друзей пользователя (их количество), друзей друзей пользователей (их количество) и вернуть в форме друзья: кол-во, друзья друзей: кол-во. Не понимаю как такое сделать, может рекурсией какой? Я представлял что-то вроде aggregate $match: $in: userid, $project: friends: $$root И далее не знаю

В какую сторону смотреть вообще, чтобы выполнить два раза $match и сформировать в ответ типа $match1: results, $match2: results

Yaroslav
18.09.2018
14:41:07
Хай товарищи монговоды , подскажите по админской части : Есть кубер в нем монга без реплика сета , сделал реплика сет (1 primary 2 secondary ). Реплика сет при старте поднимается чистый, без данных , я с помощью mognorestore раскатываю дамп на primary ноде , насколько я корректно делаю и можно ли обойтись без этого ? У меня не получилось в кубере настроить PVC и реплика сет не видит старых данных или для реплики сета такое поведение нормально ?

и если накатывать дамп то правильно я понимаю что сначало поднимаем primary ноду > накатываем дамп на нее > затем только поднимаем secondary ноды ?

Google
Yaroslav
18.09.2018
14:48:39
Данные не должны теряться Инструкция здесь: https://docs.mongodb.com/manual/tutorial/deploy-replica-set/
даа там готовые чарты кубера , я сам ручками эту дичь не настраивал , чисто через конфиги включал отключал опции , но похоже проблема все таки pvc в самом кубере . а насчёт раскатывания спасибо надеюсь на проме все будет ок )

p4sh
18.09.2018
20:19:21
какой аналог в mongo primary_key Auto increment? собственно не понимаю, как выглядит мало-мальски энтерпрайз БД, не тащятся же записи чисто по текстовым полям?

yopp
18.09.2018
20:20:23
Можно руками, на атомарном inc, монотонно возрастающий счетчик сделать

p4sh
18.09.2018
20:25:52
ххмммм, окау, запилил я такой таблицу с видами сыров и делаю вывод юзеру: 5ba13f7fc22819d582b15eab | Голландский | 399 руб 5ba13f7fc225454a5211fca11| Российский | 500 руб 5ba13f7fc225454a5211f2222| Российский | 600 руб И тут произошел крах человечества и Российский за шесть драных соток (!!!!!) перестал существовать, и надо его удалить. Я как вижу в SQL: DETELE from cheese where id=5ba13f7fc225454a5211f2222 А в mongo не вижу, направьте То ли этот ужасный oid таскать, то ли в моем чердаке проблемы со структурами устройства мира (что вероятно!!!)

Простите, коллекцию :))

таблицы пусть в mysql живут

yopp
18.09.2018
20:27:02
Да, таскать object id

Вы можете его с более высокой базой кодировать. Например в base63

Он будет визуально короче.

p4sh
18.09.2018
20:31:28
}{ммм

Хм

Спасибо за ответ)

p4sh
19.09.2018
05:52:46
В теории, можете и не «таскать». Вы же сами говорите: пропал Российский за 600 рублей, вот и удаляйте {name: "Российский", price: "600 руб"}
Хммм, у меня нет большого опыта, вот родился вопрос: при работе клиентского приложения не произойдет каких косяков?

Хотя в принципе...эти данные достаточно определяют уникальность элемента...

Верно?

Даж если будет два сыра Российских по 600... тогда разные производители... ведь не бывает, что полностью одинаковые сущности с разным oid

?

abc
19.09.2018
05:56:50
Бывает и так. Зависит от бизнес логики.

Google
AstraSerg
19.09.2018
05:58:12
Верно?
Именно. Зачем притягивать синтетический идентификатор, если есть исчерпывающее определение без него?

p4sh
19.09.2018
05:59:20
хахха) у меня крутое ощущение как будто жил до этого дня и не знал а теперь увидел и прозрел

А где-нибудь можно глянуть примеры готовых mongo-баз (используемых в Ынтерпрайзе)

ну или просто в обиходе

AstraSerg
19.09.2018
06:01:46
Буду у компа, смогу дать несколько линков.

p4sh
19.09.2018
06:02:37
Буду у компа, смогу дать несколько линков.
Буду премного благодарен еще сам погляжу сейчас

Constantin
19.09.2018
06:09:25
Именно. Зачем притягивать синтетический идентификатор, если есть исчерпывающее определение без него?
Синтетический id нужен для того, чтобы при изменении предметной области или бизнес-логики их было проще менять

AstraSerg
19.09.2018
07:06:43
Буду премного благодарен еще сам погляжу сейчас
Не знаю на сколько юзабельная, но реальная: 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.

Ruslan
19.09.2018
07:38:08
Как происходит апдейт на шардированной коллекции, если в условии не то поле, по которому шардировалась коллекция?

Есть где про это почитать может?

yopp
19.09.2018
07:47:09
https://docs.mongodb.com/manual/core/distributed-queries/#write-operations-on-sharded-clusters

Ruslan
19.09.2018
08:33:47
спасибо

Страница 306 из 342