Имеет смысл использовать И mongodb и mysql в том же приложении направляющих?

У меня есть серьезное основание использовать MongoDB для части моего приложения. Но люди обычно описывают это как не подходящий вариант для "транзакционных" приложений как банк, где транзакции должны быть точными/последовательными и т.д.

Имеет смысл распадаться, модели в направляющих и иметь некоторых из них используют монго других и MySql? Или это будет обычно вызывать больше проблем, чем это стоит?

Я не создаю банковское приложение или почти думал, что могло бы иметь смысл для таблицы моего пользователя или таблицы транзакций (записывающий доход) вносить свой вклад в MySql.

23
задан Ivan Kochurkin 17 August 2016 в 11:07
поделиться

5 ответов

Это то, что мы делаем с CouchDB и PostgreSQL.

Все наши пользователи и группы находятся в базе данных postgresql.
Все остальное (в нашем случае некоторые записи со статистическими данными) есть в базе данных couchdb.

В нашем случае это позволяет нам иметь одну базу данных couchdb для каждого клиента (приложение подключается к той или другой в зависимости от хоста пользователя).
И только одна база данных postgresql, в которой есть все пользователи.

Да, я думаю, что иметь базы данных SQL и NOSQL в одном приложении - это хорошая идея.

24
ответ дан 29 November 2019 в 02:11
поделиться

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

Имейте в виду, что если вы используете MongoDB, мы рекомендуем использовать репликацию для аварийного переключения.

В целом следует иметь в виду, что если вы используете реляционную базу данных из-за гарантий согласованности, вам все равно необходимо убедиться, что ваше оборудование настроено для использования преимуществ этих функций. См. Предупреждение здесь:

http://dev.mysql.com/doc/refman/4.1/en/innodb-configuration.html

Если вы не принимаете эти меры предосторожности, то большой разницы нет. между надежностью MongoDB и надежностью реляционной базы данных.

5
ответ дан 29 November 2019 в 02:11
поделиться

Подумайте также о долговечности: http://blog.mongodb.org/post/381927266/what-about-durability , например, когда вы теряете мощность (электричество).

4
ответ дан 29 November 2019 в 02:11
поделиться

Я бы опасался раздельного подхода, хотя и не исключал бы его.

Если вам нужен MySQL + InnoDB, и это звучит так, как вам нужно, я бы представил MongoDB только для желательно более изолированных частей, которые имеют что-то существенное, чтобы получить от преимуществ, которые дает MongoDB, и имеют минимальные связи с основными таблицами MySQL.

В настоящее время я борюсь с той же проблемой: приложение Rails с 20-ю таблицами в MySQL. Использование Mongodb решит некоторые проблемы проектирования баз данных (особенно вложенные подобъекты и столбцы индексируемых массивов), но трудно оправдать дополнительные накладные расходы, связанные с:

  • 2 различными методами запросов
  • Неуклюжий пользовательский код по швам MySQL / Mongo объекты, которые связаны друг с другом.
  • Вторая платформа базы данных для поддержки в производстве.

Я занимаюсь развертыванием MongoDB для нашей таблицы журналирования, и я собираюсь взять его оттуда.

3
ответ дан 29 November 2019 в 02:11
поделиться

Я бы сказал, вы сами ответили на свой вопрос здесь.

У меня есть веская причина использовать mongodb в качестве части моего приложения.

Предполагая, что у вас также есть веская причина для сохранения других частей в MySQL, я бы сказал, что да. Ваш вопрос подразумевает (по крайней мере, для меня), что у вас есть хорошее и хорошо изученное понимание различных вариантов, их сильных и слабых сторон, и поэтому вы пришли к разумному выводу о том, что разделение ваших моделей выполнимо.

Предполагая, что две половинки не связаны каким-либо образом (отношения между ними звучат как рецепт боли позже), я бы посоветовал вам пойти на это и использовать каждый инструмент для того, что он лучше всего умеет.

Этот подход позволяет решить некоторые проблемы, которые вызывает Майкл. поскольку вы сосредоточены на использовании Rails, вы можете использовать ActiveRecord для своих моделей на основе MySQL и использовать MongoMapper для моделей на основе MongoDb. Таким образом, вам не придется иметь дело с двумя совершенно разными методами запросов, поскольку MongoMapper обеспечивает очень ActiveRecordish подход. Конечно, вы можете легко перейти к запросам, специфичным для Mongo, когда вам нужно.

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

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

2
ответ дан 29 November 2019 в 02:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: