помогите с задачей пожалйста [delphi/other]

kill-still

прислали вот к собеседованию в серьёзную контору задачу некислую, не знаю даже как реагировать на такие запросы...
выдержка из условия:
Дано:
Распределенная БД, состоящая из типовых БД, расположенных на нескольких серверах. Каждая такая база содержит данные определенного района. Серверы соединены скоростными каналами. SQL сервера статически слинкованы.
Логически все сервера равнозначны. Обычно, при работе в пределах одного района, данных, расположенных в БД этого района, достаточно. Однако, в ряде случаев, могут потребоваться данные другого района, расположенные, соответственно, на другом сервере.
Названия БД на всех серверах одинаковое: FLEET.
Вопросами прав доступа пренебрегаем.
Мы работаем на одном из серверов.
Названия серверов хранятся в следующей таблице в каждой БД:
GlobalServers

Поле Описание
GlobalServerID int identity (1, 1) Первичный ключ
Name varchar(64) Имя прилинкованного SQL сервера
Active bit =1 сервер активен

что-то я не пойму как с такой штукой работать с точки зрения ODBC
как это всё выглядит? :confused:
в какую сторону копать, что ботать?
после получения прямого доступа к таблицам что делать дальше я знаю...
в общем интересует как от вот этого абстрактного описания перейти к запросам к конкретным таблицам с конкретных серверов.

Gaishnik

Я оффтопно задам тупой вопрос.
Зачем вообще разделять базу на районы? Для увеличения перформанса? Но это наоборот должно увеличить тормоза, так как если все в одной базе, то например поиск по индексированной таблице это логарифм по числу районов, а если база распилена - то он линеен по числу районов.
Объясните.

Serab

Вот я лично ничерта не понимаю в базах данных, но могу догадаться, что:
1. Линейность по числу районов не хуже логарифма по количеству записей.
2. Там менее важна линейность, чем время отклика, но и оно большой погоды не сделает.
3. Индекс можно хранить и в многих экземплярах.
4. Важно не время отклика, а скорость обработки самих данных. Учитывая, что есть хранимые процедуры и все такое, выигрыш будет хоть и не таким колоссальным, но все же будет, если 90% работы осуществляется с ближайшим сервером. И нагрузка на серверы сбалансирована. Это же просто подарок судьбы, что логически и физически данные находятся рядом (надеюсь ясно, что имел в виду =)

ppplva

Линейность по числу районов не хуже логарифма по количеству записей.
Конечно хуже. Как правило (математики поправят M*log(N/M) > log(N).
Просто одна система масштабируется, а другая нет.

ppplva

Судя по молчанию, никто ничего не понял. Дурацкий вопрос: проблема в том, чтобы соединиться с БД, зная ее адрес?

Serab

Конечно хуже. Как правило (математики поправят M*log(N/M) > log(N).
Ну да, если количество районов соизмеримо с числом записей, то... ой, убейте меня!
И да, учти, что искать на них на всех можно (и нужно) параллельно.

Gaishnik

Просто одна система масштабируется, а другая нет.
Я почти уверен, что выполняя это задание, топикстартер неявным образом реализует кривую и тормозную систему, аналогичную Oracle RAC.
Что-то вроде десятого правила Гринспуна :).
Поэтому легче взять этот RAC в явном виде. Ну или аналогичный продукт.

kill-still

Я просто не догоняю что значит слинкованы.
Где можно что-нить почитать на тему?

psm-home

Прозреваю, что для авторов задачи нет другой субд кроме MS SQL Server. Стало быть web page .

karkar

Зачем вообще разделять базу на районы?

Шардинг. Все крутые пацаны на районе делают это.
Оставить комментарий
Имя или ник:
Комментарий: