Я использую mongodb с mongoid, в течение 5-6 месяцев.Также работали с postgres + AR, MySQL + AR.У вас нет опыта переключения AR на mongoid.
Вы сталкиваетесь с проблемами производительности или ожидаете их появления в ближайшее время?Если нет, то я бы посоветовал избежать переключения, так как решение, похоже, основано на факторе крутости Mongodb.
У них обоих есть свои плюсы и минусы, мне нравится скорость mongodb, но есть много ограничений на то, что вы можете сделать, чтобы достичь этого (например, нет соединений, нет поддержки транзакций и медленное поле против поля (updated_at)> создал_ат) запросы).
Если есть проблемы с производительностью, я все равно рекомендую придерживаться текущей системы, так как переключение может быть большой задачей, и было бы лучше, если бы вы потратили половину времени на оптимизацию текущей системы.После прочтения вопроса у меня возникает ощущение, что вы никогда раньше не работали с mongodb, есть много вещей, которые могут вас укусить, и вы не будете полностью осведомлены о том, как их решить.
Однако, если вы все еще настаиваете на переключении, вам необходимо тщательно оценить структуру данных и способ их запроса.В реляционной базе данных у вас есть нормальные формы, у которых есть преимущество в том, что с какой бы структурой вы ни начинали, вы примерно достигнете того же конечного результата после нормализации.В mongodb есть практически неограниченные способы моделирования ваших документов.Вам нужно тщательно смоделировать свои документы, чтобы воспользоваться преимуществами mongodb.Запросы, которые вам нужно выполнить, играют очень важную роль в вашей структуризации наряду с фактическими данными, которые вы хотите сохранить.
Имейте в виду, у вас нет соединений в mongodb (может быть смягчено при хорошем моделировании).На данный момент у вас не может быть запросов типа field1 = field2
, т. Е. Вы не можете сравнивать поля, но должны предоставить литерал для запроса.
Посмотрите на этот вопрос: Эффективный способхранить данные в MongoDB: встроенные документы против отдельных документов .Кто-то указывает ОП на обсуждение, где рекомендуются внедренные документы, но в довольно сходном сценарии ОП предпочитает использовать автономные документы из-за характера запросов, которые он будет использовать для извлечения данных.
ВсеЯ хочу сказать, что это должно быть обоснованное решение, которое должно быть принято после того, как вы полностью смоделируете свою систему с помощью mongodb, проведете несколько тестов производительности с некоторыми реальными данными, чтобы увидеть, решит ли mongodb вашу проблему и не должны ли они основываться на факторе крутости.
ОБНОВЛЕНИЕ :
Вы можете сделать field1 = field2
, используя предложение $where
, но это медленно и рекомендуется избегать.