2013-07-03 3 views
1

Мой сценарий:Как синхронизировать базу данных SQLServer и базу данных MySQL

У меня есть два приложения. Первый - это веб-сайт, который подключен к базе данных MySQL, а второй - настольное приложение, которое связано с базой данных SQL Server2008 R2. Приложение Desktop обновляет записи локально, а база данных MySQL обновляется онлайн, хотя веб-сайт.

Проблема:

Две различные базы данных, как мы можем обновлять на месте, когда вносятся изменения либо в MySQL или базы данных SQL?

Что я хочу:

Базы данных должны быть синхронизированы друг с другом (например, при внесении изменений в MySQL, то база данных SQL-сервер должен быть обновлен, или при внесении изменений в базу данных SQL, то база данных MySQL должна быть обновлена)

Не могли бы вы предложить какой-нибудь код, любую идею или любое решение для решения этой проблемы?

+0

Здравствуйте, StackOverflow задает вопросы, которые не требуют обсуждения и имеют определенные ответы. – Romoku

+0

Говорят, что вы можете изучить какую-то очередь сообщений (NServiceBus RabbitMQ и т. Д.), Что я и сделал в одном из моих контрактов. – Romoku

+0

Вы можете попробовать репликацию с помощью триггеров - http://stackoverflow.com/questions/1455018/replication-from-mysql-to-ms-sql. – Alex

ответ

0

Одна из первых вещей, на которые я хотел бы обратить внимание, заключается в том, что полная и идеальная синхронизация невозможна. К сожалению, в SQL Server существуют типы данных, которые не существуют в MySQL и наоборот.

Но если предположить, типы данных, довольно просты и схемы похожи, вот несколько вариантов:

  1. Используйте автобусное. Вы можете написать приложение, которое контролирует обе системы баз данных и когда оно увидит изменение, оно подталкивает объект к служебной шине. Слушатели служебной шины будут видеть объекты и записывать их в соответствующий пункт назначения.

  2. Использовать триггеры, подобные Алексу. SQL Server может запускать код CLR на триггере. Код CLR может быть некоторым C#, который напрямую записывается в MySQL. Выполняет некоторые настройки, но это возможно. Я исследовал запуск процесса из триггера в MySQL, и все параметры уродливы. Это возможно, но безопасность - это серьезная проблема. Идея заключается в том, что запись изменяется, запускается триггер и запускается внешний процесс .

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

1

Используйте Restful API для обновления информации с сервера MS SQL до сервера MYSQL.

Смежные вопросы