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

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

Добавлено: 12 мар 2008, 11:56
sland
Всегда считал, что в строке коннекта стоит адрес компа, на котором лежит база, поскольку папку с базой можно не расшаривать, а указывается локальный путь на том компе, к которому подключаемся. А сервер FB, imho, может быть и в другом месте и следит за портом и клиентскими запросами. Поправьте меня, где я ошибаюсь?
Добавлено: 12 мар 2008, 12:14
stix-s
Всегда считал, что в строке коннекта стоит адрес компа, на котором лежит база
- так и есть
а указывается локальный путь на том компе, к которому подключаемся.
- и тоже правда
А сервер FB, imho, может быть и в другом месте
база и сервер на разных компах? назови мне такой продукт
сервер+база=1 комп
Добавлено: 12 мар 2008, 13:08
hvlad
stix-s писал(а):Всегда считал, что в строке коннекта стоит адрес компа, на котором лежит база
- так и есть
Нет. На котором стоит сервер.
Правильно мысля - это одно и то же

Но не все мыслят правильно

))
Добавлено: 12 мар 2008, 14:28
stix-s
hvlad писал(а):stix-s писал(а):Всегда считал, что в строке коннекта стоит адрес компа, на котором лежит база
- так и есть
Нет. На котором стоит сервер.
Правильно мысля - это одно и то же

Но не все мыслят правильно

))
совершенно верно, но мне не попадались системы, где сервер на одном ящике, а БД на другом

(про хранилища я не говорю)
Добавлено: 12 мар 2008, 14:40
sland
В общем, разобрались со строкой коннекта. В ней пишется таки адрес базы, которая зачастую находится вместе с сервером.
Однако, если вернуться к первому сообщению, проблема может возникнуть из-за того, что в общей сети будет три базы, и желательно, три сервера FB. Так вот как сделать, чтобы они не конфликтовали и не получилось, что сервер FB с одного сервера-компа будет обслуживать БД на другом сервере-компе. Ведь это возможно: чтобы сервер FB был на одном компе, а БД - на другом.
Добавлено: 12 мар 2008, 15:20
stix-s
sland писал(а):
Ведь это возможно: чтобы сервер FB был на одном компе, а БД - на другом.
абзац

- сказали же НЕТ
ну скажи, где ты такое видел?
Добавлено: 12 мар 2008, 15:32
kdv
адрес базы, которая зачастую находится вместе с сервером.
примеры, когда "не зачастую"?
Так вот как сделать, чтобы они не конфликтовали и не получилось, что сервер FB с одного сервера-компа будет обслуживать БД на другом сервере-компе. Ведь это возможно: чтобы сервер FB был на одном компе, а БД - на другом.
ну чего вы фигню какую-то пишете??? Сами-то пробовали FB на одной машине, а базу на другой?
Да, такое возможно, но только на unix, при условии что диск на компе с базой смонтирован на сервере как том NFS. Такое организуется только специально, причем настоятельно не рекомендуется.
Так что перестаньте нести чушь, пожалуйста. Или запишитесь к нам на курсы по администрированию IB/FB. Или почитайте Firebird QuickStart на русском языке.
Добавлено: 12 мар 2008, 15:44
kdv
кстати, есть еще одна возможность - роутинг. например строка коннекта
server1:server2:c:\dir\data.gdb
server1 будет "роутером", но работать с БД будет server2. Впрочем, в данном контексте это все фигня, да и роутинг был в коде IB поломан, заработал только в 7.5, а в FB не знаю, восстановлен или нет.
Более того, по вопросу - все три отдела работают в общей сети? Т.е. никаких "подсеток" нет? Как определяется принадлежность компьютера и программы к "отделу"?
Как минимум, чтобы не перепутать сервера самому,
1. сервера можно "пронумеровать"
2. папки с БД можно тоже "пронумеровать". Например c:\otdel1\baza.fdb
3. можно создать "нумерованные" алиасы БД. например, server1:otdel1
таким образом, если все в одной подсети, приложению можно указать к какому серверу оно подсоединяется. Если указан неправильно алиас или папка отдела на сервере - будет облом.
В общем, никакой проблемы тут нет вообще, абсолютно, нигде. Все сентенции по поводу "конфликтов" - это Ваши фантазии, не более того. Причем, неясно на чем основанные. Рабинович напел?

Добавлено: 12 мар 2008, 16:22
sland
Спасибо kdv.
Чувствуется профессионал: сказал, как обрезал. И по существу, и полный ответ.
В итоге я понял следующее. Практически не бывает случаев, когда база и сервер находятся на разных компах (даже в больших проектах?). Поэтому, при подключении к базе, ее будет обслуживать сервер БД именно того компа, на котором лежит база.
Вопрос действительно надуманный, т.к. нехочется проблем "потом", если их можно было предупредить "сейчас".
Спасибо.
Добавлено: 12 мар 2008, 21:58
kdv
на разных компах (даже в больших проектах?)
размер проекта не имеет значения. нет такой нужды в клиент-сервере, чтобы субд стояла на одном компе, а база была на другом. С базой работает только сервер, соответственно ему по сетке лазить нужды нет.
Здесь мы исключаем, разумеется, системы NAS, SAN и т.п.
А файлы на одном а приложение на другом компе - является обычным только для файл-сервера.
при подключении к базе, ее будет обслуживать сервер БД именно того компа, на котором лежит база.
не совсем так. подключение из приложения идет к конкретному серверу. А сервер будет работать только с той базой, которая находится там же где сервер.
Спасибо.
welcome

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