У меня есть серьезное основание использовать MongoDB для части моего приложения. Но люди обычно описывают это как не подходящий вариант для "транзакционных" приложений как банк, где транзакции должны быть точными/последовательными и т.д.
Имеет смысл распадаться, модели в направляющих и иметь некоторых из них используют монго других и MySql? Или это будет обычно вызывать больше проблем, чем это стоит?
Я не создаю банковское приложение или почти думал, что могло бы иметь смысл для таблицы моего пользователя или таблицы транзакций (записывающий доход) вносить свой вклад в MySql.
Это то, что мы делаем с CouchDB и PostgreSQL.
Все наши пользователи и группы находятся в базе данных postgresql.
Все остальное (в нашем случае некоторые записи со статистическими данными) есть в базе данных couchdb.
В нашем случае это позволяет нам иметь одну базу данных couchdb для каждого клиента (приложение подключается к той или другой в зависимости от хоста пользователя).
И только одна база данных postgresql, в которой есть все пользователи.
Да, я думаю, что иметь базы данных SQL и NOSQL в одном приложении - это хорошая идея.
Нет причин, по которым вы не можете сохранить свою таблицу пользователей в MongoDB. Другой вопрос, решите ли вы сохранить таблицу транзакций в MongoDB. Если вам нужны многообъектные транзакции, вы должны использовать реляционную базу данных, которая поддерживает транзакции. Если вам не нужен этот стиль транзакции, тогда использование MongoDB для этого может быть хорошей идеей.
Имейте в виду, что если вы используете MongoDB, мы рекомендуем использовать репликацию для аварийного переключения.
В целом следует иметь в виду, что если вы используете реляционную базу данных из-за гарантий согласованности, вам все равно необходимо убедиться, что ваше оборудование настроено для использования преимуществ этих функций. См. Предупреждение здесь:
http://dev.mysql.com/doc/refman/4.1/en/innodb-configuration.html
Если вы не принимаете эти меры предосторожности, то большой разницы нет. между надежностью MongoDB и надежностью реляционной базы данных.
Подумайте также о долговечности: http://blog.mongodb.org/post/381927266/what-about-durability , например, когда вы теряете мощность (электричество).
Я бы опасался раздельного подхода, хотя и не исключал бы его.
Если вам нужен MySQL + InnoDB, и это звучит так, как вам нужно, я бы представил MongoDB только для желательно более изолированных частей, которые имеют что-то существенное, чтобы получить от преимуществ, которые дает MongoDB, и имеют минимальные связи с основными таблицами MySQL.
В настоящее время я борюсь с той же проблемой: приложение Rails с 20-ю таблицами в MySQL. Использование Mongodb решит некоторые проблемы проектирования баз данных (особенно вложенные подобъекты и столбцы индексируемых массивов), но трудно оправдать дополнительные накладные расходы, связанные с:
Я занимаюсь развертыванием MongoDB для нашей таблицы журналирования, и я собираюсь взять его оттуда.
Я бы сказал, вы сами ответили на свой вопрос здесь.
У меня есть веская причина использовать mongodb в качестве части моего приложения.
Предполагая, что у вас также есть веская причина для сохранения других частей в MySQL, я бы сказал, что да. Ваш вопрос подразумевает (по крайней мере, для меня), что у вас есть хорошее и хорошо изученное понимание различных вариантов, их сильных и слабых сторон, и поэтому вы пришли к разумному выводу о том, что разделение ваших моделей выполнимо.
Предполагая, что две половинки не связаны каким-либо образом (отношения между ними звучат как рецепт боли позже), я бы посоветовал вам пойти на это и использовать каждый инструмент для того, что он лучше всего умеет.
Этот подход позволяет решить некоторые проблемы, которые вызывает Майкл. поскольку вы сосредоточены на использовании Rails, вы можете использовать ActiveRecord для своих моделей на основе MySQL и использовать MongoMapper для моделей на основе MongoDb. Таким образом, вам не придется иметь дело с двумя совершенно разными методами запросов, поскольку MongoMapper обеспечивает очень ActiveRecordish подход. Конечно, вы можете легко перейти к запросам, специфичным для Mongo, когда вам нужно.
На мой взгляд, опасения по поводу взаимосвязей между базами данных обоснованы, и если это то, чего у вас будет много, я определенно посоветую изучить ситуацию, чтобы убедиться, что вы счастливы жить с этим. . Я полагаю, что в этом конкретном случае вы могли бы отложить много боли на потом.
В целом, я бы предположил, что, пока две ваши половинки относительно не связаны друг с другом, для вас будет хорошо работать уровень сохранения раздвоения личности.