Консультация № 164831
13.04.2009, 16:08
0.00 руб.
0 10 2
Здравствуйте!
На работе на рабочем компьютере стоит Firebird 1.5 с базой данных. На удалённом компьютере программа, которая к ней обращается. Канал связи недостаточно широк для работы. Работать невозможно, программа зависает и т.п. Связь изменить нельзя.
Как мониторить соединение программы с БД?
Мысль пришла, сделать сжатие трафика от программы к БД и обратно. Как это можно реализовать?
Заранее спасибо!

Обсуждение

Неизвестный
13.04.2009, 16:22
общий
Вам необходимо реализовать обычную трехзвенную структуру работы программы программа - сервер приложений - база данных

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

при отправке данных от программы вы их архивируете любым доступным для вас способом, но коннектитесь не к БАЗЕ напрямую а к своему СП, он данные принимает распаковывает и направяет запрос к БД, и получив ответ от БД снова их запаковывает и отправляет клиенту, который в свою очередь их распаковывает и перенаправляет пользователю.
Неизвестный
13.04.2009, 16:50
общий
Забыл написать, программа не моя. Исходников нет. Мы её покупали. Пока разработчиков уговорю такое сделать и они выполнят это, меня шеф уволит. :)
Значит нужно незаметно для программы это реализовать, думаю? Как-то можно перехватывать обращение к БД?
Неизвестный
13.04.2009, 16:55
общий
ну да.. упустили самую малость... надо подумать.. так сходу ничего не придумал...
Неизвестный
13.04.2009, 17:00
общий
возник вопрос.. какая скорость сети ? .. что то слабо представляю себе объемы данных на которых могла бы тормозить даже 10М сеть не говорю уже про 100М.. может дело не в сети а компьютере на котором идет работа с программой ?
Неизвестный
13.04.2009, 17:23
общий
Пробовал с другого компьютера. Низкая скорость сети думаю. Компьютеры расположены в другой районе, эдак 50 км. Своя сеть предприятия. Через Радмин могу работать. Через IBExpert подключался с удалённого на свой. Простые, почти пустые базы 3-5 мб еле открывает. И то иногда виснет. Моя база свыше 70 мб. Грузит домены, исключения и т.п. и зависает в определённый момент. С другими районами такой проблемы нет.
Я всё думаю о перехвате трафика.Правда, ноль в этом.
Кажется, в том районе локалка 10 МБ.
Неизвестный
13.04.2009, 17:32
общий
этоконечно все интересно .. если вы соединяете 2 сети на расстоянии 50 км... то каким образом ? через ADSL ? оптоволокно ?.. или еще что нибудь.. тут как раз скорость определяется я думаю именно этим.
еще вопрос, никак нельзя перенести базу в ту сеть ?
Неизвестный
13.04.2009, 23:28
общий
это ответ
Здравствуйте, Yadovit!

могу посоветовать вот это http://www.ibase.ru/devinfo/zebedee.htm
Неизвестный
14.04.2009, 09:29
общий
это ответ
Здравствуйте, Yadovit!
Попробуйте изменить сам принцип ипользования программы - виртуальные машины. То есть на удаленной сети разверните всё-всё-всё, что нужно для работы программного комплекса + пользовательский интерфейс. Далее пользователи из Вашей сети подключаются по RemoteDeskTop (например) к удаленному компьютеру, на котором установлено всё-всё-всё и работают удаленно. То есть фактически клиентская часть будет крутиться в удаленной сетке, данные из удаленной сетки в принципе не будут уходить, а между сетками будут гоняться куски картинок. Возможно, это будет быстрее. Для печати нужно будет настроить принтеры во внутреннюю сеть. В-общем, принцип работы таков, что пользователь словно сидит за компьютером удаленной сети.
Возможно, иной подход в организации рабочего места Вас спасет.
А так, проверяйте скорость на магистрали. Возможно скорость соединения копеечная... или же канал "засирается" другими приложениями. Если скорость соединения 5 кб/сек - то только расширять канал, если другие приложения бушуют - убить их (если допустимо). В-общем, свобода выбора.
давно
Мастер-Эксперт
425
4118
17.04.2009, 08:49
общий
Yadovit

Проблема, как я вижу, к базам данных не имеет никакого отношения. Если нет исходников программы, то ничего в работе с данными в Вашей программе Вы сделать не сможете. Вопрос чисто сетевой. Вам нужно обратиться в рассылку Установка и настройка сетей: теория и практика.
При этом учтите, что прежде чем Вам квалифицированно ответят, от Вас потребуются некие предварительные данные:
1. Тип связи с удалённым сервером (Ethernet, ADSL, Dial-up и т.п.)
2. Объёмы передаваемых данных в одном логическом пакете. Т.е., к примеру, Вы делаете запрос: "SELECT * FROM таблица WHERE условие" и какой объём данных получаете.
3. Результаты работы команды ping: ping -t Компьютер_где_стоит_сервер_БД.
4. Реальная скорость работы сети: берёте, к примеру, несколько файлов общего большого (для Вашей сети) объёма (10..30 МБ), пересылаете на удалённый компьютер, где стоит БД и скачиваете их обратно. Замеряете время и первой и второй операции.
Об авторе:
Я только в одном глубоко убеждён - не надо иметь убеждений! :)
Неизвестный
17.04.2009, 11:06
общий
Попробовал Zebedee. Через IBExpert удалось подключиться. Через нашу программу нет. Опять зависает в том же месте. Там выходит более 200 запросов к базе. Похоже, скорости канала не хватало.
Сделали подключение через терминал. Теперь работает.
Всем спасибо за помощь!
Форма ответа