@MongoDBRussian

Страница 283 из 342
AstraSerg
06.08.2018
13:33:39
db.collection.stats()["indexSizes"] { "_id_" : 4698112, "key_1" : 970752, "created_at_1" : 5419008 }
5,5 мегабайт, похоже, что количество записей в индексе столько же сколько документов. В этом случае лучше не использовать этот индекс

Vasiliy
06.08.2018
13:34:39
ну да) дата создания же)

AstraSerg
06.08.2018
13:35:33
ну да) дата создания же)
ну по большому счёту дата может быть гранулирована до дня, тогда смысл есть

Vasiliy
06.08.2018
13:35:51
ну не, мне с секунадми надо

Google
Vasiliy
06.08.2018
13:35:59
но в теории да

AstraSerg
06.08.2018
13:36:19
но в теории да
да, я как раз про это

ща ссыль найду...

Vasiliy
06.08.2018
13:37:51
как то грустно это, хотелось отфильтровать последнюю запись по конкретной сущности, но чёт с сортом медленно

AstraSerg
06.08.2018
13:41:03
как то грустно это, хотелось отфильтровать последнюю запись по конкретной сущности, но чёт с сортом медленно
Без сорта нет гарантии правильности результата. И вы же кговорили, что доли секунды занимает

Vasiliy
06.08.2018
13:45:22
доли секунды без индекса

я так понимаю без него в какой-то момент данные смогут не влезть в память и запрос упадёт с ошибкой

о чё помогло

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

чтобы лишние поля убрать(там логи с консоли в base64 сохраняются)

и доли секунды вместе с сортом

Vasiliy
06.08.2018
14:02:49
А то я уж было подумал что стату пользователь по полминуты ждать будет

Google
AstraSerg
06.08.2018
14:02:54
> (там логи с консоли в base64 сохраняются) наверно размер большой?

Vasiliy
06.08.2018
14:04:01
> (там логи с консоли в base64 сохраняются) наверно размер большой?
Если в отдельной записи то не очень, но походу в сумме набегает

Там строки 24 с терминала в base64

AstraSerg
06.08.2018
14:05:26
Там строки 24 с терминала в base64
а, ну это много. Конечно такое лучше сразу обрезать

Vasiliy
06.08.2018
14:06:33
а проекции памяти не жрут? на что вообще с монгой обращать внимания чтобы ВНЕЗАПНО не обнаружить что памяти пизда?

AstraSerg
06.08.2018
14:07:11
вот вроде не плохая статья, почитайте: https://mixmax.com/blog/improving-mongo-performance-by-managing-indexes

Vasiliy
06.08.2018
14:09:22
спасибо за помощь

AstraSerg
06.08.2018
14:09:46
Да не за что :)

Всё ни как не найду подходящего описания индексирования

Vasiliy
06.08.2018
15:20:45
добавил стейдж с проджектионом в начало пайплайна
гавно вариант, индексы после прожекта не юзаются

AstraSerg
06.08.2018
15:24:51
гавно вариант, индексы после прожекта не юзаются
Это вы в доках нашли? Ссылку можете дать?

Vasiliy
06.08.2018
15:28:42
https://docs.mongodb.com/manual/reference/operator/aggregation/sort/#sort-operator-and-performance

> If $project, $unwind, or $group occur prior to the $sort operation, $sort cannot use any indexes.

Artem
06.08.2018
20:17:51
Всем привет! Хочу сделать автобекапы с помощью крона на дебиан, но крон не запускает команды, кто знает почему может быть такое? * * * * * mongodump --out /data/mongobackups/`date +"%m-%d-%y"` 3 1 * * * find /data/mongobackups/ -mtime +7 -exec rm -rf {} \;

Artem
06.08.2018
20:40:49
полный путь к монгодамп укажи

Artem
06.08.2018
20:47:39
полный путь к монгодамп укажи
так? /usr/bin/mongodump --out /data/mongobackups/`date +"%m-%d-%y"`

результата нет

Google
Artem
06.08.2018
20:48:16
which mongodump

Artem
06.08.2018
20:48:59
/usr/bin/mongodump

Artem
06.08.2018
20:49:32
что в логах ?

/var/log/syslog

Artem
06.08.2018
20:50:07
root@dedicated:~# service cron status ● cron.service - Regular background program processing daemon Loaded: loaded (/lib/systemd/system/cron.service; enabled) Active: active (running) since Mon 2018-08-06 01:04:55 EEST; 22h ago Docs: man:cron(8) Main PID: 488 (cron) CGroup: /system.slice/cron.service └─488 /usr/sbin/cron -f Aug 06 23:49:01 dedicated CRON[2911]: pam_unix(cron:session): session opened for user root by (uid=0) Aug 06 23:49:01 dedicated CRON[2912]: (root) CMD (/usr/bin/mongodump --out /data/mongobackups/`date +")

/var/log/syslog
Aug 6 23:49:47 dedicated kernel: [81893.117646] [UFW BLOCK] IN=eth0 OUT= MAC=ee:fe:79:fd:cd:41:88:62:7b:fd:be:90:08:00 SRC=178.20.136.84 DST=178.20.156.153 LEN=40 TOS=0x00 PREC=0x00 TTL=240 ID=61420 DF PROTO=TCP SPT=47826 DPT=7547 WINDOW=14600 RES=0x00 SYN URGP=0 Aug 6 23:50:01 dedicated CRON[2969]: (root) CMD (/usr/bin/mongodump --out /data/mongobackups/`date +")

Artem
06.08.2018
20:56:07
mongodump --out /data/mongobackups/date +"%m-%d-%y" 2> /var/log/mongo.log

Artem
06.08.2018
20:59:54
mongodump --out /data/mongobackups/date +"%m-%d-%y" 2> /var/log/mongo.log
Aug 6 23:59:01 dedicated CRON[3410]: (root) CMD (/usr/bin/mongodump --out /data/mongobackups/`date +") Aug 6 23:59:07 dedicated kernel: [82453.303231] [UFW BLOCK] IN=eth0 OUT= MAC=ee:fe:79:fd:cd:41:88:62:7b:fd:be:90:08:00 SRC=95.209.133.119 DST=178.20.156.153 LEN=44 TOS=0x08 PREC=0x20 TTL=52 ID=36535 PROTO=TCP SPT=1732 DPT=8001 WINDOW=56642 RES=0x00 SYN URGP=0

с самой командой mongodump --out /data/mongobackups/`date +"%m-%d-%y"` всё норм

AstraSerg
07.08.2018
05:10:05
@verbat В кроне нужно указать имя пользователя, от которого будет выполняться команда. То есть нужно: * * * * * root mongodump ... если это крон из /etc а не пользовательский. Второе, вам нужно экранировать знаки % По дефолту они конвертируются в перевод строки

Anton
07.08.2018
09:47:36
Здравствуйте, не могу разобраться, как в mongoose 5.2.6 откатить транзакцию?

В документации этот момент как-то обошли

Anatoliy Skuratov
07.08.2018
10:06:24
Здравствуйте, не могу разобраться, как в mongoose 5.2.6 откатить транзакцию?
Session.abortTransaction() - скоре всего так. В node.js драйвере он используется https://docs.mongodb.com/master/core/transactions/#retry-transaction-and-commit-operation

Anton
07.08.2018
10:08:24
Session.abortTransaction() - скоре всего так. В node.js драйвере он используется https://docs.mongodb.com/master/core/transactions/#retry-transaction-and-commit-operation
Спасибо, я функцию находил в исходниках, но не понял как использовать сессию

А на не реплике базы использовать вообще нельзя? Из-за чего вообще такое ограничение?

yopp
07.08.2018
11:44:49
Anton
07.08.2018
11:45:22
реплику пропустили

yopp
07.08.2018
11:46:02
Окей, но всё ещё не понятно что вы имеете ввиду :)

Anton
07.08.2018
11:47:03
"Multi-document transactions are available for replica sets only." А у меня одна база. без реплик

О репликах буду думать когда что-то начнёт работать

Google
yopp
07.08.2018
11:49:27
Архитектурное ограничение.

AstraSerg
07.08.2018
11:50:10
О репликах буду думать когда что-то начнёт работать
Это зря, сначала базис настройте, а потом уж более высокие уровни

Anton
07.08.2018
11:51:48
Чтобы строить базис надо в этом разбираться хорошо. А заказчику затраты на базис несколько не понятны, ему побыстрее надо MVP

yopp
07.08.2018
11:55:09
https://youtu.be/mUbM29tB6d8

Если интересно откуда это ограничение возникает

У вас есть несколько вариантов: 1) пересмотреть архитектуру, убрав необходимость в транзакциях. Это возможно гораздо чаще чем кажется 2) Посчитать операционные ресурсы. На первых этапах, особенно если вы делаете MVP, DBaaS будут существенно дешевле и гибче, нежели in-house содержание. Репликация нужна не только для транзакций, но и для сокращения времени простоя и снижения вероятности фатальной потери данных. 3) Выбрать другую СУБД

Mitya
07.08.2018
12:04:49
Привет Помогите плиз с проблемкой разобраться: https://toster.ru/q/552594

AstraSerg
07.08.2018
12:22:54
Привет Помогите плиз с проблемкой разобраться: https://toster.ru/q/552594
Попробуйте вот здесь: newOrders.item = db.inventory.findOne({"sku": newOrders.item}); заменить: var ord = db.inventory.findOne({"sku": newOrders.item});

AstraSerg
07.08.2018
12:25:09
похоже у вас newOrders.item - undefined

Mitya
07.08.2018
12:25:21
попробовал просто вывести через printjson json выводит, но ошибка всё равно есть

похоже у вас newOrders.item - undefined
почему так может быть?

AstraSerg
07.08.2018
12:26:40
а во всех документах коллекции orders есть поле item? если нет, то будет undefined

Mitya
07.08.2018
12:27:08
не во всех

то есть если в item будет null, то будет ошибка, верно?

AstraSerg
07.08.2018
12:27:34
не во всех
Вот оно и спотыкается на документах, где нет

Mitya
07.08.2018
12:27:41
понял

спасибо большое

AstraSerg
07.08.2018
12:27:57
спасибо большое
да не за что :)

Mitya
07.08.2018
12:28:03
:)

Google
Mitya
07.08.2018
13:49:21
и еще вопрос: пытаюсь поставить индексы на нужных полях db.Ways.ensureIndex({nds: {reference: 1}}) но выкидывает ошибку: { "ok" : 0, "errmsg" : "Values in v:2 index key pattern cannot be of type object. Only numbers > 0, numbers < 0, and strings are allowed.", "code" : 67, "codeName" : "CannotCreateIndex" } что не так может быть? в гугле нашел подобные кейсы https://stackoverflow.com/questions/31772759/getting-bad-index-key-pattern-error-using-mongodb но это всё не то



Mitya
07.08.2018
13:53:06
используйте dot notation nds.reference
сработало, спасибо! где вообще можно почтить про то в каких местах нужно использовать одну нотацию, а в каких другую? или это созидается только курением доки?

yopp
07.08.2018
13:54:36
лучше всегда стараться использовать dot notation, если вы не оперируете хешами целиком

foo.bar: 1 != foo: {bar: 1}

Mitya
07.08.2018
13:55:29
хм понял

спасибо еще раз

yopp
07.08.2018
13:59:52
Stable: 4.0.1 (Aug 6, 2018) Bugfix: 3.6.6 (Jul 10, 2018), Legacy: 3.4.16 (Jul 10, 2018) MongoDB quick overview/production notes: https://www.percona.com/live/e17/sites/default/files/slides/Running%20MongoDB%20in%20Production%20-%20FileId%20-%20115299.pdf 4.0.1: https://docs.mongodb.com/manual/release-notes/4.0/#aug-6-2018 3.6.6: https://docs.mongodb.com/manual/release-notes/3.6/#jul-10-2018 3.4.16: https://docs.mongodb.com/manual/release-notes/3.4/#jul-10-2018 3.2.20: https://docs.mongodb.com/manual/release-notes/3.2/#may-10-2018 (End of life: September 2018) 3.0.x: Support ended February 2018

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