AstraSerg
Отлично, в каких случаях начинают использовать шардинг? Когда жёсткий диск кончается или есть нагрузка на оперативку при больших объемах информации?
Когда начинать юзать шардинг написано здесь, например: https://docs.mongodb.com/manual/sharding/ Что случиться раньше подсказать вам не сможет никто, всё сильно зависит от индивидуальных задач. > .... лень отвечать да, таоке бывает достаточно часто. С ленью обычно борятся мотивацией, деньгами или другими плюшками. Но гашение негатива явно в них не входит, извините :)
AstraSerg
Спасибо за ответы, на практике буду пробовать, если будет хороший результат, отпишу. Скажу что юзайте)
Отлично. По-экспериментируйте, потом поделитесь результатом. Все станем умнее :)
Nick
Отлично, в каких случаях начинают использовать шардинг? Когда жёсткий диск кончается или есть нагрузка на оперативку при больших объемах информации?
Из личного опыта - знаиматься шардирвоанием нужно как только вы привысили прирост примерно 50-100Гб в месяц и рост прироста продолжается и у вас даже есть еще свободных 4Тб места. В этом слчае у вас будет время изменить структуру бд, доработать приложения, закупить железо и все потестировать, а после еще и перелить данные в новый кластер.
Gleb
а как на счет вообще советов по шардированию ну вроде того что мол ПОДУМОЙ. потом поздно будет. взад уже не расшардируешь 😄
Nick
так же не стоит думать, что как только вы все расшардили, то все проблемы исчезли - доабвление серваков в кластер и ребаланс даных - это пиздец как медленное дество
Nick
а как на счет вообще советов по шардированию ну вроде того что мол ПОДУМОЙ. потом поздно будет. взад уже не расшардируешь 😄
взад расшардируешь легко, т.к. расшардировать нужно только на малом объеме данных, а их даже тупо бекап/рестор вполне быстро пройдет
Nick
не исключаю, но для работы с базой больше 100Гб нужен какой никакой опыт, так что либо нанимайте специалистов, которые уже "умные" либо готовьтесь к пиздецу
Gleb
я рад что есть люди которые это понимают
Nick
жаль не все)
Khramov
А можно как-то добавить в кластер новую ноду, но не подтягивать на ней данные из кластера, а оставить свои. А потом в кластере подтянуть данные этой самой ноды?
AstraSerg
вообще, через дамп/рестор легко можно смёрджить данные
Khramov
Но рестор данных заниет больше суток, и нужно будет как-то досинкивать данные
yopp
Удобнее обслуживать при падениях, откатах, частичных модернизациях. Я думал про коллекции, но почитав пару статей меня убедили именно в реализации через множество дб
Переключение между базами достаточно дорогая операция. Задержки которые вы видите, это время наобходимое на «холодное» переключение. После того как необходимые данные попадут в кеш, переключение будет быстрее. Multi-tenancy — гигантское усложнение архитектуры, потому что это по сути шардинг. В монге multi-tenancy имеет смысл рассматривать: 1) для безопасности/изоляции данных, когда вы инструментами субд хотите ограничить доступ к данным 2) для масштабирования, когда у каждого потребителя своя копия инфраструктуры 3) для «BYOI/BYOC», когда потребитель может использовать ваш продукт на своей/арендованной инфраструктуре.
yopp
Если у вас ещё нет продукта с клиентами, то эти три пункта не для вас :)
yopp
Если вы только начинаете разрабатывать продукт, но не имеете опыта с монгой, не берите монгу. Берите ту БД, с которой у вас есть опыт, чтоб максимально быстро проверить гипотезы вашего продукта.
yopp
Не думайте о масштабировании, не думайте об оптимизации
yopp
Вы не угадаете где вас будут ждать проблемы, так что решать проблемы, которых ещё нет — неэффективно. Примите что вы однозначно ошибётесь и начните итеративно внедрять средства быстрой доставки, анализа производительности, монитринга. С помощью которых вы будете находить проблемы и быстро доставлять их решения. Ключевое слово «итеративно». Не делайте всё сразу.
Виктор
Понял, спасибо
Виктор
Если вы только начинаете разрабатывать продукт, но не имеете опыта с монгой, не берите монгу. Берите ту БД, с которой у вас есть опыт, чтоб максимально быстро проверить гипотезы вашего продукта.
Я в основном на монге и работаю, мне очень нравится идея хранения в разных базах, ни тебе мороки с именованием коллекций, не нужны ключи дополнительные в каждых таблицах. Что за собой влечет, постоянное таскание как минимум одного параметра в каждый запрос к бд
Vasiliy
Всем привет. Кто знает, есть ли возможность сделать .watch на standalone монгодб?
yopp
Один параметр — лучшее что вы можете получить
Виктор
Из ваших рассуждений я могу сделать вывод, что вы не пытаетесь решить реальную проблему. Не идите этим путём :)
Да ее пока нет, я сейчас из системы рассчитанной на одного пользователя, пытаюсь сделать мульти пользовательскую
yopp
user_id ко всем данным
Виктор
user_id ко всем данным
Так уже работал в другой системе, не удобно. При каждом апгрейде базы дрожат руки, в надежде что ни у кого ничего не отваливатся
yopp
Вы симптоматику собираетесь лечить. Если у вас дрожжат руки, то multu-tenancy это дрожжание не решит.
yopp
«Не удобно» это вообще убыточное мышление. Вы хотите на порядок увеличить стоимость разработки решения, снизить скорость, добавить огромную операционную сложность, просто потому что вам «не удобно»
yopp
Подойдите к проблеме аналитически. Чётко сформулируйте какой результат вы хотите получить. Сформулируйте критерии оценки, с баллами. Составьте список возможных решений, подкорректируйте критерии, оцените. И уже на основе анализа делайте выбор
Виктор
«Не удобно» это вообще убыточное мышление. Вы хотите на порядок увеличить стоимость разработки решения, снизить скорость, добавить огромную операционную сложность, просто потому что вам «не удобно»
Для себя пишу, стоимость не важна, главное правильность и удобство использования. Вы же с телефоном пади с iphone или чем-то похожим ходите, а не с simens a35
yopp
Вы зря начинаете защищаться
Vasiliy
Вы зря начинаете защищаться
Я правильно понял, что могу использовать change stream только для реплики, либо sharded кластера?
Виктор
Вы зря начинаете защищаться
Ну смотрите, вы предлагаете пойти самым простым путем, а там если выстрелит, и появится проблема, тогда уже переписать все. Я согласен, если бежать изначально за идеалом, ничего и никогда не запустится. Я просто хочу лучше разобраться в технологии которую использую, узнать на что она способна, потому что просто дописать user_id, это вечер с вином
yopp
Вы сюда пришли за мнением. Моё мнение, основанное на практическом опыте, как своих продуктов, так и чужих — вы выбираете неэффективное решение своей проблемы. «Стоимость не важна», «для себя пишу» случается от несформулированных целей. «Правильно» вообще не существует. Бывает градация эффективности решения
yopp
Хотите изучить монгу, сделайте user_id и разберитесь с шардингом
ᅠ ᅠ ᅠ ᅠ
ребят, кто-то может показать пример с проверкой на существование документа сразу с несколькими полями? Использую java driver. Написал таким образом: https://ghostbin.com/paste/c8qrw но может кто посоветует лучше подход или что почитать? Буду благодарен за наводку.
yopp
Вам не обязательно заводить целый кластер, вы можете поднять реплику с одной нодой
yopp
Это уже не standalone.
Vasiliy
По мануалу делал
Vasiliy
https://docs.mongodb.com/manual/tutorial/convert-standalone-to-replica-set/
Vasiliy
Ну да, это уже реплика получается
ᅠ ᅠ ᅠ ᅠ
Так сделайте find и проверьте, вернулось ли что.
я вызвал find в своем примере на одно поле, а как на несколько?
yopp
я вызвал find в своем примере на одно поле, а как на несколько?
https://docs.mongodb.com/manual/tutorial/query-documents/#specify-and-conditions
AstraSerg
я вызвал find в своем примере на одно поле, а как на несколько?
Просто через запятую перечислите все поля.
Mira
Добрый день. Знает кто причины, почему при добавлении новой записи по схеме mongoose появляется какое-то левое поле?
Mira
поле называется не _id случайно?
Как я понял, это количество редактирование (как мне ответили), но не знаю как его удалить, и вообще нужно ли оно, или оставить для put запросов
AstraSerg
Нет, __v
Да это шутка :) Я не в курсе mongoose-а просто
Mira
Больше шансов , что люди ответят)
Mira
Спасибо за ответ :)
Nick
Нет, __v
это версия модели/схемы
Nick
поспешил http://mongoosejs.com/docs/guide.html#versionKey
Nick
всетаки версия самого дока, а не схемы
Артем
Парни, а можно через батник индекс создать?
Артем
Ну т.е прописать соединение а потом выполнить команду создания индекса?
Артем
Ну для выполнения команду создания индекса, нужно же законектиться
Артем
Можно это через батник сделать все?
Nick
да можно, нужно просто передать монгошелу js скрипт с командами
AstraSerg
зачем батник? что может быть проще: db.createIndex({"key": 1}) ?
Артем
ОО можно небольшой пример?
Nick
https://docs.mongodb.com/manual/tutorial/write-scripts-for-the-mongo-shell/
Артем
Задача такая через Бат скрипт
Nick
ничего не мешает это делать в батнике