@MongoDBRussian

Страница 262 из 342
Алексей
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
просто в случае с шардированным кластером, точкой входа является монгос
а где об этом можно прочесть? Вот смотрю раздел connect to a cluster, такого не вижу

Artem
19.06.2018
12:37:13
а где об этом можно прочесть? Вот смотрю раздел connect to a cluster, такого не вижу
я все таки думаю, вы пытаетесь подключиться к репликасету.

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
Второй момент: шардирование почти на порядок увеличивает операционную сложность. Шардированный кластер очень сложно администрировать.

yopp
19.06.2018
12:56:34
кстати а у монги есть транзакции
Нет, но будут частично в 4.0 и к 4.2 будет уже похоже на правду.

M
19.06.2018
12:57:24
Мастер не умеет собирать данные.
а как тогда клиент получает документы если они по всем нодам раскиданы

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

а как тогда клиент получает документы если они по всем нодам раскиданы
Данные не раскиданы по всем нодам , это не кассандра

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 изучить это и настраивать ?

yopp
19.06.2018
13:00:28
а как тогда клиент получает документы если они по всем нодам раскиданы
В replica set есть единственный source of truth — ноду с ролью primary. Все записи идут на неё и как следствие эта нода единственная обладает последним состоянием данных

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
шардинг кстати у него ведь есть тоже понятия реплика тоже но несколько точек входа ?
точкой входа в шардированный кластер является сервис mongos. который знает, на каких сегментах кластера лежат данные, и может собирать их исходя из твоего запроса

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
но есть понятие read preference которое определяет источник чтения
а это через драйвер определяется ? мы используем mongoos

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

Алексей
19.06.2018
13:29:45
а это через драйвер определяется ? мы используем mongoos
обычно это на запрос устанавливается

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

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

rdcm
19.06.2018
15:16:30
?

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
Уже включено :) Но вопрос немножко не про это Мотивация использования арбитра такая, что если разные участники реплика сета потеряют друг друга, возможна ситуация, когда появится два мастера, чтобы этого избежать нужен арбитр

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
скорее ситуация, когда нод 5, а приложений больше 1го
Кроме ряда редких случаев, вам не нужны 5 голосующих нод.

Количество клиентов никак не влияет на топологию кластера.

Вы можете подключать столько клиентов, сколько хватит производительности. Это никакого отношения к количеству нод не имеет

В монге есть две технологии. Одна для устойчивости (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 или альтернатива? Не могу в доке найти

Andruha
19.06.2018
17:24:04
https://docs.mongodb.com/manual/reference/operator/query/nin/#op._S_nin
Спасибо, написал сюда и сразу нашел) неправильно у гугла спрашивал

Ak47
19.06.2018
20:55:49
Hello guys

I'm running electron & I wanna connect to mysql ....any help ??? Or link

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
but not really working im still on search
may be just start learning from scratch? at first you need to start use node.js docs, then express framework, after that go to usage db

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

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