Ivan
так как там разные уровни консистентности
yopp
и писать при шардировании
Репликация != шардирование
yopp
с реплик можно читать
При соблюдении рад условий, это пограничный кейс. Реплики не являются механизмом масштабирования
Anonymous
Репликации не добавляет ёмкости в кластер
итог простой реплики - отказоустойчивость шарды - производительность верно?
Alex
тип того
yopp
Шарды да, механизм увеличения ёмкости. Но цена решения x3 сразу, плюс увеличение затрат на содержание.
Alex
в какой0то момент в репликах ты можешь читать с них
yopp
Скорее всего атлас будет дешевле
Alex
но тогда будет эвентуал конситенси
yopp
нет
Alex
нет
что нет?
yopp
шарды без реплик не очень юзать я так понимаю
Реплики это строительный блок шардов
Sardor
Лучше не читать из secondary так как есть вероятность что они не успеют реплицировать данные из primary
yopp
что нет?
Тот факт то с реплик можно читать не значит что это чтение будет производительным
yopp
Есть read concern :majority
yopp
платите latency за консистесни
Alex
тут по ситуации. конечно
yopp
Это логическое заблуждение
Anonymous
данных много летит решение не сидеть на одном сервере (выросли) вообщем только шарды с репликами(
Anonymous
я пока начитался запутался уже
yopp
Если на мастер льётся 40 мегабайт данных в секунду, то вы сколько не добавляйте реплик, на них на все эти 40 мегабайт будут реплицироваться
Anonymous
Anonymous
типа такой схемки должно быть в итоге верно @dd_bb ?
yopp
Если эти 40 мегабайт выбирают весь доступный IO, то чтение с реплик ни чем не поможет, потому что на репликах тоже не будет IO capacity из-за оплога
yopp
Реплики НЕ механизм масштабирования.
yopp
примерно
yopp
арбитры не нужны
yopp
с появлением :majority арбитры это устаревшее решение
yopp
Config Server тоже не один, а 3 минимум
Anonymous
арбитры не нужны
вот так и не понял (а сам не проверял еще) кто-то говорил без арбитров так себе жить, переключение медленное а ну в случае шардов наверное да, без реплик можно шард: - primary - secondary
yopp
арбитры нужны только для кворума, но из-за того что на них нет данных, они обеспечивают только голосующий кворум, но не обеспечивают кворум для :majority
yopp
а значит если вы используете read concern :majoriy то арбитры не добавляют отказоустойчивости, потому что :majority при отказе одной ноды не будет иметь кворума для выполнения запроса
Anonymous
@dd_bb в моем случае (да у и всех также видимо) шард 1: - prim - sec шард 2: - prim - sec
yopp
нет
yopp
реплики из 3 нод с данными
yopp
Config Sever Replica Set: 3 ноды Shard 1: 3 ноды Shard 2: 3 ноды Mongos: 3 ноды
yopp
итого 12 нод
yopp
Умножить на $15k в год за Enterprise лицензию, чтоб получить Ops Manager, через который делать бэкапы и ещё железо для хранения бэкапов
Ivan
Запись не масштабируется это и так ясно, но чтение вполне можно масштабировать, за счет жонглирования консистентностью
Ivan
или доступностью
Ivan
поясни
Ivan
ты все еще можешь контролировать скорость репликации
yopp
нет, не можешь
Ivan
кроме того помимо запросов на изменение
Ivan
есть запросы на чтение
Ivan
которые тоже нагружают сервер
Ivan
и вот их можно масштабировать
yopp
да нет же
Ivan
почему нет?
Ivan
почему нельзя сделать вместо 3х запросов на мастер
Ivan
3 запроса на метрики
Ivan
на реплики
Anonymous
Config Sever Replica Set: 3 ноды Shard 1: 3 ноды Shard 2: 3 ноды Mongos: 3 ноды
есть примеры настройки такого монстра?
Ivan
запросы на чтение
Anonymous
Доброго дня. Как добавить в $project произвольное поле? const entries = await Subscription .aggregate([ { $match: { timestamp: parseInt(req.params.timestamp, 10) } }, { $group: { _id: null, sum: { $sum: "$price" } } }, { $project: { _id: false, sum: true } }, { $limit: parseInt(req.params.limit, 10) } ]) Хотел бы получать в ответ объект с полем timestamp и его значением parseInt(req.params.timestamp, 10).
Ivan
просто иначе я не вижу смысла делать causal consistency для монги
Ivan
но ее же сделали
yopp
запросы на чтение
вы почему-то считаете что io на запись и на чтение это изолоированное io
yopp
что ложно
Ivan
стоп
Ivan
я такого не говорил
Ivan
я говорю что у мастера ограниченное IO
Ivan
которое тратится и на чтение и на запись
Ivan
вот IO на чтение можно масштабировать на реплики
Ivan
т е запросы на чтение
Ivan
реплицируются?