Несколько серверов FB в одной сети

Администирование клиентской и серверной части InterBase, Firebird, Yaffil. Настройка файла конфигурации и т.п.

Модераторы: kdv, Alexey Kovyazin

Ответить
sland
Сообщения: 12
Зарегистрирован: 11 мар 2008, 10:50

Несколько серверов FB в одной сети

Сообщение sland » 11 мар 2008, 11:51

Здравствуйте!
У нас маленькая компания, но имеющая три отдельных службы. В каждой службе своя БД. Сейчас там вообще файл-серверная БД под DOS6.2. Предполагается написание приложения и переход на FB.
По специфике работы службы в разделены логически и территориально, но сеть общая, т.е. нужен доступ из одной службы к файлам/папкам другой службы. Более того, есть несколько компьютеров без мониторов, управляемых RemoteAdmin. Это я к тому, что сеть должны быть общей.
БД данных довольно большая (несколько млн.записей в одной таблице). Для каждой БД есть свой комп-сервер (т.е. по одной БД и компу-серверу в каждой службе).
Подскажите, пожалуйста, как сделать, чтобы можно было на каждом компе-сервере поставить свой сервер БД и он при этом не принимал клиентские запросы от пользователей разных служб? Ведь насколько я понимаю, если сеть общая, то можно иметь три БД (файла) и один сервер БД. Но тогда возможны "тормоза", если сервер будет обрабатывать запросы одной службы к своей БД, а другая служба будет ждать, пока сервер освободится. Хотелось бы на каждом компе-сервере поставить свой сервер БД, который бы работал только со своей БД. Как это сделать?
У меня появилась идея только разграничить их портами. Только я не уверен, как это правильно сделать. И не будет ли все равно чужой сервер на другом порту подхватывать чужого клиента и работать с чужой БД?

Заранее очень благодарен.

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Сообщение WildSery » 11 мар 2008, 12:14

Самого главного-то ты и не написал, слишком много "воды".
- Хочешь ли ты слить всё на один сервер?
- Пересекаются ли по данным эти БД, или никак не связаны?
- Хочется ли связать данные?

Насчёт каких-то выдуманных проблем с разделением портов и служб - это всё ерунда, забей. Нет там никаких проблем.
Ставится один сервер Firebird, и он отлично работает хоть с тремя, хоть с пятью разными БД. Разумеется, файлы БД должны называться по-разному или лежать в разных каталогах (вариант "лежат вместе, называются по-разному" мне больше нравится)

sland
Сообщения: 12
Зарегистрирован: 11 мар 2008, 10:50

Сообщение sland » 12 мар 2008, 01:02

WildSery писал(а):Самого главного-то ты и не написал, слишком много "воды".
- Хочешь ли ты слить всё на один сервер?
Это как раз я и написал: есть три сервера-компа и я хочу, чтобы на каждом из них была своя база, которая бы обслуживалась своим сервером FB. Дело в том, что там работают девочки :D , которые очень капризны к скорости реакции, да и специфика работы (радиотакси) такая, что ждать ответа от больших запросов некогда. А поскольку основные таблицы содержат по несколько млн. записей за весь период существования фирмы, то могут быть недопустимые задержки, если один сервер FB будет обслуживать все три БД. И расположены они на некотором расстоянии (с разными проходными), т.е. не хочется бегать в случае чего (типа при уборке коннектор выдернули, бывает, и связи нигде не стало).
WildSery писал(а):- Пересекаются ли по данным эти БД, или никак не связаны?
- Хочется ли связать данные?
БД абсолютно одинаковые по структуре. Связывать данные между разными БД не нужно.
WildSery писал(а):Ставится один сервер Firebird, и он отлично работает хоть с тремя, хоть с пятью разными БД.
То, что один сервер FB может обслуживать несколько БД, я знаю. Но я уже писал, почему желательно на каждом сервере-компе поставить свой для каждой службы сервер FB. И вопрос был, как их _разделить_, чтобы один сервер FB не подхватывал клиентские запросы чужой службы. Да и как сделать, чтобы они мирно сосуществовали в одной сети?

Tonal
Сообщения: 104
Зарегистрирован: 30 сен 2007, 13:42

Сообщение Tonal » 12 мар 2008, 08:07

В клиенте, ты указываешь сетевой адрес сервера, к которому цепляешся.
Поэтому выдуманной тобой проблемы просто не существует - каждый сервер обслуживает только тех клиентов, которые подключились именно к нему. :-)

sland
Сообщения: 12
Зарегистрирован: 11 мар 2008, 10:50

Сообщение sland » 12 мар 2008, 11:56

Всегда считал, что в строке коннекта стоит адрес компа, на котором лежит база, поскольку папку с базой можно не расшаривать, а указывается локальный путь на том компе, к которому подключаемся. А сервер FB, imho, может быть и в другом месте и следит за портом и клиентскими запросами. Поправьте меня, где я ошибаюсь?

stix-s
Заслуженный разработчик
Сообщения: 557
Зарегистрирован: 13 дек 2005, 11:52

Сообщение stix-s » 12 мар 2008, 12:14

Всегда считал, что в строке коннекта стоит адрес компа, на котором лежит база
- так и есть
а указывается локальный путь на том компе, к которому подключаемся.
- и тоже правда :)
А сервер FB, imho, может быть и в другом месте
база и сервер на разных компах? назови мне такой продукт
сервер+база=1 комп

hvlad
Разработчик Firebird
Сообщения: 1244
Зарегистрирован: 21 мар 2005, 10:48

Сообщение hvlad » 12 мар 2008, 13:08

stix-s писал(а):
Всегда считал, что в строке коннекта стоит адрес компа, на котором лежит база
- так и есть
Нет. На котором стоит сервер.

Правильно мысля - это одно и то же :)
Но не все мыслят правильно :)))

stix-s
Заслуженный разработчик
Сообщения: 557
Зарегистрирован: 13 дек 2005, 11:52

Сообщение stix-s » 12 мар 2008, 14:28

hvlad писал(а):
stix-s писал(а):
Всегда считал, что в строке коннекта стоит адрес компа, на котором лежит база
- так и есть
Нет. На котором стоит сервер.

Правильно мысля - это одно и то же :)
Но не все мыслят правильно :)))
совершенно верно, но мне не попадались системы, где сервер на одном ящике, а БД на другом :)
(про хранилища я не говорю)

sland
Сообщения: 12
Зарегистрирован: 11 мар 2008, 10:50

Сообщение sland » 12 мар 2008, 14:40

В общем, разобрались со строкой коннекта. В ней пишется таки адрес базы, которая зачастую находится вместе с сервером.
Однако, если вернуться к первому сообщению, проблема может возникнуть из-за того, что в общей сети будет три базы, и желательно, три сервера FB. Так вот как сделать, чтобы они не конфликтовали и не получилось, что сервер FB с одного сервера-компа будет обслуживать БД на другом сервере-компе. Ведь это возможно: чтобы сервер FB был на одном компе, а БД - на другом.

stix-s
Заслуженный разработчик
Сообщения: 557
Зарегистрирован: 13 дек 2005, 11:52

Сообщение stix-s » 12 мар 2008, 15:20

sland писал(а): Ведь это возможно: чтобы сервер FB был на одном компе, а БД - на другом.
абзац :( - сказали же НЕТ
ну скажи, где ты такое видел?

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 12 мар 2008, 15:32

адрес базы, которая зачастую находится вместе с сервером.
примеры, когда "не зачастую"?
Так вот как сделать, чтобы они не конфликтовали и не получилось, что сервер FB с одного сервера-компа будет обслуживать БД на другом сервере-компе. Ведь это возможно: чтобы сервер FB был на одном компе, а БД - на другом.
ну чего вы фигню какую-то пишете??? Сами-то пробовали FB на одной машине, а базу на другой?
Да, такое возможно, но только на unix, при условии что диск на компе с базой смонтирован на сервере как том NFS. Такое организуется только специально, причем настоятельно не рекомендуется.

Так что перестаньте нести чушь, пожалуйста. Или запишитесь к нам на курсы по администрированию IB/FB. Или почитайте Firebird QuickStart на русском языке.

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 12 мар 2008, 15:44

кстати, есть еще одна возможность - роутинг. например строка коннекта
server1:server2:c:\dir\data.gdb

server1 будет "роутером", но работать с БД будет server2. Впрочем, в данном контексте это все фигня, да и роутинг был в коде IB поломан, заработал только в 7.5, а в FB не знаю, восстановлен или нет.

Более того, по вопросу - все три отдела работают в общей сети? Т.е. никаких "подсеток" нет? Как определяется принадлежность компьютера и программы к "отделу"?

Как минимум, чтобы не перепутать сервера самому,
1. сервера можно "пронумеровать"
2. папки с БД можно тоже "пронумеровать". Например c:\otdel1\baza.fdb
3. можно создать "нумерованные" алиасы БД. например, server1:otdel1

таким образом, если все в одной подсети, приложению можно указать к какому серверу оно подсоединяется. Если указан неправильно алиас или папка отдела на сервере - будет облом.

В общем, никакой проблемы тут нет вообще, абсолютно, нигде. Все сентенции по поводу "конфликтов" - это Ваши фантазии, не более того. Причем, неясно на чем основанные. Рабинович напел? :)

sland
Сообщения: 12
Зарегистрирован: 11 мар 2008, 10:50

Сообщение sland » 12 мар 2008, 16:22

Спасибо kdv.
Чувствуется профессионал: сказал, как обрезал. И по существу, и полный ответ.
В итоге я понял следующее. Практически не бывает случаев, когда база и сервер находятся на разных компах (даже в больших проектах?). Поэтому, при подключении к базе, ее будет обслуживать сервер БД именно того компа, на котором лежит база.
Вопрос действительно надуманный, т.к. нехочется проблем "потом", если их можно было предупредить "сейчас".

Спасибо.

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 12 мар 2008, 21:58

на разных компах (даже в больших проектах?)
размер проекта не имеет значения. нет такой нужды в клиент-сервере, чтобы субд стояла на одном компе, а база была на другом. С базой работает только сервер, соответственно ему по сетке лазить нужды нет.
Здесь мы исключаем, разумеется, системы NAS, SAN и т.п.

А файлы на одном а приложение на другом компе - является обычным только для файл-сервера.
при подключении к базе, ее будет обслуживать сервер БД именно того компа, на котором лежит база.
не совсем так. подключение из приложения идет к конкретному серверу. А сервер будет работать только с той базой, которая находится там же где сервер.
Спасибо.
welcome :)

Attid
Спец
Сообщения: 377
Зарегистрирован: 14 ноя 2006, 09:58

Сообщение Attid » 13 мар 2008, 15:45

еще от себя добавлю что если базы однотипные то стоит в приложении выводить инфу на видное место куда оно поключено я у себя например вывожу server:bdalias@username чтобы знать поключен к игрушечной базе или к боевой =)

Ответить