Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Контрольная РЭИС.docx
Скачиваний:
1
Добавлен:
21.11.2019
Размер:
41.29 Кб
Скачать

Оптимизация клиентского приложения

От того, каким образом организован доступ к удаленной БД во многом зависит, насколько эффективно будет работать с ней данное приложение.

  1. Минимизация соединений е сервером.

Для соединения с удаленной БД в клиентском приложении следует использовать компонент TDataBase для интерфейса BDE или компонент TADOConnection для интерфейса ADO.

Эти компоненты используются для:

  • создания постоянного соединения с БД;

  • создания локального псевдонима БД;

  • изменения параметров соединения, установленных для псевдонима БД;

  • управления транзакциями.

Компоненты TDataBase и TADOConnection позволяют установить единственное соединение с удаленной БД. Вообще, установить соединение с сервером может любой компонент TDataSet, однако каждое такое соединение потребляет системные ресурсы и их расход может сказаться на эффективности доступа. Кроме того, при соединении с удаленной БД напрямую из компонентов типа набора данных невозможно изменить установленные раже параметры соединения.

Еще одним способом уменьшения количества соединений с источником данных является использование специальной формы в приложении C++Builder – DataModule. DataModule используется для централизованного хранения невизуальных компонентов доступа к данным.

  1. Использование TQuery.

Для доступа к удаленной БД целесообразнее использовать компонент TQuery вместо TTable по следующим причинам:

  1. При доступе к табличным данным компонент TTable считывает все записи удаленной таблицы, а TQuery — столько, сколько необходимо для текущих целей (например, для вывода в TDBGrid). При доступе к таблицам большого объема использование TTable может привести к существенным временным задержкам

  2. Компоненты TQuery и TTable имеют изначально различную природу:

  • TTable ориентирован на навигационный метод доступа к данным, что более характерно для локальной СУБД TQuery - на работу с множеством записей, что характерно при доступе к удаленной БД в архитектуре клиент-сервер;

  • TTable позволяет обратиться к одной таблице, TQuery - к множеству таблиц БД;

  • Подтверждение изменения данных в TTable происходит для каждой записи, в TQuery изменение происходит сразу же для нескольких записей (Insert, Update, Delete).

  1. При использовании TQuery можно выполнить различные SQL операторы, как возвращающие (Select), так и не возвращающие данные (Insert, Update, Delete).

  1. Перенос вычислительной тяжести на сервер.

При работе с удаленной БД следует стремиться перенести всю тяжесть вычислительной работы на сервер, оставив клиентскому приложению лишь работу по реализации интерфейса с пользователем, передачи запросов к серверу и интерпретации полученных данных.

Рекомендации:

  1. Не стоит обращаться к серверу с запросом на большой объем данных, на который придется накладывать фильтр в клиентском приложении;

  2. Следует реализовать ограничения на значения вводимых пользователем данных при помощи аппарата ограничений БД (CONSTRAINT), а ссылочную целостность - с помощью триггеров.

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

  4. С помощью триггеров стоит реализовать и БП, связанные с транзакционными изменениями таблиц;

  5. Повторяющиеся действия, которые могут разделяться различными приложениями и использоваться в SQL-операторах, можно реализовать с помощью функций пользователя.

Таким образом, перенос тяжести вычислительной работы на сервер позволяет:

  • Повысить скорость работы клиентских приложений;

  • Минимизирует возможность возникновения ошибок.

Определение БП. Преимущества и недостатки.

БП задают ограничения на значения данных в БД и определяют механизмы, согласно ктр

При изменении одних данных изменяются другие, связанные с ними в этой же или другой таблицах БД. БП определяют условия поддержания целостности БД. Архитектура клиент-сервер предполагает размещение БП на сервере.

Преимущества БП:

- Гарантия целостности БД, т.к. условия БП сосредоточены в одном месте

- Автоматическое применение БП, сосредоточенных на сервере для любых приложений

- Отсутствие различных реализаций БП в различных клиентских приложениях(Create)

- Быстрое срабатывание БП, т.к. нет необходимости пересылать данные клиентам

- Доступность изменений БП на сервере, т.е. нет необходимости повторного распределения изменения данных на клиентах

Недостатки БП:

- Отсутствие у клиентских приложений возможности реагировать на некоторые ошибочные ситуации, возникающие на сервере при реализации БП

- Недостаточность языка SQL, языка хранения процедур и триггеров для реализации БП, удовлетворяющих всем требованиям

На клиентских приложениях реализуются только те БП, которые трудно/невозможно реализовать на сервере, а все остальные переносятся на сервер.

БП для ограничений на значения столбцов

- Ограничения первичного ключа. Требует уникального значения столбца или группы столбцов входящих в первичный ключ

- Ограничение требуемого значения. В поле не может храниться пустое значение.

- Ограничение уникального ключа. Требует уникальности значения столбца или группы столбцов входящих в уникальный ключ.

- Ограничение ссылочной целостности определяется требования, согласно которым для каждого значения внешнего ключа дочерней таблицы должен найтись первичный ключ в родительской таблице.

- Значение по умолчанию. Указывается значение, которое будет занесено в поле по умолчанию при отсутствии интерактивного ввода.

- Ограничение диапазона вводимых значений

- Требование соответствия одному значению из списка

- Ограничение максимального и минимального значения. Указывает, что в поле может храниться значение не больше максимального и не меньше минимального.

- Алгоритмы вычисления значений указывает, что значения одного столбца может быть вычислено по значению другого

- Ограничение отношения между столбцами

- Ограничение формата записи. Указывает, что в значении столбца должна входить группа символов

- Требование вхождения символов в значение, указывает, что в значении должна входить группа символов независимо от её местоположения

- Требования отношения значения столбца со значениями другой таблицы. Значение столбца находится в некотором отношении со значениями, получаемыми из другой таблицы путем выполнения запросов.

CONSTRAINT – устанавливает ограничение на ссылочную целостность и задает имя при её создании

- Требование отношения столбца значения столбца со всеми или некоторыми значениями другой таблицы (All – все, SOME – некоторые).

- Требование существования хотя бы одной записи другой таблицы.

- Требования существования единственной записи другой таблицы, устанавливает что в другой таблице должна существовать единственная запись удовлетворяющая некоторому условию.

БП для ограничений на значения столбцов c использование ссылочной целостности

Автоматически срабатывают при изменении БД

Могут использоваться:

- При реализации каскадных воздействий в дочерних таблицах в случае изменения и удаления поля связи родительской таблицы.

- Для внесения уникального значения в столбец по которому построен первичный или уникальный ключ

- Внесение изменений в семантические связи таблицы

- Для ведения журнала изменений БД

Реализация БП в компонентах типа набор данных и др. компонентах С++

В компонентах типа набор данных

В этих компонентах бизнес-правила реализуются в следующих обработчиках событий:

- OnNewRecord. Происходит при добавлении новой записи сразу после перехода набора данных в состояние вставки из состояния просмотра, но перед выдачей полей новой записи пользователю для ввода. Обычно используется для присвоения значения по умолчанию.

- AfterCancel BeforeCancel. Наступают до или после выполнения метода Cancel (отказ от выполнения исправлений текущей записи таблицы).

- AfterClose BeforeClose. Возникают до или после закрытия соединения с БД.

- AfterDelete BeforeDelete. Возникают при удалении текущей записи методом Delete.

- AfterEdit BeforeEdit. Возникает до или после начала редактирования записи.

- AfterInsert BeforeInsert. Возникает перед или после вставки новой записи.

- AfterOpen BeforeOpen. Возникает до или после открытия набора данных. BeforeOpen возникает при установке свойства Active в True или при вызове метода Open.

- AfterPost BeforePost. До или после переноса изменений данных, при пересылке записи в БД или буфер.

- AfterRefresh BeforeRefresh. Возникает до или после обновления отображаемых данных методом Refresh.

- AfterScroll BeforeScroll. Возникает до или после перемещения указателя таблицы на новую запись. BeforeScroll наступает при перемещении методами First(), Last(), MoveBy(), Next(), Prior(), Locate().

  • OnCalcFields.

Вычисляемые поля – поля, отсутствующие в БД, значения которых можно получить по значениям других полей записи. Событие наступает при необходимости заполнения вычисляемых полей. При задании алгоритма расчета/перерасчета вычисляемых полей. Событие возникает когда свойство AutoCalcFields установлено в True, а также: при открытии набора данных; при переходе набора данных в состояние редактирования; при перемещении фокуса с одного компонента, отображающего данные, на другой; при модификации текущей записи; при получении записи из БД.

- OnDeleteError. Возникает при ошибке удаления записи

- OnEditError. Ошибка при редактировании или вставке записи.

- OnUpdateError. Возникает при ошибке пересылки кэшированных изменений в БД.

- Свойство CONSTRAINED компонента TQuery. Если оно True, то оно предотвращает ввод записей, неудовлетворяющих условию Where оператора Select.

- Свойство CONSTRAINTS. Содержит массив допустимых для ввода значений данных. Эти значения являются объектами типа TСheckConstraints и задаются интерактивно в редакторе массива. В случае попытки ввода значений, неудовлетворяющих списку, выводится системное сообщение или сообщение из свойства ErrorMessage.

В других компонентах

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

1)Проверка правильности значений свойства Text компонента TEdit. Проверка на соответствие формата поля можно осуществить с помощью события ONexit, ктр. возникает, когда компонент TEdit теряет фокус ввода.

2)Запрет подтверждений изменений в БД. В случае невыполнения каких либо усл. на форме блокируется кнопка, реализующая запоминание изменений в БД.

3)Отмена выхода из формы или осущ. каких либо действий . В случае изменения какого либо значения и до выполнения какого либо условия в форме м.б. запрещена какая либо кнопка. Из такой формы можно выйти с помощью Alt+F4, поэтому предусмотреть в форме выход системного меню и запрет Alt+F4. Реализуется в событии OnDatachange компонента TDataSource. Происходит изменение набора данных в режиме просмотра или при изменении какой либо записи в режиме просмотра.

Минимизация обращений к серверу.

Для соединения с удаленной БД в приложении следует использовать компонент TdataBase. Он используется для:

1.Создания постоянного соединения с БД.

2.Создания локального псевдонима БД.

3.Изменения параметров соединения, установленных для псевдонима БД.

4.Управления транзакциями.

Кроме TdataBase к БД можно обратиться с помощью компонентов TStoredProcedures, TQuery, Ttable, но они при активизации создают автономное соединение с БД.

Компонент DataBase подключается к БД один раз, а к нему подключаются компоненты типа «набор данных» через имя БД. Большое число обращений к БД ведет к затратам системных ресурсов, что сказывается на эффективности работы ИС.