Перемещение бизнес-логики и правил поддержки целостности данных с приложений на сервер БД

Уровни изолированности

SQL Server при запросе к БД позволяет по-разному реализовывать задания и отмены блокировок. Один из способов предполагает установку уровня изолированности транзакций.

В SQL Server имеется три уровня изолированности: завершенного чтения, незавершенного чтения и повторяемого чтения.

Уровень завершенного чтения (read commited) – метод выполнения операций, не позволяющий считывать незавершенные данные. Если в течение выполнения запроса другой пользователь выполняет операцию удаления или добавления данных, то можно получить нечитаемые страницы данных.

Уровень незавершенного чтения (read uncommited) не позволяет выполняться разделяемым блокировкам данных, если они имеются в запросе. Кроме того, не выполняется ни каких блокировок, установленных другими пользователями. Данный уровень изолированности надо использовать как можно реже.

Уровень повторяемого чтения (repeatable read) гарантирует неизменность читаемых вами данных и невозможность влияния на ваши данные со стороны любой выполняемой другими пользователями транзакции. Повторяемое чтение – наиболее эксклюзивный тип блокировки. Данный уровень изолированности снижает возможности параллельного доступа к данным.

Для обеспечения контроля за соблюдением бизнес-логики на уровне данных и поддержки целостности данных SQL Server предоставляет несколько средств:

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

2) Установку по умолчанию. Определяют значение по умолчанию для столбца таблицы. Если при помещении записи в таблицу явно не присвоить значение полю, содержащему значение по умолчанию, то в данное поле сервером будет автоматически вставлено указанное значение по умолчанию.

3) Условия на значение. Или условия проверки. Позволяют контролировать значения поля (полей) при помещении данных в таблицу. Для каждого столбца таблицы может создаваться несколько условий на значение. При удалении таблицы удаляются и условия на значения.

4) Правила. Также контролируют вводимые в столбец таблицы значения. Но, в отличие от условий на значение, правила сохраняются в виде отдельного объекта базы данных и не уничтожаются при удалении таблицы. С другой стороны, для каждого столбца может быть определено только одно правило. Одно и тоже правило может применяться для столбцов другой таблицы. Кроме того, правила могут быть применены и к пользовательским типам данных.

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

Применение описанных средств позволит вам освободить разрабатываемые приложения от контроля за логикой обработки и хранения данных. Кроме того, для освобождения приложений от логики извлечения данных можно применять хранимые процедуры и отображения (View). Бесспорно, невозможно полностью избавить приложение от логики обработки данных. Но для облегчения сопровождения создаваемой базы данных и защиты от ошибок в коде приложений необходимо стремиться к максимально возможному описанию бизнес-правил на уровне сервера баз данных.

Корпоративные системы БД, Интернет/Интранет

Корпоративные информационные системы, как правило, имеют несколько центров обработки данных. Эти центры могут быть физически расположены в разных местах (территориально распределенные). Как обеспечить функционирование информационной системы в подобных условиях? В зависимости от объема данных, которыми обмениваются территориально распределенные центры обработки, и коммуникационных возможностей, может существовать несколько решений.

1) Удаленный доступ к серверу баз данных – распределенная обработка. Требует постоянной связи с SQL Server рабочих станций удаленных центров обработки (офисов) или возможности оперативного установления соединения. Первый вариант достаточно дорог, так как требует либо выделенных телефонных каналов связи либо организации каналов связи другими способами (организация оптоволоконной, спутниковой, радио, инфракрасной или какой-либо другой связи). С другой стороны, постоянное соединение гарантирует оперативность доступа к данным и, как правило, высокую скорость передачи. Второй вариант значительно дешевле, но он менее надежен, так как нет гарантии установления соединения и его устойчивости, и обеспечивает, обычно, меньшую скорость передачи данных.

2) Организация распределенной базы данных. Этот вариант предполагает установку в каждом центре обработки данных сервера баз данных и обеспечение связи между ними. Связь, как и в случае с удаленным доступом, может быть либо постоянной, либо устанавливаемой по необходимости. Схема взаимоотношений между сегментами информационной системы может быть достаточно простой (например, типа звезда – когда существует центральный сервер БД, производящий основную обработку данных, и подчиненные сервера, предоставляющие данные пользователям удаленного офиса только для отображения и анализа) или очень сложной (распределенные по физически удаленным серверам сегменты базы данных или звезда с возможностью любых операций над данными в удаленных офисах).

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

Иногда удается обеспечить достаточно простые и эффективные решения (такие, как удаленный доступ к серверу БД или репликация данных между серверами средствами SQL Server). В ряде случает приходится создавать сложные системы с применением таких технологий, как многоуровневый клиент/сервер, CORBA, DCOM или каких-либо других.

С развитием Интернет (или Интранет – корпоративный вариант Интернет) появился целый пласт технологий, позволяющий реализовать корпоративную информационную систему и базы данных. Во-первых, происходит постоянных рост количества каналов связи. Во-вторых, улучшается их качество. В-третьих, появляются новые и постоянно совершенствуются уже существующие стандарты организации распределенных вычислений и обмена данными.

Одним из бесспорных достижений является массовое развитие Web-серверов и Web-броузеров (Интернет-броузеров), позволяющих получать информацию по протоколу HTTP (Hyper-Text Transfer Protocol). Информация описывается при помощи тэгов языка разметки гипертекстов HTML (Hypertext Markup Language). Преимущество такого подхода заключается в том, что протокол HTTP поддерживается всеми Web-серверами и всеми Web-броузерами независимо от того, на какой аппаратной или программной платформе они реализованы. Язык HTML поддерживается всеми Web-броузерами. При этом нетрудно заметить, что Web-броузеры представляют из себя средство, реализующее функции клиентского программного обеспечения.

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

1) вам не надо заботиться об установке и настройке вашего программного обеспечения на рабочей станции каждого сотрудника компании (что снижает затраты на внедрение).

2) нет необходимости заботиться о разработке ПО для различных аппаратных и программных платформ (что снижает затраты на разработку).

3) нет необходимости специально организовывать связь удаленных рабочих станций с серверами баз данных, так как при использовании Интернет эта проблема решается целым комплексом стандартизованных решений.

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

С другой стороны, при организации распределенной базы данных вы можете применять стандартные технологии и решения, основанные на Интернет/Интранет, что позволит вам:

1) снизить стоимость разработки.

2) обеспечить высокую надежность обработки и обмена данными

3) развивать и наращивать вычислительную мощность системы по мере необходимости.

SQL Server предоставляет вам некоторые механизмы применения Интернет-технологий. Но на практике этого оказывается недостаточно. Поэтому максимальный эффект можно получить используя не только SQL-сервера, но и системы обработки распределенных транзакций (MS DTC, MS Transact Server, Inprise OLE-Enterprise, Inprise MIDAS и другие), развития броузерных технологий (DHTML – Dynamic Hypertext Markup Language), механизмы Web-серверов (ASP – Active Server Pages, CGI – Common Gateway Interface, ISAPI – Internet Server Application Program Interface) и языки высокого уровня (Java, C++, ObjectPascal, Visual Basic и др.).