Оптимальное решение связки MySQL + MS SQL (... или как правильно тянуть данные)

Модератор: Модераторы разделов

Аватара пользователя
VAVka
Сообщения: 96

Оптимальное решение связки MySQL + MS SQL

Сообщение VAVka »

Блин, не смог нормально вопрос сформулировать... Ну да ладно.

Ситуация:
1. Есть сервер Linux, на нем поднят Apache + MySQL. Через веб предоставляется некоторая общедоступная информация, которая тянется из MySQL.
2. Есть сервер Windows2K AS, сокрытый за DMZ, на котором работает MS SQL и промышленная БД, из которой и должны порциями подливаться данные в MySQL.

Внимание, вопрос:
Каким образом оптимальнее (читай, безопаснее-производительнее-надежнее (именно в таком приоритете)) организовать "переходник" MS SQL -> MySQL? Помогите определиться принципиально.

Собственные мыслишки таковы:

ВАРИАНТ 1 (пока предпочтительный).
1. Пишем подобие мааленького портмаппера, который будет висеть на сокете фаервола и перенаправлять запросы КЛИЕНТА на целевой сервер БД. Ну, возможно, еще его можно нагрузить функцией выставления флагов о том, что информация обновилась.
2. Пишем КЛИЕНТА, который будет просто по рассписанию (либо по сигналу с портмаппера) обращаться к портмапперу и через него получать результаты запроса к БД. Он же будет заниматься подливкой данных в БД MySQL.
Преимущества варианта, котороые вижу:
а) Нет открытого порта SQL сервера на фаерволе (SQL сервер, напомню, ЗА двумя фаерволами: один "внешний", который смотрит в Сеть и в DMZ, другой - "внутренний", входит в состав DMZ и одним глазом глядит в LAN).
б) Нет прямого обращения к пром. БД, что следует из а). Упомянутый портмаппер заточен только на прием сформированных определенным образом запросов. И работает он только с SQL сервером и ни с чем иным.
в) публичная БД MySQL существует независимо и тянет из нее данные уже либо cgi, либо че-нить другое. И потерять ее не жалко и кто стырит не забогатеет B).
Недостатки:
г) Главный и, ИМХО, единственный - необходимость писанины. Опыт разработки сетевых приложений под WinSock имеется, а вот под Linux - нету. Изучение доков, эксперименты - на все нужно время.

ВАРИАНТ 2 (практически, не применимый (см. недостатки)).
1. На "внутреннем" фаерволе открываем порт SQL сервера :(.
2. На SQL сервере делаем спец. юзера с минимумом привилегий, под которым и будет ходить КЛИЕНТ.
3. Пишем КЛИЕНТА, который напрямую будет тягать данные из SQL сервера и писать их в БД MySQL.
Преимущества:
а) Меньше времени на реализацию.
б) Отпадает необходимость в доп. звене - портмаппере. А, как грится, меньше звеньев - меньше потенциальных проблем в работе.
Недостатки: необходимость открывать порт (да еще какой!) на важном, с т.з. ресурсов, сервере. Хоть и скрыт он за DMZ, от этого не особо легче.

Заранее спасибо
С уважением, VAVka (VAVka pagе)

NimbleX 200 Mb USB Edition (krnl 2.6.24/2.4.22)
{XOrg 1.4.0/IceWM 1.2.35}
Спасибо сказали:
Аватара пользователя
VAVka
Сообщения: 96

Re: Оптимальное решение связки MySQL + MS SQL

Сообщение VAVka »

(VAVka @ Среда, 25 Мая 2005, 10:15) писал(а):Блин, не смог нормально вопрос сформулировать... Ну да ладно.

Ситуация:
1. Есть сервер Linux, на нем поднят Apache + MySQL. Через веб предоставляется некоторая общедоступная информация, которая тянется из MySQL.
2. Есть сервер Windows2K AS, сокрытый за DMZ, на котором работает MS SQL и промышленная БД, из которой и должны порциями подливаться данные в MySQL.

Внимание, вопрос:
Каким образом оптимальнее (читай, безопаснее-производительнее-надежнее (именно в таком приоритете)) организовать "переходник" MS SQL -> MySQL? Помогите определиться принципиально.

[...]

А че-то молчание? Вроде бы, с тематикой угадал... :( Разве никто никогда подобным не занимался? Или, все-таки, нужно писать на форум Perl-PHP-MySQL ;)?
С уважением, VAVka (VAVka pagе)

NimbleX 200 Mb USB Edition (krnl 2.6.24/2.4.22)
{XOrg 1.4.0/IceWM 1.2.35}
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Оптимальное решение связки MySQL + MS SQL

Сообщение sash-kan »

(VAVka @ Понедельник, 30 Мая 2005, 2:09) писал(а):Разве никто никогда подобным не занимался?

видимо, здесь - никто. или не занимался, или не посчитал нужным ответить. или на форум не заходил. или топик не читал. или ... (можешь добавить от себя)
(VAVka @ Понедельник, 30 Мая 2005, 2:09) писал(а):нужно писать на форум Perl-PHP-MySQL

почему бы и нет?

впрочем, варианты решения ты и сам уже прикинул (:
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
VAVka
Сообщения: 96

Re: Оптимальное решение связки MySQL + MS SQL

Сообщение VAVka »

(Sash Kan @ Понедельник, 30 Мая 2005, 19:49) писал(а):видимо, здесь - никто. или не занимался, или не посчитал нужным ответить. или на форум не заходил. или топик не читал. или ... (можешь добавить от себя)

И-эх... Жаль. Придется велик изобретать (наверняка).
С уважением, VAVka (VAVka pagе)

NimbleX 200 Mb USB Edition (krnl 2.6.24/2.4.22)
{XOrg 1.4.0/IceWM 1.2.35}
Спасибо сказали:
Аватара пользователя
AlexRat
Сообщения: 88

Re: Оптимальное решение связки MySQL + MS SQL

Сообщение AlexRat »

Мне кажется, что это стоило бы реализовать следующим образом:

1. Поставить на машину с MS SQL провайдер MySQL (ODBC или OLE DB, лучше наверно второй).
2. Открыть порт (или настроить форвард) на файрволе, чтобы MS SQL (с конкретного IP-адреса мог подключаться к серверу MySQL. При желании все это можно еще и в SSH завернуть для пущей секретности и безопасности.
3. Написать DTSку, которая будет регулярно сливать изменившиеся данные в MySQL.

Преимущества:
1. DTS - мощное средство, позволяющее гибко настроить перекачку данных с возможностью их обработки.
2. Нет запросов к MS SQL извне. Все действия производятся по инциативе и согласно логике прописанной на сервере SQL, что исключает возможность утечки данных из этой базы по внешнему запросу.
Мой блог
Ubuntu 7.04
Windows XP SP2
Спасибо сказали:
Аватара пользователя
VAVka
Сообщения: 96

Re: Оптимальное решение связки MySQL + MS SQL

Сообщение VAVka »

(AlexRat @ Вторник, 31 Мая 2005, 18:21) писал(а):Мне кажется, что это стоило бы реализовать следующим образом:

1. Поставить на машину с MS SQL провайдер MySQL (ODBC или OLE DB, лучше наверно второй).
2. Открыть порт (или настроить форвард) на файрволе, чтобы MS SQL (с конкретного IP-адреса мог подключаться к серверу MySQL. При желании все это можно еще и в SSH завернуть для пущей секретности и безопасности.
3. Написать DTSку, которая будет регулярно сливать изменившиеся данные в MySQL.

Хороший вариант, как мне кажется. Особенно нравится то, что инициатором коннекта будет сервер БД. Так проще и логичнее.
Спасибо за своевременный совет, буду изучать предложение!

ЗЫ: А что, существуют провайдеры OLE DB для mySQL'я? Не подскажете, где можно об этом почитать? Насколько я помню, в поставку mySQL for Win32 не входят odbc/oledb драйверы. Или есть такие?
С уважением, VAVka (VAVka pagе)

NimbleX 200 Mb USB Edition (krnl 2.6.24/2.4.22)
{XOrg 1.4.0/IceWM 1.2.35}
Спасибо сказали:
Аватара пользователя
AlexRat
Сообщения: 88

Re: Оптимальное решение связки MySQL + MS SQL

Сообщение AlexRat »

(VAVka @ Среда, 01 Июня 2005, 5:03) писал(а):А что, существуют провайдеры OLE DB для mySQL'я? Не подскажете, где можно об этом почитать? Насколько я помню, в поставку mySQL for Win32 не входят odbc/oledb драйверы. Или есть такие?
Насчет OLE DB я, кажется действительно ошибся... Перепутал с .NET :)
А про коннектор ODBC можно почитать здесь. В стандартную поставку он действительно почему-то не входит...
Мой блог
Ubuntu 7.04
Windows XP SP2
Спасибо сказали: