@MongoDBRussian

Страница 309 из 342
Bro
20.09.2018
10:21:49
процессинг элементов из коллекции. берется N документов, обрабатывается. Процесс стартует заново. Кол-во элементов в курсоре нужно для логов / чтобы не передавать лишнее (избыточное) значение между калбэками итд метод есть, почему бы не использовать.

Nick
20.09.2018
10:22:19
а что мешает просто сделать счетчик на стороне приложения?

Bro
20.09.2018
10:22:26
проблема была только в том после limit/skip нужно не забывать with_limit_and_skip ставить в .count()

Nick
20.09.2018
10:22:34
это целый минус один запрос в базу на каждый такой запрос

Google
Nick
20.09.2018
10:22:58
а каждый запрос в бд на порядки дороже счетчика

Bro
20.09.2018
10:27:37
уже сделал

M
20.09.2018
10:44:38
Ребят а есть ли какой то способ тестировать бекапы ? вот скрипт сделал бекап и загружает его на удаленное хранилище , есть ли способ убедиться перед загрузкой на сервер что был сделал рабочий бекап

Dave
20.09.2018
11:58:26
большой бекап
Ну мы так и делаем на бекап сервере

Каждый раз скриптом разворачиваем на staging

M
20.09.2018
12:08:53
Очень важно определится что такое «рабочий бэкап»
рабочий бекап (это копия базы на момент сотворения бекапа)

yopp
20.09.2018
12:09:03
Это очень плохое определение

Нужны конкретные признаки «рабочести»

Измеримые

Google
M
20.09.2018
12:10:15
Это очень плохое определение
а есть какая то теория бекапов ?

определяющая все эти понятия

Dave
20.09.2018
12:12:00
Ибо если будет битый->тесты завалятся

yopp
20.09.2018
12:13:00
Проверка целостности данных — адски сложная штука

Нужно найти какие-то признаки, которые можно сверять.количество документов например. Или если вы храните заказы, то ещё и сумму.

Oleg
20.09.2018
12:22:19
хотябы физический уровень. знать что при восстановлении бекапа база будет доступна, коллекции можно будет вылить

yopp
20.09.2018
12:40:28
А пустые бэкапы это очень частая проблема

Oleg
20.09.2018
12:41:04
можно проверять кодвозврата mongodump-а, размер бекапа /bin/mongodump --username "$DUMPUSER" --password "$DUMPPASS" --authenticationDatabase admin --out ${CURBACKUPDIR} --gzip 2> dump.log STATUS=$? ... SIZE=$(du -sb ${CURBACKUPDIR} | awk '{print $1}') zabbix_sender -c /etc/zabbix/zabbix_agentd.conf -z ${ZABBIX_HOST} -p 10051 -k mongo.backup.status -s "$HOSTNAME" -o "$STATUS" zabbix_sender -c /etc/zabbix/zabbix_agentd.conf -z ${ZABBIX_HOST} -p 10051 -k mongo.backup.size -s "$HOSTNAME" -o "$SIZE" zabbix_sender -c /etc/zabbix/zabbix_agentd.conf -z ${ZABBIX_HOST} -p 10051 -k mongo.backup.path -s "$HOSTNAME" -o "${CURBACKUPDIR}" в мониторинге пиликать на нулевой статус, неприлично мелкий размер бекапа

Nick
20.09.2018
12:41:53
может тогда проще в момент бекапа сохранить текущий размер данных и после рестора его чекать

yopp
20.09.2018
12:42:10
Это косвенный показатель целостности

Бэкап может быть большим, но битым

Nick
20.09.2018
12:42:47
опять же как и говорит @dd_bb нужно для себя явно обозначить критерий "целостности" иначе любые действия будут бесполезны

yopp
20.09.2018
12:42:58
Тут вопрос, вы хотите бэкапы для галочки или для данных

AstraSerg
20.09.2018
12:43:16
хотябы физический уровень. знать что при восстановлении бекапа база будет доступна, коллекции можно будет вылить
Это уже можно назвать достаточно формальным признаком. Если этого достаточно, тогда импортировать и проверить код возврата процесса. Самоя простая и быстрая проверка — посмотреть размер файла бакапа или количество строк (wc -l). но она и самая не надежная. Самая надежная - произвести вычисления на боевой и восстановленной из бакапа базе (типа суммы, как предлагал yopp) но это и долго. Вот вам 2 крайности, выбирайте вариант внутри.

yopp
20.09.2018
12:44:56
Размер это не проверка

Даже контрольная сумма не проверка

Google
yopp
20.09.2018
12:45:30
Потому что по миллиону причин пока у вас может быть битый файл

И процесс завершится успешно

M
20.09.2018
13:10:21
@yopp а можешь пример рассказать на какой то тестовой базе , так как пока что звучит сложно . не получается грамотно сказать что же является целым бекапом( для начала хочется чтобы он был не пустой хотябы)

Vova
20.09.2018
19:05:06
{ _id: "...", Data: { "key1": "value1", "key2": "value2" } } Нужно поменять значение value2 на value3 update({ "Data.key2": "value2" }, { $set: { "Data.key2": "value3" } }) Правильно?

Vova
20.09.2018
19:08:03
updateOne undateMany or update multi true
Та не суть, мне главное json

Vova
20.09.2018
19:08:41
Artem
20.09.2018
20:38:09
Как можно найти все документы, где status = "progress" или "finished"? .findOne({ status: "progress" })

Vova
20.09.2018
20:39:46
{status: { $in: ["progress", "finished"] }}

Artem
20.09.2018
20:41:46
Спасибо

Alex
22.09.2018
12:51:29
Приветы. А насколько плохая идея использовать aggregation framework для обычных регулярных запросов? Понятно, что нереляционность, документо-ориентированность и вот это всё. Но тем не менее случилось страшное - надо джойнить данные две колекции и фильтровать одну на основе полей других. Фактически есть еще путь с хранением избыточных данных. Но интересно попробовать aggregation.

XENONIUM
22.09.2018
12:56:26
{boys:{ Max:{...}, John:{...}} Как найти документы, у которых в объекте boys есть объект Max? через $in?

Nick
22.09.2018
12:57:18
$exists

XENONIUM
22.09.2018
12:59:10
Благодарю

Alex
22.09.2018
13:23:58
Не бывает хороших или плохих идей. Возьмите срез ваших данных и моделируйте запросы
А я вот нигде не найду никаких данных о его произодительности. Знаю, что встроенный map-reduce раньше был однопоточный. А aggregation? Единственный ли ограничивающий фактор у него производительность пайплайна который я передаю или есть еще что-то?

yopp
22.09.2018
13:24:37
Я же вам говорю: лучший способ получить ответы на все ваши вопросы — моделирование на реальных данных

AF во многих моментах сильно лучше чем M/R. Но это тоже не серебрянная пуля. Если вы решите в шарде отсортировать 100Тб коллекцию по неиндексируемому полю, то это однинаково не будет работать как с find так и с AF

Google
yopp
22.09.2018
13:34:47
Задавай вопросы, если что-то будет не так идти

Ну и да, по полям по которым делают lookup индексы нужны

Иначе будет медленно, сканами коллекции

Вам в группу по js. Маловероятно что тут кто-то поможет с драйверами или ODM

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