@MongoDBRussian

Страница 287 из 342
Виктор
14.08.2018
07:02:41
Поступила интересная фраза, не используйте монгу, где не надо, тогда где её использовать?

AstraSerg
14.08.2018
07:04:28
Допустим делаю через коллекции, у одной базы есть предел вместимости?
Предела практически нет, как и у коллекции Вот здесь все лимиты https://docs.mongodb.com/manual/reference/limits/

Виктор
14.08.2018
07:04:38
Понятно дело, я могу сделать информационную базу и на постгрес, но концепция хранения вложенных документов мне больше подходит, хотя постгрес уже научился делать так же

Google
Виктор
14.08.2018
07:05:51
Предела практически нет, как и у коллекции Вот здесь все лимиты https://docs.mongodb.com/manual/reference/limits/
Отлично, в каких случаях начинают использовать шардинг? Когда жёсткий диск кончается или есть нагрузка на оперативку при больших объемах информации?

Тоесть не так, когда я пойму, что пора инфу раскидать на разные жёсткие диски? Когда начнет тормозить? Или когда 3 тера начнут к концу подходить, понятно что тормозить и без базы начнет, если весь жёсткий занять, но что случится раньше?

тут всегда так
Не разу не встречал в программировании, ответ на какой-то вопрос: "Не юзайте", он встречается там, где лень отвечать

Виктор
14.08.2018
07:12:58
с почином
Да не, почина не случилось

AstraSerg
14.08.2018
07:16:44
Отлично, в каких случаях начинают использовать шардинг? Когда жёсткий диск кончается или есть нагрузка на оперативку при больших объемах информации?
Когда начинать юзать шардинг написано здесь, например: https://docs.mongodb.com/manual/sharding/ Что случиться раньше подсказать вам не сможет никто, всё сильно зависит от индивидуальных задач. > .... лень отвечать да, таоке бывает достаточно часто. С ленью обычно борятся мотивацией, деньгами или другими плюшками. Но гашение негатива явно в них не входит, извините :)

Виктор
14.08.2018
07:21:42
AstraSerg
14.08.2018
07:24:56
Спасибо за ответы, на практике буду пробовать, если будет хороший результат, отпишу. Скажу что юзайте)
Отлично. По-экспериментируйте, потом поделитесь результатом. Все станем умнее :)

Nick
14.08.2018
08:56:53
Отлично, в каких случаях начинают использовать шардинг? Когда жёсткий диск кончается или есть нагрузка на оперативку при больших объемах информации?
Из личного опыта - знаиматься шардирвоанием нужно как только вы привысили прирост примерно 50-100Гб в месяц и рост прироста продолжается и у вас даже есть еще свободных 4Тб места. В этом слчае у вас будет время изменить структуру бд, доработать приложения, закупить железо и все потестировать, а после еще и перелить данные в новый кластер.

Gleb
14.08.2018
08:58:12
а как на счет вообще советов по шардированию ну вроде того что мол ПОДУМОЙ. потом поздно будет. взад уже не расшардируешь ?

Nick
14.08.2018
08:58:21
так же не стоит думать, что как только вы все расшардили, то все проблемы исчезли - доабвление серваков в кластер и ребаланс даных - это пиздец как медленное дество

Google
Nick
14.08.2018
08:59:13
а как на счет вообще советов по шардированию ну вроде того что мол ПОДУМОЙ. потом поздно будет. взад уже не расшардируешь ?
взад расшардируешь легко, т.к. расшардировать нужно только на малом объеме данных, а их даже тупо бекап/рестор вполне быстро пройдет

Nick
14.08.2018
09:00:58
не исключаю, но для работы с базой больше 100Гб нужен какой никакой опыт, так что либо нанимайте специалистов, которые уже "умные" либо готовьтесь к пиздецу

Gleb
14.08.2018
09:01:52
я рад что есть люди которые это понимают

Nick
14.08.2018
09:02:11
жаль не все)

Khramov
14.08.2018
09:42:29
А можно как-то добавить в кластер новую ноду, но не подтягивать на ней данные из кластера, а оставить свои. А потом в кластере подтянуть данные этой самой ноды?

AstraSerg
14.08.2018
09:46:57
вообще, через дамп/рестор легко можно смёрджить данные

Khramov
14.08.2018
09:47:32
Но рестор данных заниет больше суток, и нужно будет как-то досинкивать данные

yopp
14.08.2018
10:09:45
Удобнее обслуживать при падениях, откатах, частичных модернизациях. Я думал про коллекции, но почитав пару статей меня убедили именно в реализации через множество дб
Переключение между базами достаточно дорогая операция. Задержки которые вы видите, это время наобходимое на «холодное» переключение. После того как необходимые данные попадут в кеш, переключение будет быстрее. Multi-tenancy — гигантское усложнение архитектуры, потому что это по сути шардинг. В монге multi-tenancy имеет смысл рассматривать: 1) для безопасности/изоляции данных, когда вы инструментами субд хотите ограничить доступ к данным 2) для масштабирования, когда у каждого потребителя своя копия инфраструктуры 3) для «BYOI/BYOC», когда потребитель может использовать ваш продукт на своей/арендованной инфраструктуре.

yopp
14.08.2018
10:25:27
Если у вас ещё нет продукта с клиентами, то эти три пункта не для вас :)

Если вы только начинаете разрабатывать продукт, но не имеете опыта с монгой, не берите монгу. Берите ту БД, с которой у вас есть опыт, чтоб максимально быстро проверить гипотезы вашего продукта.

Не думайте о масштабировании, не думайте об оптимизации

Вы не угадаете где вас будут ждать проблемы, так что решать проблемы, которых ещё нет — неэффективно. Примите что вы однозначно ошибётесь и начните итеративно внедрять средства быстрой доставки, анализа производительности, монитринга. С помощью которых вы будете находить проблемы и быстро доставлять их решения. Ключевое слово «итеративно». Не делайте всё сразу.

Виктор
14.08.2018
10:37:17
Понял, спасибо

Если вы только начинаете разрабатывать продукт, но не имеете опыта с монгой, не берите монгу. Берите ту БД, с которой у вас есть опыт, чтоб максимально быстро проверить гипотезы вашего продукта.
Я в основном на монге и работаю, мне очень нравится идея хранения в разных базах, ни тебе мороки с именованием коллекций, не нужны ключи дополнительные в каждых таблицах. Что за собой влечет, постоянное таскание как минимум одного параметра в каждый запрос к бд

Vasiliy
14.08.2018
10:41:23
Всем привет. Кто знает, есть ли возможность сделать .watch на standalone монгодб?

Google
Виктор
14.08.2018
10:45:02
Из ваших рассуждений я могу сделать вывод, что вы не пытаетесь решить реальную проблему. Не идите этим путём :)
Да ее пока нет, я сейчас из системы рассчитанной на одного пользователя, пытаюсь сделать мульти пользовательскую

yopp
14.08.2018
10:45:24
user_id ко всем данным

Виктор
14.08.2018
10:47:36
user_id ко всем данным
Так уже работал в другой системе, не удобно. При каждом апгрейде базы дрожат руки, в надежде что ни у кого ничего не отваливатся

yopp
14.08.2018
10:51:11
Вы симптоматику собираетесь лечить. Если у вас дрожжат руки, то multu-tenancy это дрожжание не решит.

«Не удобно» это вообще убыточное мышление. Вы хотите на порядок увеличить стоимость разработки решения, снизить скорость, добавить огромную операционную сложность, просто потому что вам «не удобно»

Подойдите к проблеме аналитически. Чётко сформулируйте какой результат вы хотите получить. Сформулируйте критерии оценки, с баллами. Составьте список возможных решений, подкорректируйте критерии, оцените. И уже на основе анализа делайте выбор

Виктор
14.08.2018
10:55:21
«Не удобно» это вообще убыточное мышление. Вы хотите на порядок увеличить стоимость разработки решения, снизить скорость, добавить огромную операционную сложность, просто потому что вам «не удобно»
Для себя пишу, стоимость не важна, главное правильность и удобство использования. Вы же с телефоном пади с iphone или чем-то похожим ходите, а не с simens a35

yopp
14.08.2018
10:55:34
Вы зря начинаете защищаться

Vasiliy
14.08.2018
10:56:28
Вы зря начинаете защищаться
Я правильно понял, что могу использовать change stream только для реплики, либо sharded кластера?

Виктор
14.08.2018
10:58:30
Вы зря начинаете защищаться
Ну смотрите, вы предлагаете пойти самым простым путем, а там если выстрелит, и появится проблема, тогда уже переписать все. Я согласен, если бежать изначально за идеалом, ничего и никогда не запустится. Я просто хочу лучше разобраться в технологии которую использую, узнать на что она способна, потому что просто дописать user_id, это вечер с вином

yopp
14.08.2018
10:58:48
Вы сюда пришли за мнением. Моё мнение, основанное на практическом опыте, как своих продуктов, так и чужих — вы выбираете неэффективное решение своей проблемы. «Стоимость не важна», «для себя пишу» случается от несформулированных целей. «Правильно» вообще не существует. Бывает градация эффективности решения

Хотите изучить монгу, сделайте user_id и разберитесь с шардингом

invzbl3
14.08.2018
12:32:37
ребят, кто-то может показать пример с проверкой на существование документа сразу с несколькими полями? Использую java driver. Написал таким образом: https://ghostbin.com/paste/c8qrw но может кто посоветует лучше подход или что почитать? Буду благодарен за наводку.

yopp
14.08.2018
12:40:05
Вам не обязательно заводить целый кластер, вы можете поднять реплику с одной нодой

Google
yopp
14.08.2018
12:40:56
Это уже не standalone.

Vasiliy
14.08.2018
12:41:04
По мануалу делал

https://docs.mongodb.com/manual/tutorial/convert-standalone-to-replica-set/

Ну да, это уже реплика получается

invzbl3
14.08.2018
12:42:00
Так сделайте find и проверьте, вернулось ли что.
я вызвал find в своем примере на одно поле, а как на несколько?

yopp
14.08.2018
12:42:43
я вызвал find в своем примере на одно поле, а как на несколько?
https://docs.mongodb.com/manual/tutorial/query-documents/#specify-and-conditions

Admin
ERROR: S client not available

invzbl3
14.08.2018
12:43:47
AstraSerg
14.08.2018
12:46:40
я вызвал find в своем примере на одно поле, а как на несколько?
Просто через запятую перечислите все поля.

Undefined
14.08.2018
13:49:38
Добрый день. Знает кто причины, почему при добавлении новой записи по схеме mongoose появляется какое-то левое поле?

Undefined
14.08.2018
13:53:14
поле называется не _id случайно?
Как я понял, это количество редактирование (как мне ответили), но не знаю как его удалить, и вообще нужно ли оно, или оставить для put запросов

AstraSerg
14.08.2018
13:53:56
Нет, __v
Да это шутка :) Я не в курсе mongoose-а просто

Undefined
14.08.2018
13:54:08
Больше шансов , что люди ответят)

Спасибо за ответ :)

Nick
14.08.2018
14:13:14
Нет, __v
это версия модели/схемы

Undefined
14.08.2018
14:13:47
Google
Nick
14.08.2018
14:14:14
поспешил http://mongoosejs.com/docs/guide.html#versionKey

всетаки версия самого дока, а не схемы

Артем
14.08.2018
14:46:48
Парни, а можно через батник индекс создать?

Ну т.е прописать соединение а потом выполнить команду создания индекса?

AstraSerg
14.08.2018
14:47:42
Артем
14.08.2018
14:48:08
Ну для выполнения команду создания индекса, нужно же законектиться

Можно это через батник сделать все?

Nick
14.08.2018
14:49:01
да можно, нужно просто передать монгошелу js скрипт с командами

AstraSerg
14.08.2018
14:49:16
зачем батник? что может быть проще: db.createIndex({"key": 1}) ?

Артем
14.08.2018
14:49:22
ОО можно небольшой пример?

Nick
14.08.2018
14:49:28
https://docs.mongodb.com/manual/tutorial/write-scripts-for-the-mongo-shell/

Артем
14.08.2018
14:49:38
Задача такая через Бат скрипт

Nick
14.08.2018
14:49:55
ничего не мешает это делать в батнике

Артем
14.08.2018
14:50:15
Спасибо

Nick
14.08.2018
14:50:46
в общем случае подготавливаете js скрипт, а в батнике уже его скармливаете монгошелу с параметрами подклчюения к бд

Артем
15.08.2018
04:37:38
Парни, если установлен mongoCompass, то можно через piweshell команды отправлять на удалённую бд?

m
15.08.2018
06:16:04
подскажите, по дефолту findOneAndUpdate , если ему передать не весь новый объект, а только небольшую его часть, только замененные поля, то он не удалит старые поля, если на них не пришёл апдейт? Сейчас я просто передаю ему обновленный экземпляр документа целиком, И работает нормально, не хотелось бы сломать

AstraSerg
15.08.2018
07:29:25
Вам для мониторинга или shell? Или вы про вызовы из приложения?

Парни, если установлен mongoCompass, то можно через piweshell команды отправлять на удалённую бд?
Одно с другим не связано. В компасе вы можете работать с вашей БД. Из powershell вы можете подключиться к БД и выполнять любые команды.

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