Репликация Microsoft SQL в другие базы данных
Я хотел бы иметь возможность реплицировать всю базу данных из Microsoft SQL в другую веб-дружественную базу данных, такую как CouchDB или даже mySQL.
Я должен был бы делать репликацию ежедневно и просто задавался вопросом, возможно ли это, и если да, то как бы я сделал это с наименьшим количеством кодирования.
Спасибо
2 ответа:
Это возможно с помощью SymmetricDS, решения с открытым исходным кодом, которое может реплицировать изменения между различными базами данных, такими как SQL-Server и MySQL. Некоторые особенности:
- использует сбор данных об изменениях и непрерывную синхронизацию
- передача с низкой пропускной способностью по веб-протоколам
- асинхронная работа в фоновом режиме
- восстанавливается автоматически после простоя сети
Он имеет функцию начальной загрузки, чтобы синхронизировать ваши базы данных, а затем он непрерывно посылает изменения по мере их захвата. Есть много вариантов конфигурации, так что вы можете установить, как часто он синхронизируется.
Есть несколько подходов, которые вы можете использовать. Вы назвали две совершенно разные базы данных, поэтому я дам краткие советы по каждой из них.
SQL Server - > MySQL. Это должно быть действительно прямо вперед. Как минимум, вы можете написать приложение на C# или Java или что-то еще, что просто читает с SQL Server, а затем записывает данные в MySQL. Вы ставите это приложение на график, и все готово.
SQL Server - > диван. Вы можете написать C# - в качестве примера-и развернуть его в SQL Сервер. Код, который вы пишете, раскрывается как хранимая процедура. Вы можете писать запросы в C#, а затем сериализовать объекты в JSON и возвращать их в результате хранимой процедуры. Я сделал это, и это работает хорошо, и это очень быстро.
Любой подход предполагает знание того, что изменилось. Вы можете извлекать данные, где вы управляете различиями между местом назначения и источником. Например, только получить записи, измененные после заданной даты, а затем обновить дату так, чтобы следующий время он только получает новые записи и т.д.
Вы также можете передавать данные. Вы можете использовать триггеры для запуска хранимых процедур, которые записывают в очередь (внешнюю или внутреннюю), а затем что-то наблюдают за очередью и толкают к Couch/MySQL.
Множество вариантов.
Мы используем Mule ESB в работе для перемещения данных между различными системами (SQL Server- > Mongo, SQL Server - > Couch, MySQL - >Mongo), и это отлично работает.