SvPupok
прошу прощения, я с монгусом почти не работаю, но насколько я знаю там есть параметр readPreference который можно указывать при коннекте. Возможно другие коллеги более подробно смогут пояснить.
Aleksey
rdcm
всем привет
есть небольшой реплика сет
arbiter primary secondary, и один инстанс бэкенда
хочется запустить второй, но не очень понятно, что делать с арбитром, я на сколько понимаю он может быть только один
кто-нибудь сталкивался с таким кейсом?
SvPupok
Арбитров может быть больше
rdcm
😳
yopp
rdcm
а есть ссылка на доку где это написано?
yopp
Вам ничего не нужно дополнительно делать с реплика сетом. Убедитесь что все виртуальные машины с клиентами могут присоединиться ко всем нодам кластера.
yopp
И включите аутентификацию.
rdcm
WARNING
In general, avoid deploying more than one arbiter per replica set.
yopp
In general не значит что это совсем запрещено ;)
yopp
Но вам этого и не надо
rdcm
Уже включено :)
Но вопрос немножко не про это
Мотивация использования арбитра такая, что если разные участники реплика сета потеряют друг друга, возможна ситуация, когда появится два мастера, чтобы этого избежать нужен арбитр
yopp
yopp
Кластер останется без мастера
SvPupok
Я когда то читал на гите дискуссию в которой обсуждалось количество арбитров, особенно если репликасет размазан по двум датацентрам
yopp
Но в любом случае: вам не надо ничего менять в кластере в связи с добавленим нового бэкенда
rdcm
>Такой ситуации не будет.
для чего тогда арбитр?
yopp
Для того чтоб выбрать мастера
SvPupok
Можно для упрощения выдать веса членам репликасета
yopp
Арбитр нужен чтоб обеспечить большинство в случае если количество нод с данными четное
rdcm
правильно, а если реплика сет из 5 нод, и одна половина не видит другую из-за сетевых проблем, половинки выбирают мастера между собой
yopp
Чтоб нельзя было на 2 без остатка поделать :)
yopp
yopp
Вы говорили про дополнительных клиентов — бэкенд. Это никакого отношения к обсуждаемое теме не имеет
rdcm
два запущеных бэкенда, подключенных к репликасету
+ невозможность описанной ситуации с двумя мастерами
yopp
rdcm
yopp
Они не участвуют в выборах
yopp
Если у вас уже 1 арбитр и 2 ноды, у вас все в порядке. Вы можете добавлять клиентов, пока не упретесь в производительность. Дальше вам потребуется масштабировать кластер: либо вертикально, добавляя ресурсов к существующим нодам (проще, не рекомендуется) или использовать шардинг (сложнее, рекомендуется).
rdcm
а если арбитр упадет?
SvPupok
Вас смущает возможность выбора мастера из двух нод?
rdcm
скорее ситуация, когда нод 5, а приложений больше 1го
SvPupok
Я думаю количество клиентов которое работает с репликасетом роли особой не играет. У меня в проекте были репликасеты с двумя нодами на быстрых дисках а третья нода была на ненадежном хранилище. Ситуацию с отвалом ненадежной ноды и голосованием среди двух нод решили назначением весов членов репликасета.
yopp
Количество клиентов никак не влияет на топологию кластера.
yopp
Вы можете подключать столько клиентов, сколько хватит производительности. Это никакого отношения к количеству нод не имеет
yopp
В монге есть две технологии.
Одна для устойчивости (HA/FT) — репликация с автоматическим восстановлением после сбоев. Называется Replica Set.
Вторая для масштабирования — сегментирование и балансировка данных. Называется Sharding.
Первую технологи можно в некотором виде использовать для масштабирования, но она для этого не предназначена. Это официальная позиция разработчиков монги.
Если у вас 10 нод в replica set и вы их используете для масштабирования, вы решаете свою задачу неподходящим инструментом.
rdcm
Я представляю разницу между репликасетом и шардингом :)
Есть нюанс, про который забыл упомянуть
Арбитр развернут на той же тачке, что и единственный инстанс приложения.
Т.к. процесс mongod в режиме арбитра легковесный
Собственно сейчас я задумался, а правильно ли это
С другой стороны, отдельную виртуалку под него жалко
Andru
Всем привет. Вот есть оператор $in. А есть ли какой-нибудь $notin или альтернатива? Не могу в доке найти
yopp
Andru
Hotboy 😎
Hello guys
Hotboy 😎
I'm running electron & I wanna connect to mysql ....any help ??? Or link
Nick
Hotboy 😎
found something like this
Hotboy 😎
//creating our own server with node.js
const http = require("http");
//bring in the file system moudle
const fs = require("fs");
const hostname = '127.0.0.1';
const port = 3000;
fs.readFile("index.html", (err, html) => {
if(err){
throw err;
}
const server = http.createServer((req, res)=>{
res.statusCode = 200;
res.setHeader("Content-type", "text/html");
res.write(html);
res.end();
});
server.listen(port,hostname, ()=>{
console.log("Server Started on port "+port);
});
});
Hotboy 😎
but not really working im still on search
Hotboy 😎
yes sure cos i have not actually learn node.js .....im just using my javascript skill to go with it
Hotboy 😎
hey are you the only one who can speak English here
Nick
js is base to learn node.js, node.js is base to create you web (http) server application. It's really simple with node.js but you should learn it before use databases.
Hotboy 😎
ooh no problem i used Mongodb to but i just wanted to ask a question sorry
Nick
I'm not the only one, I think other people don't read chat all time. Moreover your question is offtop. So if you need some help with mongodb there is english mongodb group https://t.me/mongo_db
Hotboy 😎
Nick
And when you will with electron you can google "how to work node.js and $some_shit" it should give more answers than only electron+some_shit
Hotboy 😎
Andru
Всем привет. Юзаю монгуз. Есть модель:
const game = new Schema(
{
name: {
type: String,
required: true
},
items: [
{
item: {
type: Schema.Types.ObjectId,
ref: 'item'
},
order: {
type: Number,
default: 0
}
}
]
}
);
Когда обновляется коллекция 'item', например, какие-то доки в ней удаляются, соответственно я хочу, чтобы эти же доки удалялись и в items в модели game.
Делаю так - удаляет вообще все из items в модели game:
await Game.update({ _id: id }, { $pull: { items: { item: { $nin: items } } } });
Вот так работает:
const game = new Schema(
{
name: {
type: String,
required: true
},
items: [{
type: Schema.Types.ObjectId,
ref: 'item'
}]
}
);
await Game.update({ _id: id }, { $pull: { items: { $nin: items } } });
Но мне нужен именно первый вариант модели для реализации ручной сортировки items внутри game.
Ну и сам вопрос - почему в первом варианте не работает корректно $pull, что я делаю неправильно? Заранее спасибо.
headbody
Простите, но я совсем скрипт кидди и буду задавать совсем глупые вопросы, да я пробовал гуглить, голова пока кругом идёт.
Мне нужно конвертировать файлы из csv в json, какие утилиты для этого есть, чтобы mongo корректно кушал json?
Ибо пока что я как лох пользуюсь http://www.convertcsv.com, потому что там есть отдельная удобная кнопочка под монго, но вебом не всегда удобно пользоваться.
Slava
забавно, vscode выпустили апдейт в котором теперь можно работать с монгой прямо из vscod'a
https://code.visualstudio.com/docs/azure/mongodb
Andru
Slava
еще не успел
Andru
еще не успел
ну как-то работает, данные показывает, хз насколько хватит функционала, надо будет еще покурить настройки и возможности
V
Ребят, есть какие-то предпосылки не ставить mongo в проде в docker/kubernetes
Stepan
я слыхал, что в докере другая файловая система и могут быть проблемы
Stepan
но о конкретных случаях не слышал
Oleg
V
Oleg
Oleg
настроить кибернетс\ранчер это муторная тема
чтоб это все балансилось, контейнеры линковались и писали в нужный файловый драйвер
V
получается предпосылок НеДелать этого нет?
Oleg
продакшеном правит бизнес
если у вас 3 физических хоста
то быстрее и следовательнее дешевле не парится с этим
или пользоваться просто докером с докер-компоуз
V
Oleg
V
Oleg
есть время\ресурсы потратить пару недель?
V
потенциально будет полтора человека