Несколько серверов FB в одной сети
Модераторы: kdv, Alexey Kovyazin
Несколько серверов FB в одной сети
Здравствуйте!
У нас маленькая компания, но имеющая три отдельных службы. В каждой службе своя БД. Сейчас там вообще файл-серверная БД под DOS6.2. Предполагается написание приложения и переход на FB.
По специфике работы службы в разделены логически и территориально, но сеть общая, т.е. нужен доступ из одной службы к файлам/папкам другой службы. Более того, есть несколько компьютеров без мониторов, управляемых RemoteAdmin. Это я к тому, что сеть должны быть общей.
БД данных довольно большая (несколько млн.записей в одной таблице). Для каждой БД есть свой комп-сервер (т.е. по одной БД и компу-серверу в каждой службе).
Подскажите, пожалуйста, как сделать, чтобы можно было на каждом компе-сервере поставить свой сервер БД и он при этом не принимал клиентские запросы от пользователей разных служб? Ведь насколько я понимаю, если сеть общая, то можно иметь три БД (файла) и один сервер БД. Но тогда возможны "тормоза", если сервер будет обрабатывать запросы одной службы к своей БД, а другая служба будет ждать, пока сервер освободится. Хотелось бы на каждом компе-сервере поставить свой сервер БД, который бы работал только со своей БД. Как это сделать?
У меня появилась идея только разграничить их портами. Только я не уверен, как это правильно сделать. И не будет ли все равно чужой сервер на другом порту подхватывать чужого клиента и работать с чужой БД?
Заранее очень благодарен.
У нас маленькая компания, но имеющая три отдельных службы. В каждой службе своя БД. Сейчас там вообще файл-серверная БД под DOS6.2. Предполагается написание приложения и переход на FB.
По специфике работы службы в разделены логически и территориально, но сеть общая, т.е. нужен доступ из одной службы к файлам/папкам другой службы. Более того, есть несколько компьютеров без мониторов, управляемых RemoteAdmin. Это я к тому, что сеть должны быть общей.
БД данных довольно большая (несколько млн.записей в одной таблице). Для каждой БД есть свой комп-сервер (т.е. по одной БД и компу-серверу в каждой службе).
Подскажите, пожалуйста, как сделать, чтобы можно было на каждом компе-сервере поставить свой сервер БД и он при этом не принимал клиентские запросы от пользователей разных служб? Ведь насколько я понимаю, если сеть общая, то можно иметь три БД (файла) и один сервер БД. Но тогда возможны "тормоза", если сервер будет обрабатывать запросы одной службы к своей БД, а другая служба будет ждать, пока сервер освободится. Хотелось бы на каждом компе-сервере поставить свой сервер БД, который бы работал только со своей БД. Как это сделать?
У меня появилась идея только разграничить их портами. Только я не уверен, как это правильно сделать. И не будет ли все равно чужой сервер на другом порту подхватывать чужого клиента и работать с чужой БД?
Заранее очень благодарен.
Самого главного-то ты и не написал, слишком много "воды".
- Хочешь ли ты слить всё на один сервер?
- Пересекаются ли по данным эти БД, или никак не связаны?
- Хочется ли связать данные?
Насчёт каких-то выдуманных проблем с разделением портов и служб - это всё ерунда, забей. Нет там никаких проблем.
Ставится один сервер Firebird, и он отлично работает хоть с тремя, хоть с пятью разными БД. Разумеется, файлы БД должны называться по-разному или лежать в разных каталогах (вариант "лежат вместе, называются по-разному" мне больше нравится)
- Хочешь ли ты слить всё на один сервер?
- Пересекаются ли по данным эти БД, или никак не связаны?
- Хочется ли связать данные?
Насчёт каких-то выдуманных проблем с разделением портов и служб - это всё ерунда, забей. Нет там никаких проблем.
Ставится один сервер Firebird, и он отлично работает хоть с тремя, хоть с пятью разными БД. Разумеется, файлы БД должны называться по-разному или лежать в разных каталогах (вариант "лежат вместе, называются по-разному" мне больше нравится)
Это как раз я и написал: есть три сервера-компа и я хочу, чтобы на каждом из них была своя база, которая бы обслуживалась своим сервером FB. Дело в том, что там работают девочки , которые очень капризны к скорости реакции, да и специфика работы (радиотакси) такая, что ждать ответа от больших запросов некогда. А поскольку основные таблицы содержат по несколько млн. записей за весь период существования фирмы, то могут быть недопустимые задержки, если один сервер FB будет обслуживать все три БД. И расположены они на некотором расстоянии (с разными проходными), т.е. не хочется бегать в случае чего (типа при уборке коннектор выдернули, бывает, и связи нигде не стало).WildSery писал(а):Самого главного-то ты и не написал, слишком много "воды".
- Хочешь ли ты слить всё на один сервер?
БД абсолютно одинаковые по структуре. Связывать данные между разными БД не нужно.WildSery писал(а):- Пересекаются ли по данным эти БД, или никак не связаны?
- Хочется ли связать данные?
То, что один сервер FB может обслуживать несколько БД, я знаю. Но я уже писал, почему желательно на каждом сервере-компе поставить свой для каждой службы сервер FB. И вопрос был, как их _разделить_, чтобы один сервер FB не подхватывал клиентские запросы чужой службы. Да и как сделать, чтобы они мирно сосуществовали в одной сети?WildSery писал(а):Ставится один сервер Firebird, и он отлично работает хоть с тремя, хоть с пятью разными БД.
Всегда считал, что в строке коннекта стоит адрес компа, на котором лежит база, поскольку папку с базой можно не расшаривать, а указывается локальный путь на том компе, к которому подключаемся. А сервер FB, imho, может быть и в другом месте и следит за портом и клиентскими запросами. Поправьте меня, где я ошибаюсь?
совершенно верно, но мне не попадались системы, где сервер на одном ящике, а БД на другомhvlad писал(а):Нет. На котором стоит сервер.stix-s писал(а):- так и естьВсегда считал, что в строке коннекта стоит адрес компа, на котором лежит база
Правильно мысля - это одно и то же
Но не все мыслят правильно ))
(про хранилища я не говорю)
В общем, разобрались со строкой коннекта. В ней пишется таки адрес базы, которая зачастую находится вместе с сервером.
Однако, если вернуться к первому сообщению, проблема может возникнуть из-за того, что в общей сети будет три базы, и желательно, три сервера FB. Так вот как сделать, чтобы они не конфликтовали и не получилось, что сервер FB с одного сервера-компа будет обслуживать БД на другом сервере-компе. Ведь это возможно: чтобы сервер FB был на одном компе, а БД - на другом.
Однако, если вернуться к первому сообщению, проблема может возникнуть из-за того, что в общей сети будет три базы, и желательно, три сервера FB. Так вот как сделать, чтобы они не конфликтовали и не получилось, что сервер FB с одного сервера-компа будет обслуживать БД на другом сервере-компе. Ведь это возможно: чтобы сервер FB был на одном компе, а БД - на другом.
примеры, когда "не зачастую"?адрес базы, которая зачастую находится вместе с сервером.
ну чего вы фигню какую-то пишете??? Сами-то пробовали FB на одной машине, а базу на другой?Так вот как сделать, чтобы они не конфликтовали и не получилось, что сервер FB с одного сервера-компа будет обслуживать БД на другом сервере-компе. Ведь это возможно: чтобы сервер FB был на одном компе, а БД - на другом.
Да, такое возможно, но только на unix, при условии что диск на компе с базой смонтирован на сервере как том NFS. Такое организуется только специально, причем настоятельно не рекомендуется.
Так что перестаньте нести чушь, пожалуйста. Или запишитесь к нам на курсы по администрированию IB/FB. Или почитайте Firebird QuickStart на русском языке.
кстати, есть еще одна возможность - роутинг. например строка коннекта
server1:server2:c:\dir\data.gdb
server1 будет "роутером", но работать с БД будет server2. Впрочем, в данном контексте это все фигня, да и роутинг был в коде IB поломан, заработал только в 7.5, а в FB не знаю, восстановлен или нет.
Более того, по вопросу - все три отдела работают в общей сети? Т.е. никаких "подсеток" нет? Как определяется принадлежность компьютера и программы к "отделу"?
Как минимум, чтобы не перепутать сервера самому,
1. сервера можно "пронумеровать"
2. папки с БД можно тоже "пронумеровать". Например c:\otdel1\baza.fdb
3. можно создать "нумерованные" алиасы БД. например, server1:otdel1
таким образом, если все в одной подсети, приложению можно указать к какому серверу оно подсоединяется. Если указан неправильно алиас или папка отдела на сервере - будет облом.
В общем, никакой проблемы тут нет вообще, абсолютно, нигде. Все сентенции по поводу "конфликтов" - это Ваши фантазии, не более того. Причем, неясно на чем основанные. Рабинович напел?
server1:server2:c:\dir\data.gdb
server1 будет "роутером", но работать с БД будет server2. Впрочем, в данном контексте это все фигня, да и роутинг был в коде IB поломан, заработал только в 7.5, а в FB не знаю, восстановлен или нет.
Более того, по вопросу - все три отдела работают в общей сети? Т.е. никаких "подсеток" нет? Как определяется принадлежность компьютера и программы к "отделу"?
Как минимум, чтобы не перепутать сервера самому,
1. сервера можно "пронумеровать"
2. папки с БД можно тоже "пронумеровать". Например c:\otdel1\baza.fdb
3. можно создать "нумерованные" алиасы БД. например, server1:otdel1
таким образом, если все в одной подсети, приложению можно указать к какому серверу оно подсоединяется. Если указан неправильно алиас или папка отдела на сервере - будет облом.
В общем, никакой проблемы тут нет вообще, абсолютно, нигде. Все сентенции по поводу "конфликтов" - это Ваши фантазии, не более того. Причем, неясно на чем основанные. Рабинович напел?
Спасибо kdv.
Чувствуется профессионал: сказал, как обрезал. И по существу, и полный ответ.
В итоге я понял следующее. Практически не бывает случаев, когда база и сервер находятся на разных компах (даже в больших проектах?). Поэтому, при подключении к базе, ее будет обслуживать сервер БД именно того компа, на котором лежит база.
Вопрос действительно надуманный, т.к. нехочется проблем "потом", если их можно было предупредить "сейчас".
Спасибо.
Чувствуется профессионал: сказал, как обрезал. И по существу, и полный ответ.
В итоге я понял следующее. Практически не бывает случаев, когда база и сервер находятся на разных компах (даже в больших проектах?). Поэтому, при подключении к базе, ее будет обслуживать сервер БД именно того компа, на котором лежит база.
Вопрос действительно надуманный, т.к. нехочется проблем "потом", если их можно было предупредить "сейчас".
Спасибо.
размер проекта не имеет значения. нет такой нужды в клиент-сервере, чтобы субд стояла на одном компе, а база была на другом. С базой работает только сервер, соответственно ему по сетке лазить нужды нет.на разных компах (даже в больших проектах?)
Здесь мы исключаем, разумеется, системы NAS, SAN и т.п.
А файлы на одном а приложение на другом компе - является обычным только для файл-сервера.
не совсем так. подключение из приложения идет к конкретному серверу. А сервер будет работать только с той базой, которая находится там же где сервер.при подключении к базе, ее будет обслуживать сервер БД именно того компа, на котором лежит база.
welcomeСпасибо.