Anonymous
там база 5Гб. оно ж так все в памяти будет
Daniil
там база 5Гб. оно ж так все в памяти будет
Можно асинхронно запрашивать следующий элемент курсора в рамках while например
Daniil
https://docs.mongodb.com/manual/reference/method/cursor.next/#cursor.next
Anonymous
А как в JS драйвере выполнить такой поиск? db.getCollection('videos').find({tags: {$in: [/Awesome/]}})? по совпадению в строке
Alexey
Друзья, подскажите, что я делаю не так?
Nick
Друзья, подскажите, что я делаю не так?
--configdb <replicasetName>/<config1>,<config2>... вам нужно прописать имя реплкисета
Alexey
Я пытался
Alexey
Видимо сначала надо проинициализировать реплику
yopp
Видимо сначала надо проинициализировать реплику
https://docs.mongodb.com/manual/tutorial/deploy-shard-cluster/#connect-a-mongos-to-the-sharded-cluster
yopp
да, сначала делпоить csrs, потом уже подключать монгосы
yopp
монгосам нужен replicaSet connection string с указанием имени реплики и seed листа
yopp
но если вам для локальной разаработки возьмите mlaunch
yopp
http://blog.rueckstiess.com/mtools/mlaunch.html
Alexey
но если вам для локальной разаработки возьмите mlaunch
Нет. Это только испытания. Потом я буду разворачивать на боевых серверах по сети
Alexey
монгосам нужен replicaSet connection string с указанием имени реплики и seed листа
Тэкс. Кажется понял. А настройка шардирования делается после?
yopp
очень рекомендую прочитать весь плейбук, с самого начала, ссылку на который я вам дал
yopp
там подробно описаны все шаги
yopp
в том порядке, в котором они выполняются
Alexey
Хорошо. Спасибо))
yopp
будут вопросы после прочтения — задавайте :)
Ilya
Всем привет, что-то не могу придумать правильный запрос. Подскажите пожалуйста, есть поле "lastRefresh" : ISODate("2019-11-20T21:00:00.000Z") Как мне вывести все совпадения, когда время не 00:00:00 Т.е. вот эта запись как раз подходит. Дата может быть в принципе любой, мне важно именно время.
Ilya
а диапазон дат как-то ограничен?
по логике там только вчерашнее число т.е. на сегодня это 20.11.2019 Но может быть что-то другое, не уверен, что везде вчерашнее По этому и надо только время проверить
Ilya
а диапазон дат как-то ограничен?
Для первой попыти можно попробовть только где дата 2019-11-20, а вреня не 00:00:00
yopp
$gt ISODate("2019-11-20T21:00:00.000Z»), $lte ISODate("2019-11-20T22:00:00.000Z»)
yopp
(или $lt с верхней границы)
Alexey
будут вопросы после прочтения — задавайте :)
У меня вопрос: а вот если арбитры в реплике сервров конфигурации не предусмотрены, а у меня два узла в реплике, получается при падении одного узла выборы не состоятся?
yopp
Такая конфигурация недопустима в csrs
yopp
Минимальное количество нод: 3 и или больше, но при условии что количество нод — нечётное
Alexey
Минимальное количество нод: 3 и или больше, но при условии что количество нод — нечётное
Вас понял) А вот после поднятия реплики серверов конфигурации мы запускаем mongos. После, при работе с базой, мы обращаемся к этому mongos или к реплике серверов конфигурации?
yopp
mongos
Alexey
Хм, но ведь тогда получается, что mongos - узкое место этой схемы. Если он упадет, будет недоступна вся система. mongos можно как-то реплицировать?
Ilya
$gt ISODate("2019-11-20T21:00:00.000Z»), $lte ISODate("2019-11-20T22:00:00.000Z»)
что-то не понял Глянул про $gt и про $lte gt - где значение больше Т.е. надо $gt ISODate("2019-11-20T00:00:01.000Z») Правильно?
yopp
Опять-же, 3 это неплохое начало
yopp
В качестве seed string необходимо указать все mongos
Alexey
Да, вы можете запустить неограниченное число mongos
Ох супер)) синтаксис будет одинаковый на всех экзменплярах (за исключением портов разумеется)?
Alexey
В качестве seed string необходимо указать все mongos
Погодите. Мы ведь в seeds указываем адреса серверов конфигурации, а они mongod
yopp
Конфиг сервера клиентами не используются
Ilya
lastRefresh" : {$gt : ISODate("2019-11-20T21:00:00.000Z")} двоеточие пропустил :)
Alexey
Конфиг сервера клиентами не используются
А, я неверно истолковал Ваши слова. Вы говорили о seeds в строке подключения для клиента (сайта или приложения), верно?
yopp
что-то не понял Глянул про $gt и про $lte gt - где значение больше Т.е. надо $gt ISODate("2019-11-20T00:00:01.000Z») Правильно?
$gt больше, а $gte больше или равно Если в условии указано больше 00:00:00, то 00:00:00 туда не войдёт, как вы и хотите
Alexey
Да, для приложения
Кажется пока все понятно. Ох, ну и система у меня тут вырисовывается. Спасибо большое за помощь!
yopp
Вам точно шард нужен?
Josh
до тех пор пока все работает – нужен 🌚😅
Alexey
Вам точно шард нужен?
Мне ясно дали понять, что да, фирме для определенных задач нужен шард, каждый узел которого будет реплицироваться. При этом сервера конфигурации тоже должны быть реплицированы, а mongos должен крутиться на двух серверах из трех.
yopp
А какие это задачи?
Alexey
Те же, по которым я приходил сюда в прошлый раз - хранение zip архивов без сжатия :) Тогда я сделал реплику на двух ухлах + арбитр. Но встал вопрос о горизонтальной масштабируемости, который я кстати тут с Вами обсуждал. Лучшее решение для этого - кластер
yopp
Вопрос только в том, нужен вам шард сейчас или нет
yopp
Шард это очень дорого
Alexey
Дорого?
yopp
По сравнению с репликой, разница до порядка :)
yopp
Потому что минимум 9 нод
yopp
В реальности 12
Alexey
Я закольцую на трех)
yopp
Это очень плохая идея
yopp
Вам не нужен шард в этом случае
Alexey
Почему? На первом сервер - первый узел шарды, первый узел реплики первого узла шарды, второй узел второго узла шарды, конфиг сервер, mongos. На втором - второй узел шарды, второй узел первого узла шарды, первый узел второго узла шарды, конфиг сервер, mongos. Третий сервер: арбитр для реплики первого узла шарды, арбитр для реплики второго узла шарды, конфиг сервер, mongos. Падает первый или второй сервер, так как все закольцовано и есть арбитры, происходят выборы, данные доступны.
Alexey
Отказоустойчивость и горизонтальная масштабируемость. У нас уже есть терабайты данных, готовые к загрузке и еще десятки терабайт на подходе
yopp
У вас нет масштабирования
yopp
Если у вас уже есть терабайты, то на трёх физических хостах вам будет ОЧЕНЬ ПЛОХО
yopp
в такой конфигурации
yopp
вместо того чтоб пытаться обмануть физику (не выйдет), не тратье денег на дорогое железо чтоб туда напихать нод. это неэффективная стратегия возьмите много дешевого железа, не тратьесь на избыточность и резервирование на самих хостах, деплойте 12 нод
Dmitriy
ребят, а подскажите, в РФ есть какой-нибудь аналог атласа с бесплатным планом? хочу свой петпроект на монгу пересадить, но там перс. данные, поэтому сервера только на территории РФ
yopp
с бесплатным нет, с платным есть яндекс. там недорого
Dmitriy
с бесплатным нет, с платным есть яндекс. там недорого
у яндекса честная монга? не обрезанные варианты аля амазон?
yopp
https://cloud.yandex.ru/services/managed-mongodb
yopp
у яндекса честная монга? не обрезанные варианты аля амазон?
нет. более того, это уже сертифицированное монгой облако
yopp
запустили на прошлой неделе
Dmitriy
ага, спасибо
yopp
там broadwell прямо очень ок стоит
Null
Яндекс опубликовал записи митапа MongoDB и Облако, прошедшего 14 ноября в Москве: Виктор Кесслер, старший архитектор MongoDB, о приемуществах MongoDB: https://www.youtube.com/watch?v=qsI44kQR-8I Евгений Архипов, руководитель подразделения специальных баз данных в Я.Облаке, об управляемой MongoDB в Облаке: https://www.youtube.com/watch?v=Y9x66DDnhsU Павел Перекалов, старший разработчик в Я.Облаке, о стратегиях резервного копирования: https://www.youtube.com/watch?v=UXvW-k3pGxo
Alexander
уже даже 4.2 давно я за монгой не следил
Anonymous
Nodejs mongodb native drive или mongoose
написал же в драйвере
Ilya
Я написал find в котором указал lastRefresh" : {$ne : ISODate("2019-11-20T21:00:00.000Z")} Т.е. все значения НЕ равные этому. но получается вывелись не только только значения у которых параметр не =, но так же и те, у которых такого параметра вообще нет, Как правильно напиать, чтобы исключить их из выборки? Т.е. чтобы были только те у которых есть такой ключ но не с такии значением