@MongoDBRussian

Страница 128 из 342
keystr0ke
26.09.2017
10:36:49
Пробовал, время обработки увеличивается в полтора раза :(

В идеале, нужно сделать lookup, но получать не полные документы, а только их id

Их нужно использовать в дальнейшем

yopp
26.09.2017
10:38:48
Зачем это всё?

Google
yopp
26.09.2017
10:39:00
В смысле какая практическая задача решается

keystr0ke
26.09.2017
10:46:06
Есть связанные сущности, необходимо рассчитать некоторые связи на уровне запросов, менять схему бд и саму бд строго запрещено. Есть упростить, то есть школы, и в каждой школе есть какое-то кол-во учеников, ученики постоянно переходят из одной школы в другую и данные о школе хранит ученик. Получая данные о школе необходимо получить кол-во учеников

Аггрегация используется потому что необходимо сортировать данные, например по кол-ву учеников

Либо по названию школы, где в названии могут использоваться символы разного регистра и хранить их уже приведенными и к одному регистру нельзя, это нужно делать каждый запрос. Вот так :(

yopp
26.09.2017
11:05:06
Почему нельзя менять схему?

А какое количество учеников в базе?

keystr0ke
26.09.2017
11:09:41
Потому что это запрещено, бд неверно спроектирована, да и подобные кейсы больше ложатся на реляционные бд, но необходимо сделать вот так :( Кол-во учеников больше 300тысяч и постоянно растёт

yopp
26.09.2017
11:09:58
Запрещено почему?

300к печально. Какой размер документа средний?

keystr0ke
26.09.2017
11:11:02
500кб,если не ошибаюсь, может немногим меньше.

yopp
26.09.2017
11:11:19
500к на одного ученика?!

keystr0ke
26.09.2017
11:11:51
Сейчас скажу точнее

avgObjSize: 461

Google
yopp
26.09.2017
11:15:35
А. Так лучше. Итого 150 мегабайт.

Делать агрегации по коллекции учеников и не накапливать те атрибуты, которые позднее можно вытащить запросом (например список id учеников в школе)

Например если надо школы по количеству учеников сгруппировать и дальше сортировать, то нужно это делать с коллекцией учеников, а не школ.

Выбрать пару десятков школ по id — миллисекунды.

keystr0ke
26.09.2017
11:18:42
А если нужна выборка? Например нужно получить только школы у который имя директора содержит некоторую подстроку?

yopp
26.09.2017
11:19:51
Включать в запрос агрегации исключение/вхождение по id школ

Школ несколько тысяч?

keystr0ke
26.09.2017
11:20:56
Школ не много, в десятки раз меньше чем учеников, но некоторые ученики могут быть без школы, но это не проблема

И их кол-во почти не растет

yopp
26.09.2017
11:21:36
Т.е. сначала сделать запрос по нужным параметрам в коллекцию школ, получить id и включить их в агрегационный запрос к ученикам через in/nin

А вообще придти и обьяснить что дизайн надо менять.

keystr0ke
26.09.2017
11:22:48
Спасибо, это действительно выглядит логично

yopp
26.09.2017
11:23:01
На это есть время, данные у вас медленные

keystr0ke
26.09.2017
11:25:17
А, есть ещё нюанс - пагинация, на первый запрос мы можем выдернуть вообще все id

А вернуть нужно всего 20-30

yopp
26.09.2017
11:26:20
И что теперь

Если сортировка требует количества учеников, ваша схема не имеет другого решения.

На 150мб это не особая проблема

Проапгредить железо чтоб получить максимальный memory throughput

keystr0ke
26.09.2017
11:29:54
Спасибо за помощь :)

Google
Eliajah
26.09.2017
12:21:04


Как мне запушить в поле rating что-нибудь?

.
27.09.2017
10:11:08
Экспорт не умеет в tsv? в доках не вижу

Как мне запушить в поле rating что-нибудь?
$push? если не ошибаюсь, то default: [] не нужен // извини, я на дату не глянул)

Peter
27.09.2017
12:25:04
какой способ реализации пагинации самый быстрый? есть документы у которых 5+ полей, _id, name и т.д.

Фёдор
27.09.2017
13:55:56
gte lte limit

Народ, у кого самые нормальные сервера можно арендовать в России?

И чтобы ещё была возможность пачку айпи купить не очень дорого

Aleksandr
27.09.2017
13:56:54
пока servers.com устраивает

Фёдор
27.09.2017
13:57:28
пока servers.com устраивает
Были проблемы с отказом оборудования?

Если да, то быстро ли решали?

Aleksandr
27.09.2017
13:58:03
один раз их APC вышел из строя. в течении часа решили

Фёдор
27.09.2017
14:00:32
Пачку айпи купить можно? Канал нормас?

Вижу, 97 рублей за штуку в месяц

Цены в России анальные, конечно...

Vova
27.09.2017
14:59:28
это мягко сказано

Ruslan
27.09.2017
16:55:39
Нет ? рублей в месяц?

Фёдор
27.09.2017
17:58:58
12к за E3, 248гб ссд и 32гб рам это чё то дохера

Такой конфиг за бугром стоит 4-6к

yopp
27.09.2017
17:59:22
180 евро, вполне сносно

Google
yopp
27.09.2017
18:00:08
если с хецнером или онлайн.нет не сравнивать

Фёдор
27.09.2017
18:00:34
Ага, когда на овх цена 60

А чем плох онлайн и хетцнер

yopp
27.09.2017
18:01:02
а, овх тоже можно к хецнеру и онлайну присунуть

это дискаунтеры. сравни с ценником ibm например

Фёдор
27.09.2017
18:02:42
Но сервис то там сносный

yopp
27.09.2017
18:02:52
смотря для чего

Фёдор
27.09.2017
18:02:54
По крайней мере у овх

yopp
27.09.2017
18:03:06
у овх с сетью всё как у всех

Фёдор
27.09.2017
18:03:21
Дедик, паблик Клауд, поддержка

yopp
27.09.2017
18:04:54
в любом случае это дискаунтеры

там за 12к скорее всего не самопал сдают, а какой-то вендорский сервак

Фёдор
27.09.2017
18:05:39
Ну да, делл какой то

yopp
27.09.2017
18:05:51
ну вот теперь сравни сколько делл на хецнере стоит

Фёдор
27.09.2017
18:06:08
Самое главное чтобы поддержка нормальная была

Я наслушался стори про агаву

Которая хдд меняла неделю

И мне ссыкотно стало

Vova
27.09.2017
18:15:37
у меня как раз хецнер и онлайн

единственно хецнер стал НДС с русских брать

Google
Фёдор
27.09.2017
18:41:33
Чтобы по 152 ФЗ не было вопросов, нужно будет хоститься в РФ, поэтому хетцнеры, онлайны и овх отпадают

Peter
28.09.2017
07:08:04
Ребята, views MongoDB вы юзаете? Или это ненужная фича?

Андрей
28.09.2017
08:01:32
Кто знает, как можно в агрегировании задать группировку по интервалу в 5 минут, помогите пожалуйста? Никак не придумаю

keystr0ke
28.09.2017
08:04:22
Андрей
28.09.2017
08:05:42
Мне нужно считать среднее по заданному интервалу, если выбрать интервал в 1 час - получается, а мне надо задавать произвольно количество минут, к примеру 5, и считать среднее за каждый интервал

Nick
28.09.2017
08:27:06
а в каком виде хранится дата, что за час получается а за 5 минут нет?

Андрей
28.09.2017
08:28:04
"created" : ISODate("2017-09-28T11:27:01.056Z")

Я в $project добавляю поле - 'hour': {'$hour': '$created'},

А 5 минут - опыта и ума не хватает

Aivars
28.09.2017
08:30:43
"interval": { "$subtract": [ { "$minute": "$created" }, { "$mod": [{ "$minute": "$created"}, 5] } ] }

Ne proveryal.

Андрей
28.09.2017
08:32:30
Ой, спасибо

Ruslan
28.09.2017
11:09:13
камрады, подскажите, как тестируете работу с монго? я для тестов веб приложения просто подсовывают другое имя БД и всё ок, но надо удалять БД, как это вы делаете в своих тестах

Timur
28.09.2017
11:11:54
У меня перед каждым тестом делается remove() на всех коллекциях и накатываются фикстуры

Ruslan
28.09.2017
11:13:11
ремове... а как гарантируешь, что это делается на тестовой бд?

Timur
28.09.2017
11:13:18
Ну и заново коннект происходит на каждый тест

Ruslan
28.09.2017
11:13:18
на боевой настроена аутентификация?

Timur
28.09.2017
11:13:48
Во время коннекта пишется в коннекшн путь -test + randomstring

С dev и test окружений нет доступа к проду

Ruslan
28.09.2017
11:15:24
во, рандом стринг, это хорошая идея

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