
Art
07.07.2017
17:48:34
Это правда что для монги 64битная ось нужна? Удалось поставить 2.x.x какую-то там
Сильно она прожорлива по памяти? 512мб хватит для небольшого проекта? Но с частым обновлением данных прям очень и соответственно с чтением. Так же с большим трафиком

Roman
07.07.2017
17:59:02
Вроде бы больше всего памяти индексы выжирают

Art
07.07.2017
18:02:14
если не секрет, какой у кого трафик и на сколько монга загруженна, на каком сервере и как она вообще в деле

Google

Roman
07.07.2017
18:12:38
Траффик большой - и это самое узкое место у нас

GNU/Docker
07.07.2017
18:15:36
А где вообще встречаются 32-битные оси

Art
07.07.2017
18:27:26
у меня небольшая vds'ka

Tenni
07.07.2017
19:49:26
купите нормальную, ну пиво не попьете

георгий
08.07.2017
10:19:16

yopp
08.07.2017
10:29:10
Но зачем?! За три бакса у овх можно взять 64 битную виртуалку с 2гб оперативы

Dmitry
08.07.2017
14:42:23
А нет...прикольно

Timur
09.07.2017
15:56:20
А есть чат по mongoose? А то здесь оффтопик будет, наверное.
Хотя все-таки попробую. Если у меня есть вложенные документы и я хочу по ним поиск делать по их id. Имеет смысл создать отдельную коллекцию со ссылками на id родительского документа? Или просто индекса на вложенный документ хватит?

A.
09.07.2017
16:29:28

Алексей
10.07.2017
15:10:24
Господа, а кто нить пробовал использовать mongo in memory как замену memcached/redis ?

Vitaliy
10.07.2017
15:33:37
мм

Google

Vitaliy
10.07.2017
15:33:39
а для чего
что ты там хранить собираешься?

Алексей
10.07.2017
15:34:24
то что сейчас храню в мемкеше.
результаты выборок из базы данных

Vitaliy
10.07.2017
15:34:36
тебе недостаточно тех структур данных которые предоставляет редис/мемкеш?

Алексей
10.07.2017
15:42:34
достаточно. но резервирование не радует
ну и по всёй видимости надо использовать не монгу а percona mongo

Евгений
11.07.2017
01:46:25
Привет. Это нормальная практика, когда таскаешь uuid записей в другие документы? Типа внешние ссылки в sql

Sergey
11.07.2017
04:26:27
Это звоночек что на самом деле нужна была sql

Viktor
11.07.2017
04:33:11
А если нужен сразу sql и document store? Использовать сразу две технологии?

Sergey
11.07.2017
04:35:25

Viktor
11.07.2017
04:39:56

Sergey
11.07.2017
04:40:58

Viktor
11.07.2017
04:44:38
Есть мероприятие и список участников, сейчас сделано так, что в мероприятии хранится список участников и их статусы (собирается посетить, не придет итд) и чем больше участников, тем жирней объект. В реляционке было бы две таблицы и только в том случае, когда мне нужны все участники, я бы лез в другую таблицу или делал бы джойн для получения кортежа: айди мероприятия, название, кол-во участников по какому-то критерию
Сейчас пока спасает то, что объект мероприятия изменяется редко после определенного момента и я его могу закешировать

Sergey
11.07.2017
04:47:04
Классический кейс для sql базы

Viktor
11.07.2017
04:49:37
И в этом же приложении есть "анкета", с большим кол-вом атрибутов, которые удобно хранить в одном документе и у них нет внешних зависимостей

Sergey
11.07.2017
04:51:22

Aleksandr
11.07.2017
04:51:38
в постгресе?

Google

Aleksandr
11.07.2017
04:51:45
а то мускуль не особо в джейсон умеет

Viktor
11.07.2017
04:51:54
Про постгрес думал, но пока не дошли руки
Сериализовать в json не хочу, т.к. есть поиск по полям, например find({$exists: "age"})

Sergey
11.07.2017
04:53:03

Aleksandr
11.07.2017
04:53:19
ну судя по всему нужно
поэтому приволокли монгу

Viktor
11.07.2017
04:55:00
Да, поэтому и не только, плюс еще удобная поддержка драйвером полиморфизма. У меня .net
На sql такое раскладывать очень обломно

Aleksandr
11.07.2017
04:56:00
ну хз... монго сильно начинает проседать, когда начинаются поиски по связям

Viktor
11.07.2017
04:56:50
По факту мне связи нужны только в одном-двух местах на всем проекте, но они performance critical

Alex
11.07.2017
04:56:53

Viktor
11.07.2017
04:57:42

Aleksandr
11.07.2017
04:58:12
в sql ты тоже можешь подобие find({$exists: "age"}) запилить
age is not null

Viktor
11.07.2017
04:59:10
Можно, тогда неудобно хранить\выгружать и как мне кажется доступ в монге по айдишнику быстрей, чем фильтр по таблице

Alex
11.07.2017
05:00:22
а в sql доступ не по ID ? лол

Viktor
11.07.2017
05:01:23

Alex
11.07.2017
05:02:11
и что мешает в том же постгресе расширить это типом JSONB ?

Viktor
11.07.2017
05:03:16

Alex
11.07.2017
05:03:33
ой да ладно это делается менее чем за неделю.

Google

Viktor
11.07.2017
05:03:33
Я сейчас не о случае в вакууме, когда я сажусь делать новый проект, а конкретно про рабочий кейс
ЛОЛ

Alex
11.07.2017
05:03:58
у меня был опыт

Viktor
11.07.2017
05:04:26
По-моему слишком смелое заявление без знания кодобазы

Alex
11.07.2017
05:04:38
мышки плакали кололись но упорно ели кактус :)
ну судя по тому что выше, кодобаза таки вполне стандартная

Aleksandr
11.07.2017
05:05:25

Viktor
11.07.2017
05:05:50

Aleksandr
11.07.2017
05:05:57
нет
остались
просто удалили монгу )))

Alex
11.07.2017
05:07:44
Есть кейсы где SQL не подойдет но их скажем так ограниченное количество, и зачаствую на тех же кейсах, монга тоже не нужна будет с вероятностью весьма большой :)

Viktor
11.07.2017
05:07:49
Было бы все так просто) у меня перформанс хаки завязаны на патчи в монге, придется код лопатить нехило, плюс npgsql (.net драйвер) местами очень мерзкий
Пришлось в другом проекте даже собственный пулинг писать
Потому что ну невыносимо было этим пользоваться

Alex
11.07.2017
05:09:38
собственный пулинг много где приходится использовать, это как бы не новость

Sergey
11.07.2017
05:21:10

Viktor
11.07.2017
05:22:54
Сейчас скажу
~300 тысяч, объект в среднем 48кбайт

Google

Alex
11.07.2017
05:25:34
premature optimization as is

Viktor
11.07.2017
05:26:13

Sergey
11.07.2017
05:26:32
Что выбираешь и за сколько мс это происходит?

Viktor
11.07.2017
05:26:34
Есть набор перформанс тестов в apache jmeter
Там была раньше проблема, что т.к. объект жирный, то на сериализацию уходило процессорное время
Кеш и сокращение обращений к данной коллекции решило проблему, сейчас есть коллекция, в которую чисто аппендится новый стейт, там 8.5млн объектов, там была только проблеа с group, но я вроде решил и это
Хотя, может подскажете решение лучше

Sergey
11.07.2017
05:29:43
Сформулируй вопрос

Viktor
11.07.2017
05:31:55
Есть коллекция, типа история стейтов, основная операция чтения - сгруппировать по признаку и взять последнее по дате. Я делаю поиск, потом сортировку по дате в обратном направлении, потом группирую по признаку и беру первое, что попадется в каждом, навесил на это индекс, проверил, что он используется для данного запроса. Сейчас покажу как выглядит запрос
.aggregate([
{ $match: { eventid: 12345, categoryid: 25 } },
{ $sort: { created: -1 } }
{ $group: { _id: "$questionid", state: { $first: "$answerText" } } }
])
Индекс такой { eventid: -1, categoryid: 1, created: -1, questionid:1 }