![]() |
Модераторы: skyboy |
![]() ![]() ![]() |
|
npr2 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 17.1.2008 Репутация: нет Всего: нет |
Ситуация такова. Есть БД MySQL, в которую пишутся данные с системы навигации, разработка сторонней организации. Есть собственная БД MSSQL. Нужно чтобы в реальном времени, как толькопоявляются некоторые данные в MySQL, отображались в MSSQL. Можно ли это сделать средствами БД?
|
|||
|
||||
Kesh |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2488 Регистрация: 31.7.2002 Где: Германия, Saarbrü cken Репутация: 15 Всего: 54 |
Триггеры...
-------------------- ![]() |
|||
|
||||
sir_nuf_nuf |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 920 Регистрация: 6.1.2008 Репутация: 8 Всего: 31 |
между разными серверами БД ? это должны быть очень крутые триггеры =) npr2, я думаю будет очень тяжко. Это репликация называется. Только в добавок меж-серверная. Вариант 1) Написать приложение, которое будет мониторить MySQL и вставлять данные в базу MSSQL. Но это не в "реальном времени", всегда будет какая - то задержка. Вариант 2) Написать UDF (пользовательскую функцию для MySQL на C/С++), которая будет при отправлять данные в MSSQL. Схема такая: а) Происходит вставка/удаление/обновление в MySQL б) Срабатывает триггер на таблице в которую пишете. (триггер тоже нужно будет сделать) в) Триггер вызывает вашу UDF функцию г) Функция отправляет сообщение в очередь (вот тут основные траблы - вам прийдется писать С функцию, которая пишет в очередь сообщений). Сообщение примерно такое: (Имя Таблицы, Тип Операции, Аргумент1, Аргумент2, ...) д) Есть приложение которое читает из этой очереди сообщений и пишет в MSSQL. Это тоже не совсем синхронно (из-за очереди), но за-то быстрее чем 3) вариант Вариант 3) Тоже самое, что и 2), но не используете очередь, а пишете напрямую в MSSQL, используя протокол MSSQL. Очень трудоемко и весьма медленно! За то полная синхронность. Данные будут появляться в обоих серверах почти одновременно. |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | MySQL | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |