@MongoDBRussian

Страница 123 из 342
yopp
01.09.2017
10:14:43
Он тупой

Он балансирует исключительно по числу чанков

Nick
01.09.2017
10:15:21
а как тогда решается?

вручную?

Google
yopp
01.09.2017
10:15:33
Вручную что?

Nick
01.09.2017
10:15:43
перемещать

ну там moveChunk

yopp
01.09.2017
10:16:10
Тут общие советы не работают

В общем случае решается уменьшением размера чанков

Но все зависит от шард ключа и документов

Nick
01.09.2017
10:17:16
кстати а ест ьспособ вывести заполненность каждого чанка ну или размер его?

yopp
01.09.2017
10:17:24
И паттернов записи. И чтения

Чанк — запись в коллекции chunks на конфиг сервере

У него считай нет размера.

Его можно посчитать сделав запрос на каждый диапазон ключа чанка

Nick
01.09.2017
10:19:05
а как монга узнает что пора сплитить чанк?

Google
Nick
01.09.2017
10:19:16
тоже делает подобные запрсоы7

yopp
01.09.2017
10:19:35
Там на mongod свой механизм для этого дела

https://github.com/mongodb/mongo/wiki/Sharding-Internals

Nick
01.09.2017
10:24:57
спасибо почитаю

yopp
01.09.2017
10:27:35
https://github.com/mongodb/mongo/blob/r3.4.2-rc0/src/mongo/s/chunk_manager.cpp#L270

Сорян, в походу в mongos

Alik
01.09.2017
13:43:16
Привет. Есть объект с полем location и radius. Хочется вытянуть все такие объекты которые находятся на расстоянии своего radius а от заданной позиции используя геоиндексы. Есть следующая наработка: model.find({ location: { $near: { $geometry: { type: "Point", coordinates: [ -73.9667, 40.78 ] }, $minDistance: 0, $maxDistance: 5000, }, } } Но как задать radius объекта в $maxDistance?

yopp
01.09.2017
13:48:13
Никак.

А, это не в индексе

"$radius"?

хотя я не уверен что так можно

прикол в том, что надо получить значение radius из документа

как следствие эффективность индекса будет нулевая, так как поиск по индексу будет требовать чтения всех документов

тебе нужно конвернуть координаты + радиус в полигон

и искать по $geoWithin

но afaik в geojs нет возможности задать окружность, так что придётся делать аппроксимацию

В любом случае, ответ: никак :|

Alik
01.09.2017
14:01:23
понял, спасибо!

æ digital
04.09.2017
10:30:09
Парни, кто-то знает редис? Повесил его перед запросом в монгу. Данные успешно кеширует, и если нужного запроса нет, то лезет в монгу. Но проблема - если я обновлю данные в монге, то редис по прежнему возвращает свои значения по этому же ключу, так как думает что у него все есть и не лезет в монгу. Как подцепить сюда логику, чтоб после апдейта монги, данные в редисе тоже обновлялись? Сервер на ноде.

Nick
04.09.2017
10:39:08
с редисом не работал, но думаю помогут ключевые слова write through

Google
Nick
04.09.2017
10:43:36
кстати а редис только из приложухи обновлять или там существуют какиенить адаптеры для БД, чтобы как раз делать read/write through?

Nick
04.09.2017
10:44:46
а консистентность?

между обновлением в кеш и в базе может пройти куча времени

Viktor
04.09.2017
10:46:28
нет готовых решений (насколько я знаю), чтобы к монге прицепить редис вот так по щелчку пальцев

пиши отдельный слой приложения, который рулит кешем

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

æ digital
04.09.2017
10:48:27
Это вне приложения настраивать?

Nick
04.09.2017
10:49:17
просто я использую ignite в связке с pg и там у меня сделано через адаптер -это дает полноценный read/write through. было интересно узнать есть подобное в редисе

æ digital
04.09.2017
10:52:09
Насчёт инвадидации после апдейта монги. У меня ключ в редисе это роут апи сервера. Непонятно как это с монгой увязать

Т.е. редис кеширует данные которые возвращает сервер. А сервер уже в свою очередь запрашивает из монги

Разве что обнулять, если например будут изменения в коллекции любые например. Ну в принципе ок

Почитаю, спс

Буду благодарен за ссылку по теме

Viktor
04.09.2017
10:54:41
Путаешь http-кеширование с кешированием entity

Из быстрых решений: можешь при апдейте в монге составить такой же ключ (роут) и по нему удалить в редисе

но это костыль, конечно же

Google
yopp
04.09.2017
11:13:01
А зачем там вообще редис нужен?

Viktor
04.09.2017
11:51:43
А зачем там вообще редис нужен?
ты спрашиваешь зачем он нужен в принципе?

yopp
04.09.2017
11:52:30
Зачем он в этом случае нужен. В 90% проектов это первое что надо выпиливать.

æ digital
04.09.2017
12:03:18
А зачем там вообще редис нужен?
Зачем на каждый одинаковый запрос лезть в бд?

Ну вот придет 1000 человек по этому роуту. Чтоб не лезть в бд каждый раз, отдавать из памяти

yopp
04.09.2017
12:06:22
...

За тем, что субд для этого и придумана.

Выкинь редис и живи спокойно.

04.09.2017
12:08:36
Думаю, что mongo и сам умеет кэшировать в памяти

Но это не точно

Алексей
04.09.2017
12:09:11
в коммерческой версии да.

yopp
04.09.2017
12:13:33
в коммерческой версии да.
Кэш WT только в коммерческой версии? ?

æ digital
04.09.2017
12:23:11
Кэш WT?

Aivars
04.09.2017
12:23:33
"Горячая" область кэшируется.

æ digital
04.09.2017
12:24:19
Что да. Я спрашиваю что за хрень)))

Aivars
04.09.2017
12:25:28
Что да. Я спрашиваю что за хрень)))
В движке WiredTiger предусмотрено кэширование. https://docs.mongodb.com/manual/core/wiredtiger/ With WiredTiger, MongoDB utilizes both the WiredTiger internal cache and the filesystem cache. Starting in 3.4, the WiredTiger internal cache, by default, will use the larger of either: 50% of RAM minus 1 GB, or 256 MB.

David
04.09.2017
12:37:16
Этим кэшем нельзя управлять. Нельзя задать eviction policy для объектов. И этот кэш не будет распределенным. Потому мне кажется, что вы не совсем то советуете человеку.

Google
Aivars
04.09.2017
12:39:00
Redis хранит ключи в оперативке.

Кэш WiredTiger - тоже.

То есть по сути это лишняя прослойка получается.

Если задача - просто кэшировать результаты.

yopp
04.09.2017
13:07:49
Этим кэшем нельзя управлять. Нельзя задать eviction policy для объектов. И этот кэш не будет распределенным. Потому мне кажется, что вы не совсем то советуете человеку.
Человеку советуют не заниматься предварительной оптимизацией. Кешировние — одна из самых сложных задач. Зачем тратить на неё время, если проблемы не существует.

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