
Nick
19.06.2018
12:21:42

Алексей
19.06.2018
12:22:01
поэтому прятать монгу за haproxy довольно странный и специфичный способ стрельнуть в ногу

invzbl3
19.06.2018
12:25:46
Ребят, такой вопрос, вот у меня есть кластер, к которому я могу подключиться через compass и shell. В программе я указываю новую базу и что туда добавить. Когда начинаю запускать программу, то база добавляется по такому пути при запуске команды mongo - mongodb://127.0.0.1:27017, хотя я указываю в программе путь MongoClientURI connectionString = new MongoClientURI("mongodb://логин:пароль@cluster0.mongodb.net/");.

Google

invzbl3
19.06.2018
12:26:48
я так понимаю мне нужно при запуске команды mongo указывать еще и путь к кластеру? Потому что самой базы в кластере нет, она появляется только здесь mongodb://127.0.0.1:27017

Artem
19.06.2018
12:27:18
парни, а вы не путаете кластер с репликасетом?

invzbl3
19.06.2018
12:28:59
вот здесь смотрю https://docs.atlas.mongodb.com/driver-connection/#java-driver-example

Artem
19.06.2018
12:29:41

invzbl3
19.06.2018
12:32:31

Artem
19.06.2018
12:37:13
https://docs.mongodb.com/manual/reference/connection-string/

Mikhail
19.06.2018
12:47:49
Подскажите. Делаю бекенд, в одной ручке нужно в один момент времени сделать upsert и найти данные в другой коллекции. Кажется что может что-то имзенится в момент, когда данные воткнуты и когда я начинаю искать. Как это решается? Ткните, куда почитать и по каким словам искать


yopp
19.06.2018
12:51:18
а как тогда правильно указывать например кластер из 10 нод ?
В монге есть две технологии.
Одна для устойчивости (HA/FT) — репликация с автоматическим восстановлением после сбоев. Называется Replica Set.
Вторая для масштабирования — сегментирование и балансировка данных. Называется Sharding.
Первую технологи можно в некотором виде использовать для масштабирования, но она для этого не предназначена. Это официальная позиция разработчиков монги.
Если у вас 10 нод в replica set и вы их используете для масштабирования, вы решаете свою задачу неподходящим инструментом.
Исходя из того что вы ищите балансировщик, вы хотите именно масштабирование. Балансировщик есть, но он является частью механизма шардирования.
Официальная позиция монги — шардируйте как можно раньше. Чем больше накопится данных, тем сложнее шардировать.

M
19.06.2018
12:55:49

Google

M
19.06.2018
12:56:00
кстати а у монги есть транзакции

yopp
19.06.2018
12:56:16
Второй момент: шардирование почти на порядок увеличивает операционную сложность. Шардированный кластер очень сложно администрировать.

M
19.06.2018
12:56:26

yopp
19.06.2018
12:56:34

M
19.06.2018
12:57:24

yopp
19.06.2018
12:57:24
Праймари может принимать записи и транслировать их остальным участникам кластера.

Mikhail
19.06.2018
12:58:43

yopp
19.06.2018
12:58:54
почему ?
Потому что появляется ещё две операционных единицы: config server replica set и mongos. И возрастает сложность резервного копирования.

Алексей
19.06.2018
12:59:17
и балансировка.
меня она пугает больше всего

M
19.06.2018
13:00:08
блин ну вы даете
Что это за инструмент то
я могу обычным cli или mongodb compass изучить это и настраивать ?

Gleb
19.06.2018
13:00:26

yopp
19.06.2018
13:00:28

M
19.06.2018
13:00:49

yopp
19.06.2018
13:00:55

M
19.06.2018
13:01:54
шардинг кстати у него ведь есть тоже понятия реплика тоже но несколько точек входа ?

yopp
19.06.2018
13:02:16
Строительной единицей шарда является реплика сет

Google

yopp
19.06.2018
13:03:02
Входной точкой является mongos, который использует данные о топологии данных хранящихся в config server для маршрутизации запросов

Artem
19.06.2018
13:03:09

yopp
19.06.2018
13:03:54
В шардированном кластере клиентам запрещено подключаться мимо mongos. Прямое подключение допустимо только для технического обслуживания

Artem
19.06.2018
13:04:39
топология распределения данных хранится в конфигурационном репликасете

M
19.06.2018
13:07:51
а чтение кстати происходит со всех нод или тоже через мастера

Artem
19.06.2018
13:08:05
по умолчанию с мастера.
но есть понятие read preference которое определяет источник чтения

M
19.06.2018
13:10:01

Artem
19.06.2018
13:14:08
прошу прощения, я с монгусом почти не работаю, но насколько я знаю там есть параметр readPreference который можно указывать при коннекте. Возможно другие коллеги более подробно смогут пояснить.

Алексей
19.06.2018
13:29:45

rdcm
19.06.2018
15:13:46
всем привет
есть небольшой реплика сет
arbiter primary secondary, и один инстанс бэкенда
хочется запустить второй, но не очень понятно, что делать с арбитром, я на сколько понимаю он может быть только один
кто-нибудь сталкивался с таким кейсом?

Artem
19.06.2018
15:15:11
Арбитров может быть больше

rdcm
19.06.2018
15:16:30
?

yopp
19.06.2018
15:17:00

rdcm
19.06.2018
15:17:01
а есть ссылка на доку где это написано?

yopp
19.06.2018
15:19:13
Вам ничего не нужно дополнительно делать с реплика сетом. Убедитесь что все виртуальные машины с клиентами могут присоединиться ко всем нодам кластера.
И включите аутентификацию.

rdcm
19.06.2018
15:19:57
WARNING
In general, avoid deploying more than one arbiter per replica set.

yopp
19.06.2018
15:20:51
In general не значит что это совсем запрещено ;)

Google

yopp
19.06.2018
15:21:12
Но вам этого и не надо

rdcm
19.06.2018
15:21:37
Уже включено :)
Но вопрос немножко не про это
Мотивация использования арбитра такая, что если разные участники реплика сета потеряют друг друга, возможна ситуация, когда появится два мастера, чтобы этого избежать нужен арбитр

yopp
19.06.2018
15:22:02
Кластер останется без мастера

Artem
19.06.2018
15:22:24
Я когда то читал на гите дискуссию в которой обсуждалось количество арбитров, особенно если репликасет размазан по двум датацентрам

yopp
19.06.2018
15:22:38
Но в любом случае: вам не надо ничего менять в кластере в связи с добавленим нового бэкенда

rdcm
19.06.2018
15:23:00
>Такой ситуации не будет.
для чего тогда арбитр?

yopp
19.06.2018
15:23:08
Для того чтоб выбрать мастера

Artem
19.06.2018
15:23:41
Можно для упрощения выдать веса членам репликасета

yopp
19.06.2018
15:23:48
Арбитр нужен чтоб обеспечить большинство в случае если количество нод с данными четное

rdcm
19.06.2018
15:24:01
правильно, а если реплика сет из 5 нод, и одна половина не видит другую из-за сетевых проблем, половинки выбирают мастера между собой

yopp
19.06.2018
15:24:02
Чтоб нельзя было на 2 без остатка поделать :)
Вы говорили про дополнительных клиентов — бэкенд. Это никакого отношения к обсуждаемое теме не имеет

rdcm
19.06.2018
15:25:43
два запущеных бэкенда, подключенных к репликасету
+ невозможность описанной ситуации с двумя мастерами

yopp
19.06.2018
15:26:37

rdcm
19.06.2018
15:26:38

yopp
19.06.2018
15:26:43
Они не участвуют в выборах
Если у вас уже 1 арбитр и 2 ноды, у вас все в порядке. Вы можете добавлять клиентов, пока не упретесь в производительность. Дальше вам потребуется масштабировать кластер: либо вертикально, добавляя ресурсов к существующим нодам (проще, не рекомендуется) или использовать шардинг (сложнее, рекомендуется).

rdcm
19.06.2018
15:33:01
а если арбитр упадет?

Google

Artem
19.06.2018
15:33:58
Вас смущает возможность выбора мастера из двух нод?

rdcm
19.06.2018
15:36:11
скорее ситуация, когда нод 5, а приложений больше 1го

Artem
19.06.2018
15:40:15
Я думаю количество клиентов которое работает с репликасетом роли особой не играет. У меня в проекте были репликасеты с двумя нодами на быстрых дисках а третья нода была на ненадежном хранилище. Ситуацию с отвалом ненадежной ноды и голосованием среди двух нод решили назначением весов членов репликасета.


yopp
19.06.2018
16:14:55
Количество клиентов никак не влияет на топологию кластера.
Вы можете подключать столько клиентов, сколько хватит производительности. Это никакого отношения к количеству нод не имеет
В монге есть две технологии.
Одна для устойчивости (HA/FT) — репликация с автоматическим восстановлением после сбоев. Называется Replica Set.
Вторая для масштабирования — сегментирование и балансировка данных. Называется Sharding.
Первую технологи можно в некотором виде использовать для масштабирования, но она для этого не предназначена. Это официальная позиция разработчиков монги.
Если у вас 10 нод в replica set и вы их используете для масштабирования, вы решаете свою задачу неподходящим инструментом.


rdcm
19.06.2018
16:45:55
Я представляю разницу между репликасетом и шардингом :)
Есть нюанс, про который забыл упомянуть
Арбитр развернут на той же тачке, что и единственный инстанс приложения.
Т.к. процесс mongod в режиме арбитра легковесный
Собственно сейчас я задумался, а правильно ли это
С другой стороны, отдельную виртуалку под него жалко

Andruha
19.06.2018
17:14:25
Всем привет. Вот есть оператор $in. А есть ли какой-нибудь $notin или альтернатива? Не могу в доке найти

yopp
19.06.2018
17:22:54

Andruha
19.06.2018
17:24:04

Ak47
19.06.2018
20:55:49
Hello guys
I'm running electron & I wanna connect to mysql ....any help ??? Or link

Nick
19.06.2018
21:00:58

Ak47
19.06.2018
21:02:06
found something like this
//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);
});
});
but not really working im still on search

Nick
19.06.2018
21:04:50

Ak47
19.06.2018
21:05:40
yes sure cos i have not actually learn node.js .....im just using my javascript skill to go with it