| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > MySQL > Перенос данных из MySQL в MSSQL на лету |
| Автор: npr2 16.9.2008, 07:06 |
| Ситуация такова. Есть БД MySQL, в которую пишутся данные с системы навигации, разработка сторонней организации. Есть собственная БД MSSQL. Нужно чтобы в реальном времени, как толькопоявляются некоторые данные в MySQL, отображались в MSSQL. Можно ли это сделать средствами БД? |
| Автор: Kesh 16.9.2008, 10:05 |
| Триггеры... |
| Автор: sir_nuf_nuf 18.9.2008, 11:23 |
между разными серверами БД ? это должны быть очень крутые триггеры =) npr2, я думаю будет очень тяжко. Это репликация называется. Только в добавок меж-серверная. Вариант 1) Написать приложение, которое будет мониторить MySQL и вставлять данные в базу MSSQL. Но это не в "реальном времени", всегда будет какая - то задержка. Вариант 2) Написать UDF (пользовательскую функцию для MySQL на C/С++), которая будет при отправлять данные в MSSQL. Схема такая: а) Происходит вставка/удаление/обновление в MySQL б) Срабатывает триггер на таблице в которую пишете. (триггер тоже нужно будет сделать) в) Триггер вызывает вашу UDF функцию г) Функция отправляет сообщение в очередь (вот тут основные траблы - вам прийдется писать С функцию, которая пишет в очередь сообщений). Сообщение примерно такое: (Имя Таблицы, Тип Операции, Аргумент1, Аргумент2, ...) д) Есть приложение которое читает из этой очереди сообщений и пишет в MSSQL. Это тоже не совсем синхронно (из-за очереди), но за-то быстрее чем 3) вариант Вариант 3) Тоже самое, что и 2), но не используете очередь, а пишете напрямую в MSSQL, используя протокол MSSQL. Очень трудоемко и весьма медленно! За то полная синхронность. Данные будут появляться в обоих серверах почти одновременно. |