yopp
Постобраткой, в смысле где результаты работы тасок хранить?
Владимир
Ага
yopp
У вас их сколько?
Владимир
Примерно 1-3м в месяц может больше и постоянный прирост
yopp
Даже если у вас там будет что-то по 4кб и таскок будет 4м в месяц, это не больше 100гб в год
yopp
Храните в чём хотите :)
Владимир
Ну тут как раз и боль в том что никак не могу нагуглить адекватную реализацию очереди под монгу, а у celery ее вроде даже в экспериментальном не увидел, хотя может я зря к ней прицепился))
yopp
Не надо монгу как очередь использовать
yopp
Даже после того как в 3.6 появится нативная история для подписок, монга не будет брокером
yopp
Потому что гарантированно выдать задачу одному консьюмеру это очень нетривиальная задача и я очень надеюсь что монга никогда не будет её пытаться решить :)
yopp
Возьмите celery и rabbitmq или другого брокера с которым у вас есть опыт и использутей брокера. В монгу можно складывать артефакты обработки или статистику
yopp
Но делать на монге очереди — к больной попе и потраченным ни на что деньгам и времени
Владимир
Под таким углом я не смотрел)) Спасибо большое)) буду дальше копать в сторону кролика и прочих танцев с бубном)
Max
@dd_bb направь, пожалуйста, в нужную сторону по такому вопросу:
пытаюсь понять cross datacenter репликацию в монге
https://docs.mongodb.com/manual/tutorial/deploy-geographically-distributed-replica-set/
тут описан, по сути, обычный репликасет, который в моём случае не справится.
правильно ли я понимаю, что мне путь в монго мультимастер с шардированием по датацентрам?
yopp
Эм, а какую проблему нужно решить?
Max
ну если совсем издалека - как объяснить начальству, что они сильно ошибаются.
Суть в том, что географический кусок клиентов отодвинуть в определенный ДЦ - из азии ходить в сша долго и медленно.
пока предлагается подключаться напрямую к базе, и это работать не будет.
тесты я прогоню, но будет стоятьвопрос, как кусок монги перенести в другой дц.
Max
в идеале там своя отдельная монга должна быть и потом какаято программная аггрегация данных, но до этого надо набить пачку шишек.
yopp
Не очень понимаю что значит «географический кусок клиентов отодвинуть в определенный ДЦ»
yopp
Если нужно их вообще изолировать в одном дц, то конечно, шардинг
yopp
Если нужно просто положить контент к ним поближе, то можно как выше
Max
как выше - это репликасет
с полной копией данных?
yopp
Условно: read-only решается простым реплицированием и чтением с secondary, а read-write только шардированием
Max
вот, спасибо
Шардирование неизбежно.
Max
а по опыту - как это переживает падение линка между дц, то есть - между кусками шарда?
yopp
Если вы будете делать как написано в мануале и не будете изобретать велосипеды типа «в идеале там своя отдельная монга должна быть и потом какаято программная аггрегация данных», то просто не будут доступны данные из других регионов
yopp
См: https://docs.mongodb.com/manual/tutorial/sharding-segmenting-data-by-location/
Max
спасибо!
yopp
Только не забудьте mongos и config положить в каждом из дц
yopp
В самом плохом случае, если регион отвалится от остальных — могут быть проблемы со вставкой
Max
я запомню, но до этого еще дойдет явно очень не скоро
Roman
Коллеги, можете подсказать готовые, желательно out-of-box решения для мониторинга монги? Кроме облачных и zabbix'а
Slava
можно попробовать prometheus + экспортер метрик
Petro
как в агрегатке сделать дерево? т.е. есть колекция category(_id, name, parent) Нужно построить дерево. т.е. сначала категории которые без parent потом у каждой из этих категорий, подкатегории... и т.д.
Petro
Или это в js лучше сделать?
Alchemist
Если индекс не background, то таблица может блокироваться сама по себе?
Alchemist
При перестройке индекса?
Slava
что вы имеете в виду под "сама по себе"? в коллекцию не пишут\читаю, а она лочится?
yopp
yopp
Всё дерево или его ветвь можно в один запрос собрать
tenni
yopp
yopp
https://github.com/db-ai/mongo_collection_exporter
Roman
А есть какой-нибудь живой пример того, как это будет выглядеть в Prometheus?
yopp
В графане скорее. Нету, надо будет скрмншотов приложить
Roman
А, данные отображаются в графане? Тогда подойдет, спс
Олег
Как в node.js получить модель mongoose по текстовому значению. Например код
const model = req.query.model
var query = model.find({});
в model приходит имя модели
var query = model.find({}); в таком виде естественно не работает
Anatoliy Skuratov
Oleg
Как монге проще искать по
key: 'channel_id:post_id'
Или
channel_id: 12,
post_id: 23
?
yopp
Если совападение полное то первое
λ
А почему вы так переживаете за "проще"? Монга настолько медленная? Или таааак мноооого запросов?
λ
Пнятненько 😊
yopp
А индексы есть?
Oleg
А индексы есть?
Есть, не спасают
И как на такое вообще индексы ставить?
yopp
Compound index сделать
yopp
Если не спасают, то покажите explain с executionStats
Viktor
Oleg
Viktor
первое, что приходит в голову это как посоветовали выше: compound index по chat id и post id, причем я бы для обоих ключей указал обратную сортировку
Viktor
если айди монотонно растет, то последние ключики будут поближе в поиске
Oleg
yopp
Так нет индекса который поддерживает твой запрос
Oleg
yopp
А что в posts?
yopp
Массив?
Oleg
Oleg
1-10 элементов
yopp
Отлично вообще
yopp
Сортировка есть?
Oleg
Да, поэтому и хочу при первом таком запросе вытаскивать инфу и добавлять в другую коллекцию
Чтобы потом доставать по ключу
yopp
Viktor
тогда отлично
Viktor
index_keys_examined:1, docs_examined: 0 будет
Viktor
идеал
yopp
не будет