Инструменты пользователя

Инструменты сайта


examination:rsubd:question23

Вопрос №23. Программирование приложений «клиент/сервер»

Необходимо отметить, что система «клиент/сервер» – это частный случай распределенных систем в целом. Она может рассматриваться как распределенная система, в которой все запросы создаются на одном узле, а вся обработка выполняется на другом, если считать для простоты, что имеется лишь один узел клиента и один узел сервера.

Но, как бы то ни было, подход «клиент/сервер» имеет определенные особенности с точки зрения программирования (как и сами распределенные системы). Одна из таких особенностей заключается в том, что реляционные системы по определению и по происхождению являются системами, в которых данные обрабатываются на уровне множеств. В системах «клиент/сервер» (как и в самих распределенных системах) чрезвычайно важно то, что программист, пишущий приложение, не «использует сервер как некоторое средство доступа», создавая при этом код обработки данных на уровне записей. Вместо этого функционирование приложения в максимально возможной степени должна быть основано на использовании запросов на уровне множеств. В противном случае неизбежны существенные потери производительности системы, связанные с передачей слишком большого количества сообщений.

Количество сообщений, передаваемых между клиентом и сервером, может быть сокращено еще больше, если система предоставляет в распоряжение пользователя некоторый механизм поддержки хранимых процедур. Хранимые процедуры представляют, по существу, предварительно откомпилированные программы, которые хранятся на узле сервера (и известны серверу). Клиент обращается к хранимой процедуре с помощью механизма вызова удаленных процедур (Remote Procedure Call – RPC). Поэтому, в частности, потери в производительности, связанные с обработкой данных на уровне записей в системе «клиент/сервер», могут быть частично компенсированы за счет создания подходящих хранимых процедур, позволяющих выполнить обработку данных непосредственно на узле сервера.

  • Хранимые процедуры позволяют скрыть от пользователя множество специфических особенностей СУБД и базы данных и благодаря этому достичь более высокой степени независимости от данных по сравнению с тем случаем, когда хранимые процедуры не используются.
  • Одна хранимая процедура может совместно использоваться многими клиентами.
  • Оптимизация может быть осуществлена при создании хранимой процедуры, а не во время выполнения. Безусловно, это преимущество проявляется лишь в тех системах, в которых оптимизация обычно осуществляется во время выполнения.
  • Хранимые процедуры позволяют обеспечить более высокую степень безопасности данных. Например, некоторому пользователю может быть разрешено вызывать определенную процедуру, но не разрешено непосредственно обрабатывать данные, к которым он может иметь доступ через эту хранимую процедуру.

Недостатком хранимых процедур является то, что поставщики программного обеспечения предоставляют в этой области слишком отличающиеся между собой средства, а расширение языка SQL для поддержки хранимых процедур появилось, к сожалению, лишь в 1996 году.

examination/rsubd/question23.txt · Последние изменения: 2014/01/15 08:21 (внешнее изменение)