Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Сбор данных с удаленных СУБД


Автор: Zamuta 24.10.2009, 14:31
Всем привет!

Ситуация следующая. 
Существуют территориально разнесенные СУБД из кторых нужно с определенной периодичностью делать выборки данных, т.е. только селекты, и эти данные отправлять в один сервер БД (со статическим внешним IP). Рядом с территориально разнесенными СУБД нет web серверов, с которыми бы можно было работать, и серверы СУБД находятся внутри корпоративных сетей, внешние IP адреса у СУБД могут быть динамическими.

Делать общедуступное прямое подключение к клиентской СУБД из вне не хочется из-за соображений безопасности, а учитывая динамические IP этих СУБД идея о прямом подключении и  вовсе отпадает.

Исходя из этого, смотрю в сторону RMI. Держать рядом с  каждой клиентской СУБД веб сервер сервлет контейнер не хочется (кроме выборки и отправки данных больше ничего не требуется). Поэтому решение с RMI вижу более приоритетным по отношению к веб сервисам.

Проблему с клиентскими динамическими IP думаю решить так. Клиенты сами инициируют регистрацию на сервере, после чего отправляют ему данные, т.е. не сервер ищет клиентов.

Решение RMI у Spring frmw. чем-то отличается от сановского?

Наверняка уже существуют стандартные решения по этому вопросу. Покритикуйте меня.  


Автор: stron 24.10.2009, 16:15
Zamuta
а СУБД все одинаковые?
может всё стоит решит ьна уровне самих БД?
или какое-нибудь средство ETL прикрутить?

Автор: Zamuta 24.10.2009, 17:45
Цитата(stron @  24.10.2009,  18:15 Найти цитируемый пост)
а СУБД все одинаковые?
может всё стоит решит ьна уровне самих БД?


К сожалению нет. Я уже думал об этом. Периодически будут появляться новые клиентские СУБД заранее неопределенного типа.

Автор: COVD 24.10.2009, 21:25
Вполне вероятно, что клиентские компьютеры, расположенные в корпоративных сетях, смогут иметь возможность доступа к внешнему серверу только по HTTP на 80 порт. Поэтому даже при использовании RMI на сервере необходим контейнер сервлетов, слушающий на порту 80, с сервлетом, обеспечивающим коммуникацию с RMI. Это называется http tunneling. Можно для простоты вообще обойтись только HTTP 80 для всех клиентов, потому что дополнительные пересылаемые данные (http headers) обычно невелики. В этом случае клиенты отправляют данные в любом формате методом POST, используя HttpURLConnection или апачевский HttpClient (RMI не нужен).

Автор: ivanovpv 24.10.2009, 23:22
Цитата(Zamuta @  24.10.2009,  14:31 Найти цитируемый пост)
Существуют территориально разнесенные СУБД из кторых нужно с определенной периодичностью делать выборки данных, т.е. только селекты, и эти данные отправлять в один сервер БД 


Ну а почему бы не использовать http://vjdbc.sourceforge.net/? Фактически тот же RMI - поверх которого работает JDBC 

Автор: Zamuta 25.10.2009, 04:45
Цитата(COVD @  24.10.2009,  23:25 Найти цитируемый пост)
Поэтому даже при использовании RMI на сервере необходим контейнер сервлетов, слушающий на порту 80, с сервлетом, обеспечивающим коммуникацию с RMI.


Да, центральный сервер БД будет однозначно работать в связке с tomcat. http tunneling надо будет потестить.


ivanovpv, спасибо за ссылку, очень в тему, буду пробовать.

Буду все это дело к Spring прикручивать, посмотрим что получится.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)