yopp
вы можете посмотреть на распредленеие чанков между нодами. если там поровну +/- 2 чанка, то балансировки не будет
yopp
когда на одном из шародов станет больше чем на 2 чанка, тогда балансировщик потащит чанки на шарды с меньшим количеством чанков
yopp
балансировщик в монге дубовый что пипец
Маfеt
да, я уже понял
Маfеt
как раз мой случай, чанки почти поровну
yopp
4.0.6 (Feb 7) ◦ 3.6.10 (Jan 22) • Код запросов: https://play.db-ai.co • Docs: https://docs.mongodb.com/manual/ • Learn MongoDB: https://university.mongodb.com Stable: 4.0.6 (https://docs.mongodb.com/manual/release-notes/4.0/#feb-7-2019) Bugfix: 3.6.10 (https://docs.mongodb.com/manual/release-notes/3.6/#jan-22-2019) Legacy: 3.4.19 (https://docs.mongodb.com/manual/release-notes/3.4/#jan-28-2019, EOL June ’19) End of life: 3.2.21 (Sep ’18), 3.0.15 (Feb ’18)
Kir
спасиб
Yuliy
Всем привет, коллеги, а вы как бекапаете инфу на авсе которая больше 200гб? черезе mongodump ? или тут уже снепшоты решают?
yopp
Зависит от частоты резервного копирования, но да, снепшоты будут более эффективны
Yuliy
ага, понял) спасибо. А то смотрю дамп уже не справляется и мне почему-то в s3 с архивом бекапа всякую ересь по 500б закидывает
Anonymous
Как с помощью NodeJS залить данные в Атлас? Очень много искал, но ничего не нашел
Nick
никакой магии, пишите код
Ivan
в каком смысле залить?
Ivan
const MongoClient = require('mongodb').MongoClient; (async () => { const client = await MongoClient.connect( 'mongodb://127.0.0.1/test', { promiseLibrary: global.Promise, poolSize: 10, useNewUrlParser: true, }, ); await client.db().collection('ttt').insertOne({ created_at: new Date(), }); process.exit(0); })();
Ivan
https://mongodb.github.io/node-mongodb-native/api-generated/mongoclient.html
Anonymous
Благодарю
Ivan
Зависит от частоты резервного копирования, но да, снепшоты будут более эффективны
стоит помнить что еслии volume encrypted то ничего не получится
Ivan
в этом услучае придется делать mongodump/restore и если индексы "весят" оч много то и индексы нужно будет применить уже на существующей/новой БД (и не забываем об { background: true } для PROD)
yopp
стоит помнить что еслии volume encrypted то ничего не получится
Стоить помнить что выбирать инструменты надо исходя из задач. Если ваш инструмент не решает задачу, то следует подобрать другой. Не знаю какие проблемы со снепшотами у амазона. Обычный LVM делает снепшоты, вне зависимости от наличиям LUKS.
yopp
в этом услучае придется делать mongodump/restore и если индексы "весят" оч много то и индексы нужно будет применить уже на существующей/новой БД (и не забываем об { background: true } для PROD)
Background на продакшене это тоже так себе идея. От него IO меньше не станет и ноду всё так-же можно положить. В продакшене катайте индексы с реплик https://docs.mongodb.com/manual/tutorial/build-indexes-on-replica-sets
Ivan
на сколько я понял у человека AWS и тот же AWS не позволяет сделать snapshot c encrypted volume
yopp
Это и есть неверный выбор инструмента.
yopp
Дампы для больших объемов это сложно и может быть ненадежно
yopp
Вместо дампа, во-первых, всегда можно копировать dbPath
yopp
Во-вторых, шифрование и/или снепшоты можно обеспечить другими средства
yopp
Хотя шифрование в облаках это бутафория
Ivan
Хотя шифрование в облаках это бутафория
почему? у меня на проекте это все убословливается политикой компании что бы все было зашиифровано секьюрить и тд
Ivan
Это и есть неверный выбор инструмента.
тогда как же правильно делать дамп например 1TB данных и при этом что бы данные не терялись?
yopp
Не делать дамп
Ivan
а что делать тогда?
yopp
почему? у меня на проекте это все убословливается политикой компании что бы все было зашиифровано секьюрить и тд
Даже при наличии физического контроля над аппаратными средствами, обеспечить безопасное управление ключами — очень сложно. В облаках это ещё сложнее, потому что должны быть очень строгие протоколы, при разработке которых учтена безопасность всех этапов передачи ключей шифрования.
yopp
Но подавляющем числе случаев шифрование включают для галочки, потому что «так безопаснее». Никакой модели угроз нет, не говоря уже о протоколах
Ivan
то есть что нужно было и доказать что при такой практически простой операциии как мигрировании данных есть куча подводных камней и это сделать не так то просто
yopp
Я не знаю какие у вас проблемы с копированием файлов хранилища
yopp
Снепшот это всё тоже самое, с той разницой что вместо полной копии, копируются только изменившиеся блоки
Ivan
вот тут я не понял
Ivan
допустим есть 1TB данных и начинается снепшот (допустим это занимает час-два) за это время появились еще 1M документов
Ivan
что дальше?
yopp
дальше вы идёте и пересматриваете свою стратегию резервного копирования
yopp
более того, даже с дампом, если вы oplog не пишете, у вас тоже не point in time снепшот
Sergei
Привет. Полагаю что сортировку я делаю неправильно потому что список приходит не сортированный. Как делать правильно?
Nick
Но подавляющем числе случаев шифрование включают для галочки, потому что «так безопаснее». Никакой модели угроз нет, не говоря уже о протоколах
больше скажу, по опыту как правило даже при наличии проработанной модели угроз, протоколов, всяких требований к сертификации и т.п., шифрование настраивается, чтобы пройти сертификацию, а не для сохранения чегото там в тайне
yopp
если сертификация нормальная, то там уже базовая модель угроз и какие-то протоколы есть
yopp
есть
yopp
он называется «подбирать инструмент под задачу». у монги достаточно много инструментов
Ivan
например?
yopp
https://docs.mongodb.com/manual/core/backups/
Sergei
вы хотите отсортировать вложенный массив?
Я хочу отсортировать результат который получаю в поле cityNames
yopp
вы можете закинуть пример с данными на play.db-ai.co?
yopp
например?
«классика» — hidden member. отключаем его от кластера и делаем с ним что хотим. на нём будет point in time снимок состояния, который не будет зависеть от текущих изменений в кластере
Sergei
вы можете закинуть пример с данными на play.db-ai.co?
Могу, только немогу поделиться им, не вижу такой функции
yopp
public link справа наверху
Sergei
Не вижу
yopp
а, нажмите на create & run
Sergei
Все равно нет
yopp
а, данные снизу, пайплайн сверху
Sergei
а, данные снизу, пайплайн сверху
https://play.db-ai.co/m/XGPwhwgjhgAB8h97
yopp
ага, всё-же вы хотите отфильтровать массив по значениеям
Sergei
https://play.db-ai.co/m/XGPwhwgjhgAB8h97 Вот так даже. У меня вложенный массив где есть поле city.name я хочу получить их список и этот список отсортировать по алфавиту. Список я получаю, а вот сортировки нет.
Nick
вам нужен $unwind после проекции
Nick
потом уже сортировка
Nick
если я правильно понял что нужно получить отсортирвоанный список городов
Sergei
Спасибо изучу
yopp
Спасибо изучу
по ссылке пример $unwind + $sort + $group
yopp
жалко что в ace editor нельзя добавить нормальную документацию к сниппетам :(
Sergei
тупанул я )
yopp
там порядок -1 :)
yopp
https://play.db-ai.co/m/XGP0hZ_RigABpeZu
Nick
с двумя unwind вместо projection+unwind https://play.db-ai.co/m/XGPxyQgjhgAB8h-S
Nick
хотя такой вариант наверное попрожорливее будет
Nick
поравил ссыль
Sergei
Спасибо, пойду изучать попутно мануалы )
Anonymous
всем привет. Подскажите, рассматривал запущенные на сервере процессы и обнаружил 6 инстансов mongod запущенных от mongodb юзера - это так надо и он сам их включит/выключит, или это я случайно пооткрывал и не закрыл?
yopp
если это не треды (которые менеджеры процессов их показывют как отельные строки), то это вероятно вами запущенные другие копии