Norim
Ваши слова про "думать над бизнес логикой" к сожалению не наводят меня на конкретные действия, которые мне нужно предпринять, чтобы достичь результата.
Norim
Nick
Nick
покажите юзеру что чтото пошло не так и какието заметки потеряются
Nick
Приложение про заметки. Заметки можно записать локально сколько угодно без интернета или оплаты. Потом при включении синхронизации данные должны быть синхронизированы со вторым устройством.
рекомендация выше вылезла из следующего:
- продукт не работает с деньгами или чем критичным (на мой взгляд из описания)
- потеря даже всех записей одного человека может привести разве что к репутационным рискам (опять же проблема уровня погружения)
- потеря нескольких последних записей не принесет даже репутационных рисков
- на рынке куча приложений подобного рода и делать такое же можно только для пет проджекта пощупать технологию и тут достаточно просто узнать о рисках и полностью игнорировать сложность
- если проблему сложно воспроизвести в виде теста, то такая проблема как правило имеет настолько дорогое решение, что оно не перекроет профита и будете скорее всего дороже репутационных рисков. Если же можно воспроизвести в виде теста, то это не проблема, т.к. можно выбрать оптимальное с точки зрения затрат решения
как видите о чем думал касается бизнеса
Norim
Nick
Nick
и задача в кронтабе на pull/push. Правда масштабируется плохо, но с задачей синхронизации справляется достаточно хорошо
Norim
git
Не думаю, что с помощью него можно контролировать пользовательские данные на устройствах.
Norim
Norim
Вы уходите куда-то в абстракции абстракций.
Norim
Я за более конкретное обсуждение потому что пока что мы никуда в нем не продвинулись как мне кажется, кроме того, что нельзя на реалм надеяться, хотя тот же реалм заявляет, что они гарантируют сохранность локальных данных.
Norim
Norim
для меня это ровно тоже что я описал при использовании гита. Делаете в коде периодическое вытягивание новых данных, если на устройстве есть изменения мержите, новое состояние пушите на сервер - два сетевых запроса и немного логики. На бэке простейшая работа с БД и в целом даже без транзакций можно обойтись. Ну и немного обвязки для авторизации юзера.
Если остановиться и перестать гуглить и подумать, то можно заметить что реалм что файирбезовский что монговский делают тоже самое. Ну может там еще нотификашки какието добавлены для удобства, чтоб не ждать следущей итерации. Ну и на бэке там конечно инфра посложнее, но суть та же
Тут есть несколько проблем: решение конфликтов данных, стратегии обновления, например, порционно, как будут данные ждать выгрузки или загрузки, как отправить данные на другое устройство и сколько оно будет ждать.
Norim
Реалм бы решал бы все это вместо меня, что было бы удобно.
Nick
Реалм бы решал бы все это вместо меня, что было бы удобно.
еще раз напомню, этот вопрос на самом деле в области бизнес потребности и стоимости реализации - "решает вместо меня" имеет цену и риски, "я реализую то же самое решая проблемы" тоже имеет цену и риски. К рискам например можно отнести время реализации - риск не успеть до появления продукта конкурента. Так же к рискам относится вопрос "а что я буду делать, если уже во время эксплуатации вылезут проблемы с реалмом" и у этого есть цена. Если вы реально делаете продукт с целью заработать вы обязаны думать именно в таком ключе. Если это петпроджект или допустим MVP для поиграться с технологией и у вас нулевая стоимость времени и рисков, то тогда стоит просто пренебречь потенциальными проблемами отдельных клиентов и просто сделать
Sarvar
Всем доброго времени суток! использую Realm MongoDB. Все работает как планировано.
Но вот вопрос где можно посмотреть данные пользователя например если он сохранил username
Где можно посмотреть
Kvhqm
А нужно ли делать проверку, если я обновляю док через findOneAndUpdate
Kvhqm
Например пользователь нажал "обновить", а потом такой "ой блин, не туда нажал" и получается сохраняет неизмененный док, тем самым дёргает роут
Kvhqm
Конечно можно проверить и на фронте, и на бэкэ, где именно проверять не важно. Важно - нужно ли проверять или нет?
Norim
еще раз напомню, этот вопрос на самом деле в области бизнес потребности и стоимости реализации - "решает вместо меня" имеет цену и риски, "я реализую то же самое решая проблемы" тоже имеет цену и риски. К рискам например можно отнести время реализации - риск не успеть до появления продукта конкурента. Так же к рискам относится вопрос "а что я буду делать, если уже во время эксплуатации вылезут проблемы с реалмом" и у этого есть цена. Если вы реально делаете продукт с целью заработать вы обязаны думать именно в таком ключе. Если это петпроджект или допустим MVP для поиграться с технологией и у вас нулевая стоимость времени и рисков, то тогда стоит просто пренебречь потенциальными проблемами отдельных клиентов и просто сделать
Чтобы не возникло проблем с реалмом я стараюсь симулирувать продакшн условия тестируя на MVP, функционал которого похож на живое приложение. На нем и хочу реализовать синхронизацию, а уже потом мигрировать реальным продуктом на него. Я прочитал почти всю документацию по реалму, дошел до синхронизации и застрял с вопросами.
Одно из решений, которое они предлагаю это иметь 2 БД реалма: одна локальная, одна для синхронизации, но я не могу понять как я этим так буду работать - сразу с двумя. Сопоставлять данные? А если запись в синхронизируемой бд исчезла не потому, что сервер её удалил, а потом, что с другого устройства эту запись удалили и нужно не вернуть копию с локальной, а удалить и в локальной. И вот как все это обрабатывать?
Пока что я к сожалению не нашел решения.
То, о чем вы говорите я понимаю, но хочу более конкретных решений, на которые мне стоит обратить внимание.
Nick
Чтобы не возникло проблем с реалмом я стараюсь симулирувать продакшн условия тестируя на MVP, функционал которого похож на живое приложение. На нем и хочу реализовать синхронизацию, а уже потом мигрировать реальным продуктом на него. Я прочитал почти всю документацию по реалму, дошел до синхронизации и застрял с вопросами.
Одно из решений, которое они предлагаю это иметь 2 БД реалма: одна локальная, одна для синхронизации, но я не могу понять как я этим так буду работать - сразу с двумя. Сопоставлять данные? А если запись в синхронизируемой бд исчезла не потому, что сервер её удалил, а потом, что с другого устройства эту запись удалили и нужно не вернуть копию с локальной, а удалить и в локальной. И вот как все это обрабатывать?
Пока что я к сожалению не нашел решения.
То, о чем вы говорите я понимаю, но хочу более конкретных решений, на которые мне стоит обратить внимание.
вы не нашли решения потому что ищите не в той плоскости - ваше решение в области бизнес логики и ее ограничений.
Сначала должны появиться требования и описания логики происходящего с точки зрения бизнеса. Потом эти требования анализируются и выбирается решение (не факт что реалм) архитектором. Далее стадия аналитики, где выясняется как перенести бизнес потребности в техническую плоскость связанную с кодом и инфраструктурой. Потом подключаются кодеры/админы/девопсы тобишь инженеры, которые уже реализуют хотелки бизнеса. Вы сейчас решаете проблему на уровне инженера, но задаете вопрос, ответ на который должен дать аналитик, переварив потребности уровня бизнеса. Именно бизнес должен сказать, что делать если пользователь на двух устройствах в оффлайн режиме изменил одну и ту же заметку, а потом одновременно включил интернет, потому что это бизнес проблема а не техническая. А как синхронизировать две базы, имея требования с описание в каких ситуация какой результат должен быть, любой мидл разберется
Nick
Чтобы не возникло проблем с реалмом я стараюсь симулирувать продакшн условия тестируя на MVP, функционал которого похож на живое приложение. На нем и хочу реализовать синхронизацию, а уже потом мигрировать реальным продуктом на него. Я прочитал почти всю документацию по реалму, дошел до синхронизации и застрял с вопросами.
Одно из решений, которое они предлагаю это иметь 2 БД реалма: одна локальная, одна для синхронизации, но я не могу понять как я этим так буду работать - сразу с двумя. Сопоставлять данные? А если запись в синхронизируемой бд исчезла не потому, что сервер её удалил, а потом, что с другого устройства эту запись удалили и нужно не вернуть копию с локальной, а удалить и в локальной. И вот как все это обрабатывать?
Пока что я к сожалению не нашел решения.
То, о чем вы говорите я понимаю, но хочу более конкретных решений, на которые мне стоит обратить внимание.
если у вас нет бизнес заказчика, который сформирует требования, нет архитекторов и аналитиков или хотя бы сеньоров, т.е. вы работаете по факту один, то пока вы для себя не зафиксируете ответы на подобные вопросы как если бы были бизнес заказчиков, дальше не продвинитесь
Eva🇺🇦
Привет
А есть разница в том, чтобы хранить массив объектов как json, а bson? Почему вообще кто-то в json сохраняет филды?
Nick
Нуриддин
Нуриддин
даже в юольшенстве вопросов
Danil
почему не получается дропнуть таблицу?
Danil
Абдурахмон
question
WriteError{code=11000, message='E11000 duplicate key error collection: olx.products index: user.username dup key: { user.username: null }', details={}}.
Абдурахмон
Я хочу добавить product, но возникла проблема
Ravshan
ну так он тебе пишет в чём
Абдурахмон
Nick
Абдурахмон
Абдурахмон
Nick
Командой collection.dropIndex() или в интерфейсе найти кнопку
Nick
А стоп
Nick
Вы не там смотрите, в ошибке указан индекс user.username
Tor
Внимание, сообщество! Столкнулся с серьёзной проблемой при работе с MongoDB Atlas, требуется ваша помощь и советы.
Проблема заключается в следующем: при попытке синхронизации данных между моим приложением и кластером MongoDB Atlas возникает ошибка ServerSelectionTimeoutError. Сначала всё начинается с успешного сообщения о подключении, но затем процесс прерывается из-за ошибки подключения к серверу.
Текст ошибки:
ServerSelectionTimeoutError: ac-2pfbyq7-shard-00-00.lgtepjy.mongodb.net:27017: connection closed, ac-2pfbyq7-shard-00-02.lgtepjy.mongodb.net:27017: connection closed, ac-2pfbyq7-shard-00-01.lgtepjy.mongodb.net:27017: connection closed, Timeout: 30s, Topology Description: <TopologyDescription id: 65c3834cdc0914b43336d729, topology_type: ReplicaSetNoPrimary, servers: [<ServerDescription ('ac-2pfbyq7-shard-00-00.lgtepjy.mongodb.net', 27017) server_type: Unknown, rtt: None, error=AutoReconnect('ac-2pfbyq7-shard-00-00.lgtepjy.mongodb.net:27017: connection closed')>, <ServerDescription ('ac-2pfbyq7-shard-00-01.lgtepjy.mongodb.net', 27017) server_type: Unknown, rtt: None, error=AutoReconnect('ac-2pfbyq7-shard-00-01.lgtepjy.mongodb.net:27017: connection closed')>, <ServerDescription ('ac-2pfbyq7-shard-00-02.lgtepjy.mongodb.net', 27017) server_type: Unknown, rtt: None, error=AutoReconnect('ac-2pfbyq7-shard-00-02.lgtepjy.mongodb.net:27017: connection closed')>]>.
Описание ситуации:
Сначала получаю подтверждение о успешном подключении к MongoDB.
Затем происходит ошибка ServerSelectionTimeoutError, указывая на то, что соединения со всеми узлами шарда закрыты и в реплика-сете нет главного узла (ReplicaSetNoPrimary).
Предпринятые шаги:
Проверил настройки сети (VPC, брандмауэры, группы безопасности), чтобы убедиться, что они разрешают подключения к MongoDB.
Пересмотрел настройки безопасности в MongoDB Atlas, включая список IP-адресов для подключения.
Проверил состояние кластера через панель управления MongoDB Atlas, где всё выглядит активным и здоровым.
Изучил логи и метрики мониторинга на предмет возможных проблем.
🔍 Ищу советы и рекомендации от сообщества: возможно, кто-то сталкивался с подобной проблемой или может предложить направления для решения. Любая помощь будет крайне ценна!
Спасибо всем заранее за поддержку и советы!
Nick
Внимание, сообщество! Столкнулся с серьёзной проблемой при работе с MongoDB Atlas, требуется ваша помощь и советы.
Проблема заключается в следующем: при попытке синхронизации данных между моим приложением и кластером MongoDB Atlas возникает ошибка ServerSelectionTimeoutError. Сначала всё начинается с успешного сообщения о подключении, но затем процесс прерывается из-за ошибки подключения к серверу.
Текст ошибки:
ServerSelectionTimeoutError: ac-2pfbyq7-shard-00-00.lgtepjy.mongodb.net:27017: connection closed, ac-2pfbyq7-shard-00-02.lgtepjy.mongodb.net:27017: connection closed, ac-2pfbyq7-shard-00-01.lgtepjy.mongodb.net:27017: connection closed, Timeout: 30s, Topology Description: <TopologyDescription id: 65c3834cdc0914b43336d729, topology_type: ReplicaSetNoPrimary, servers: [<ServerDescription ('ac-2pfbyq7-shard-00-00.lgtepjy.mongodb.net', 27017) server_type: Unknown, rtt: None, error=AutoReconnect('ac-2pfbyq7-shard-00-00.lgtepjy.mongodb.net:27017: connection closed')>, <ServerDescription ('ac-2pfbyq7-shard-00-01.lgtepjy.mongodb.net', 27017) server_type: Unknown, rtt: None, error=AutoReconnect('ac-2pfbyq7-shard-00-01.lgtepjy.mongodb.net:27017: connection closed')>, <ServerDescription ('ac-2pfbyq7-shard-00-02.lgtepjy.mongodb.net', 27017) server_type: Unknown, rtt: None, error=AutoReconnect('ac-2pfbyq7-shard-00-02.lgtepjy.mongodb.net:27017: connection closed')>]>.
Описание ситуации:
Сначала получаю подтверждение о успешном подключении к MongoDB.
Затем происходит ошибка ServerSelectionTimeoutError, указывая на то, что соединения со всеми узлами шарда закрыты и в реплика-сете нет главного узла (ReplicaSetNoPrimary).
Предпринятые шаги:
Проверил настройки сети (VPC, брандмауэры, группы безопасности), чтобы убедиться, что они разрешают подключения к MongoDB.
Пересмотрел настройки безопасности в MongoDB Atlas, включая список IP-адресов для подключения.
Проверил состояние кластера через панель управления MongoDB Atlas, где всё выглядит активным и здоровым.
Изучил логи и метрики мониторинга на предмет возможных проблем.
🔍 Ищу советы и рекомендации от сообщества: возможно, кто-то сталкивался с подобной проблемой или может предложить направления для решения. Любая помощь будет крайне ценна!
Спасибо всем заранее за поддержку и советы!
Чем подключаетесь?
Tor
Чем подключаетесь?
Для подключения к кластеру MongoDB Atlas я использую AWS Lambda. Вот основные детали моего подключения:
Язык программирования: Node.js.
Драйвер MongoDB для Node.js.
Строка подключения взята непосредственно из UI MongoDB Atlas, формат строки следующий: mongodb+srv://<username>:<password>@<cluster-address>/?retryWrites=true&w=majority, где <username>, <password>, и <cluster-address> заменены на актуальные данные для доступа к моему кластеру.
Lambda функция настроена для работы в VPC с доступом в интернет и настроенными группами безопасности, которые разрешают исходящие соединения к MongoDB Atlas.
Использую этот метод для выполнения операций чтения и записи в базу данных из моего приложения.
Надеюсь, это ответит на твой вопрос!
Александр
Пытался найти но не вышло, скните если можно…
У меня в двух коллекциях есть свои уникальные значения, являющиеся индексами.
Как мне связать эти коллекции по этому полю, а не по стандартному _id
Перерыл но видимо это как то иначе называется
wisp
переходи на excel и используй ВПР()
wisp
wisp
Александр
Nick
Nick
wisp
нет
wisp
если говорить по факту, то excel - это очень интересный инструмент)
даже есть поиск самого эффективного распределения средств.
да и написан он на плюсах, поэтому ничего его не загнёт
Александр
Vladimir
Подскажите, можно ли узнать, какой запрос сожрал всю память?
Нуриддин
Нуриддин
В psmdb была функция логирования подобных инцидентов
Нуриддин
Vened
Привет всем
Есть стандалон на версии 6.0.11. Юзер пытается создать следующий partial index:
db.getCollection("autoMeetingRecordTasks").createIndex(
{"domainId": 1,"eventId": 1},
{ partialFilterExpression: {"removed" : {$in:[null, false]}}, unique: true, }
)
- и обламывается с ошибкой:
Uncaught
MongoServerError: Error in specification { partialFilterExpression: { removed: { $in: [ null, false ] } }, unique: true, name: "domainId_1_eventId_1", key: { domainId: 1, eventId: 1 }, v: 2 } :: caused by :: Expression not supported in partial index: removed $in [ null false ]
Но при этом в репликасете с той же версией монги индекс (по его словам) создаётся. В чём может быть проблема?
Asset
Expression not supported in partial index: removed $in [ null false ] ?
Ravshan
в partialFilterExpression $in нельзя юзать как помню попробуй так
partialFilterExpression: {
$or: [
{ "removed": { $exists: false } },
{ "removed": false }
]
},
Vened
Не, затык оказался в другом.
Стандалон обновляли с пятой версии и забыли сделать
db.adminCommand( { setFeatureCompatibilityVersion: "6.0" } )
Vened
Когда сделали - индекс нормально накатился
Kirilll
Всем привет
Обновились с 4 на 6 версию монги
монго шелл версии 2.1.4
Кто то сталкивался с тем, что автокомплишн коллекций и команд по типу findOne не работает?