@MongoDBRussian

Страница 106 из 342
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
Это правда что для монги 64битная ось нужна? Удалось поставить 2.x.x какую-то там
Wired Tiger требует 64, можно собрать из сорцов, без тигра, но там до версии 3.2 вроде

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

Timur
09.07.2017
15:56:20
А есть чат по mongoose? А то здесь оффтопик будет, наверное.

Хотя все-таки попробую. Если у меня есть вложенные документы и я хочу по ним поиск делать по их id. Имеет смысл создать отдельную коллекцию со ссылками на id родительского документа? Или просто индекса на вложенный документ хватит?

Алексей
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
Господа, а кто нить пробовал использовать mongo in memory как замену memcached/redis ?
Раз нужны быстродоступные данные в памяти то почему бы не использовать структуры данных на сервере, list, map, граф и др любой сложности, а базу использовать для сохранения на диск. Зчем выносить их во внешний redis огранниченный по функциональности?

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
И в этом же приложении есть "анкета", с большим кол-вом атрибутов, которые удобно хранить в одном документе и у них нет внешних зависимостей

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
а то мускуль не особо в джейсон умеет
Если внутри базы по полям анкеты не нужно делать запросов - то неважно, в любой sql базе

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

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
а в sql доступ не по ID ? лол
кол-во атрибутов заранее неизвестно, это не одна таблица с 25 столбиками

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

Viktor
11.07.2017
05:03:16
и что мешает в том же постгресе расширить это типом JSONB ?
Наверное то, что проекту 3 года, он немаленький и просто выкинуть монгу и поставить постгрес нельзя

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
Наверное то, что проекту 3 года, он немаленький и просто выкинуть монгу и поставить постгрес нельзя
тут в чате про постгрес был веселый кейс переезда с монги на постгре

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
кол-во атрибутов заранее неизвестно, это не одна таблица с 25 столбиками
В sql можно к анкете присавокупить поле с метками которое проиндексировать и по которому быстро фильтровать анкеты.. В обоих мирах есть решения, тут скорее вопрос про дальнейшее развитие проекта, в какой парадигме его удобнее дальше наращивать

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
premature optimization as is
Опять-таки преждевременное заявление, не понимаю зачем так говорить

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

Viktor
11.07.2017
05:26:34
Есть набор перформанс тестов в apache jmeter

Что выбираешь и за сколько мс это происходит?
К этой коллекции сейчас доступ в основном по id + кеш, здесь нечего оптимизировать пока что

Там была раньше проблема, что т.к. объект жирный, то на сериализацию уходило процессорное время

Кеш и сокращение обращений к данной коллекции решило проблему, сейчас есть коллекция, в которую чисто аппендится новый стейт, там 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 }

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