Конспект лекций
Вид материала | Конспект |
- Конспект лекций 2008 г. Батычко В. Т. Административное право. Конспект лекций. 2008, 1389.57kb.
- Конспект лекций 2010 г. Батычко Вл. Т. Муниципальное право. Конспект лекций. 2010, 2365.6kb.
- Конспект лекций 2011 г. Батычко В. Т. Семейное право. Конспект лекций. 2011, 1718.16kb.
- Конспект лекций 2011 г. Батычко Вл. Т. Конституционное право зарубежных стран. Конспект, 2667.54kb.
- Конспект лекций 2010 г. Батычко В. Т. Уголовное право. Общая часть. Конспект лекций., 3144.81kb.
- Конспект лекций для студентов по специальностям 190302 «Вагоны», 783.17kb.
- Конспект лекций бурлачков в. К., д э. н., проф. Москва, 1213.67kb.
- Конспект лекций для студентов специальности 080504 Государственное и муниципальное, 962.37kb.
- Конспект лекций по курсу "Начертательная геометрия и инженерная графика" Кемерово 2002, 786.75kb.
- Краткий конспект лекций 2009 г. Батычко В. Т. Прокурорский надзор. Конспект лекций., 1859.8kb.
10.2.Типы элементов управления
В формах и отчетах Access существует три типа элементов управления:
- Присоединенные элементы управления связаны с полем источника данных для формы или подчиненной формы. Источником данных может быть таблица или запрос. Присоединенные элементы управления отображают и обновляют в ячейке данных значение поля, с которым они связаны, в текущей выделенной записи. Текстовые поля (Text boxes) являются наиболее общими присоединенными элементами управления. С помощью присоединенного элемента управления OLE можно отображать на экране содержимое графического объекта или проигрывать звуковой аудио файл. Можно связать переключатели, выключатели и флажки с логическими полями типа "Да/Нет". Все присоединенные элементы управления имеют связанные с ними метки, отображающие свойство поля "Имя" (Caption). Эту метку можно изменить или удалить, не влияя на присоединенный элемент управления.
- Свободные элементы управления отображают заданные данные, не зависящие от источника данных формы или подчиненной формы. Свободные элементы управления OLE используются для добавления графики в форму. Линии и прямоугольники можно использовать для разделения логически связанных частей формы или для имитации на экране внешнего вида бумажной формы. Свободные текстовые поля используются для ввода данных без обновления поля в источнике данных, но возможно использование их для других целей, например для установки значения, используемого в выражении. Некоторые свободные элементы управления, например текстовые поля, имеют связанные с ними метки, а некоторые, например свободные объекты OLE, не имеют.
- Вычисляемые элементы управления в качестве своего источника данных используют выражения. Обычно в выражения, используемые вычисляемыми элементами управления, включается значение поля, но в них можно также использовать значения, созданные с помощью свободных текстовых полей.
Конечным продуктом большинства приложений баз данных является отчет. В Access отчет представляет собой специальный тип непрерывных форм, предназначенных для печати.
11.Сервер БД
Сервер баз данных позволяет реализовать истинные системы клиент/сервер, в которых функциональные компоненты разделены на согласованно выполняемые операции. Как видно из названия самой технологии, клиент/серверная система состоит из серверной и клиентской частей.
Клиентская часть, как правило, предназначена для манипулирования информацией, расположенной в БД. Под манипулированием подразумевается ввод, изменение, отображение в виде графиков, отчетов и т.п.
Серверная часть предназначена для хранения и предоставления клиентской стороне данных, а также для контроля за соблюдением бизнес-правил ИС. Возможно возложение на серверную сторону и других задач, не требующих непосредственного участия человека (резервное копирование данных, автоматическое произведение репликаций данных между серверами, произведение автоматических расчетов и т.д.).
11.1.Отличие xBase и SQL-серверов как СУБД
По своей сути класс так называемых настольных СУБД (чаще называемые xBase) не соответствует реляционной модели Кодда. В них (за исключением самых последних разработок Borland/Corel Paradox, Microsoft Access и ряда других) не реализованы механизмы выполнения реляционных правил.
Рассмотрим основные отличия xBase-систем от SQL-серверов. SQL-сервер:
1) обеспечивает контроль за целостностью данных;
2) позволяет реализовывать реляционные БД благодаря механизмам объединений;
3) предоставляет клиентскому приложению только тот набор данных, который соответствует запросу, а не все имеющиеся в БД данные. Это очень важный момент. Может показаться, что, организовав хранение таблиц, например FoxPro, на файл-сервере, вы создаете клиент/серверную систему. От части это так. Но только с точки зрения файловой системы, а не с точки зрения баз данных. Необходимо помнить, что обработку данных в этом случае производит пользовательская рабочая станция. Т.е., файл с таблицей полностью отображается в адресное пространство клиентского приложения. При этом создается очень большая нагрузка на ЛВС (увеличивается сетевой трафик) и на процессор рабочей станции. Когда данные обрабатываются SQL-сервером, то клиентское ПО формирует запрос (обычно, в текстовом виде - SQL-запрос - и размером менее кБ) и получает относительно небольшой ответ. При этом вычислительные ресурсы рабочей станции практически не используются;
4) обеспечивает соблюдение бизнес-правил ИС.
11.2.Технология "Клиент/Сервер" применительно к СУБД
При построении клиент/серверных систем, ответственных за обработку данных, основными критерием является принцип разделения пользовательского (клиентского) интерфейса и интеллектуального ядра обработки и хранения данных.
Всю "тяжелую" работу по анализу данных, промежуточным расчетам, произведению выборок и объединений возлагают на сервер БД. Как правило, под сервер БД выделяется компьютер (или создается кластер из нескольких компьютеров) с большой вычислительной мощностью и высокой надежностью составляющих его устройств.
Пользовательский интерфейс реализуется в виде клиентского программного обеспечения (разработанного, как правило, на языках высокого уровня) для операционных систем рабочих станций или терминалов. Этот интерфейс обеспечивает возможность ввода и модификации данных, формирования отчетных документов, представления данных в виде графиков и т.п.
Клиентское ПО никогда ничего не знает о физической структуре данных и способах их извлечения и обработки. Оно получает только тот набор данных, который соответствует отправленному на сервер запросу.
Поддержка транзакций
Одним из основополагающих механизмов организации обработки данных в клиент/серверной среде является механизм транзакций.
Транзакция - это последовательность операций над данными, которая должна быть выполнена как целый неделимый блок. Транзакция считается завершенной только тогда, когда все составляющие ее операции выполнились успешно. При ошибке в любой из составляющих транзакция считается незавершенной.
О важности механизма поддержки транзакций можно судить на примере перечисления денег между счетами клиентов банка. Процесс перечисления состоит из снятия денег на счете одного клиента, начисления денег на счет другого и фиксирования операции в журнале. Если после снятия денег с первого счета в момент зачисления денег на счет второго произойдет какой-либо сбой, то деньги просто исчезнут! С первого счета они будут сняты, а на второй не начислены. Если применяется механизм транзакций, то потери не произойдет. В случае сбоя в течение транзакции произойдет ее откат.
Откат транзакции (Rollback) - приведение данных к виду, в котором они находились до начала транзакции. Другими словами - отмена всех произведенных данной транзакцией модификаций данных.
Если же все составляющие транзакции были успешно выполнены, то происходит процесс фиксирования транзакции (Commit).
Например, внесение изменений в таблицы баз данных MS SQL Server производит только после получения команды Commit. До этого все операции заносятся в журнал транзакций без физического изменения таблиц.
Надежность хранения данных
Одним из безусловных преимуществ SQL-сервера является высокая надежность хранения данных. Тысячи специалистов компаний-производителей SQL-серверов на протяжении десятилетий совершенствовали механизмы защиты данных от потери.
В современных серверах баз данных применяется все техническое многообразие решений, призванных защитить данные от неприятностей. Сюда можно отнести такие решения, как механизм транзакций и ведение журнала транзакций, автоматическое и инициируемое администратором резервное копирование баз данных и их восстановление с резервных копий, организация записи данных на дисковых массивах со сложнейшими системами резервирования и восстановления данных на магнитных носителях, создание отказоустойчивых кластерных систем (когда несколько мощных компьютеров функционируют как единое целое) и многое другое.
Стоит ли говорить, что стоимость самостоятельной разработки подобных систем может превысить все разумные и неразумные пределы!
Мы имеем возможность применять многолетний опыт лучших инженерных умов, реализованный в виде SQL-серверов. И этим, безусловно, стоит воспользоваться!
Производительность
Производительность - достаточно важный критерий оценки ИС. Разработчики SQL-серверов также достаточно много внимания уделяют росту производительности своих продуктов. Вообще рост производительности при использовании серверных СУБД достигается благодаря следующим факторам:
1) возможность функционировать на многопроцессорных системах;
2) использование многопоточности в рамках одного физического сервера;
3) использование сложных алгоритмов распределенных вычислений;
4) использование сложных алгоритмов оптимизации чтения/записи и извлечения данных;
5) как правило, для установки SQL-сервера выбирают наиболее мощный с вычислительной точки зрения компьютер.
Есть и ряд других, менее очевидных, но не менее важных технических особенностей, благодаря которым производительность клиент/серверных систем достигает иногда фантастических показателей.
Каждый производитель СУБД имеет собственные технологические решения, которые в сумме создают большой выбор этих продуктов на рынке и обеспечивают нам выбор между ценой и производительностью.
Многопользовательский доступ
Одним из самых больших достоинств серверов БД является возможность многопользовательского доступа к данным. Собственно, организовать многопользовательский доступ можно было и к xBase-данным, разместив файлы на файл-сервере и внеся некоторые коррективы в программное обеспечение.
Однако в серверных СУБД используется принципиально другой механизм. Они имеют интеллектуальное ядро, которое обрабатывает запросы, извлекает данные, формирует набор и отправляет его клиенту. Клиенты никогда не имеют непосредственного доступа к физическим данным на SQL-сервере.
Благодаря этому ядро сервера БД имеет возможность поддерживать такие технологии, как уровни изоляции данных, блокировки и транзакции.
Транзакции мы уже рассмотрели. Рассмотрим уровни изоляции и блокировки.
Блокировки
В многопользовательских клиент/серверных системах существует два подхода к управлению транзакциями --оптимистическая и пессимистическая блокировки.
Оптимистическая блокировка предполагает, что приложение явно не управляет блокировкой записей, рассчитывая на систему управления базами данных.
Пессимистическая блокировка подразумевает реализацию определенного типа блокировки самим приложением.
Следуя нескольким простым правилам разработки приложений с логикой оптимистической блокировки, вы сможете избежать остановки сервера от чрезмерных блокировок.
1) Минимизируйте время, которое транзакция находится в открытом состоянии. Это достигается ограничением SQL-кода в рамках одной транзакции.
2) Исключайте при разработке приложения блокировок во время простого просмотра записей. Блокируйте при вводе изменений только нужную запись.
3) Обеспечьте одинаковый порядок изменений и выборок данных таблиц для всех приложений. Это предотвратит так называемые взаимные блокировки.
Взаимные блокировки (deadlock) возникают, когда приложение А блокирует таблицу Т1 и пытается получить доступ к таблице Т2. В это же самое время приложение В блокирует таблицу Т2 и пытается получить доступ к таблице Т1. В этом состоянии таблицы Т1 и Т2 являются заблокированными, оба приложения ничего не выполняют ("зависают"). Тупиковая ситуация, которая требует вмешательства администратора SQL-сервера.
Рассмотрим еще несколько типов блокировок, знание механизма которых позволит вам создавать максимально отказоустойчивые системы.
Размеры страниц и оптимальное расположение данных
В качестве SQL-сервера будем рассматривать MS SQL Server 6.5. В нем данные организованны страницами размером 2К. Поэтому все операции производятся над объемом данных не менее 2 К. SQL-сервер может обращаться к данным только постранично. В результате, когда обновляется одна строка таблицы, то блокировка накладывается на всю страницу. Если размер строки меньше 2К, то фактически заблокированными окажутся несколько строк.
Для того, чтобы подобная ситуация не сказывалась на производительности многопользовательской системы необходимо как можно меньший период времени удерживать блокировку или же организовать данные таким образом, чтобы на одной странице оказывалось как можно меньше строк.
Табличная блокировка возникает тогда, когда пользователь выполняет запрос на обновление всех полей таблицы. Другими словами, когда в запросе отсутствует условие WHERE. Кроме того, табличная блокировка может возникать в случае, когда число страниц блокируемых данных превышает так называемый порог распространения блокировки (look escalation threshold).
Расширенная блокировка возникает, когда SQL-сервер, выполняя пользовательский запрос, вынужден расширить базу на 8 новых страниц.
Типы блокировок
Блокировки делятся на страничные и табличные.
Страничные блокировки бывают следующих типов: разделяемые (SHARED), эксклюзивные (EXCLUSIVE) и обновления (UPDATE).
Разделяемая блокировка позволяет иметь другим процессам блокировки на одной и той же странице, а эксклюзивные - нет. Разделяемые блокировки обычно создаются при выборке данных. Но ни один процесс не сможет выполнить эксклюзивную блокировку, пока не закончено выполнение всех разделяемых.
Эксклюзивная блокировка создается процессом, выполняющим удаление записи на странице, а также добавляющим новую запись в конец страницы. Эти блокировки не позволяют какому-либо другому процессу получить доступ к странице.
Блокировка обновления - это нечто среднее между разделяемой и эксклюзивной блокировкой. Процессу разрешается иметь на странице разделяемую блокировку, но только до тех пор, пока на ней не происходит обновление данных. Блокировки обновления выполняются при построении на сервере курсора. При обновлении страниц ассоциированных с курсором такая блокировка становиться эксклюзивной.
Табличные блокировки подразделяются на разделяемые, эксклюзивные блокировки и блокировки намерения (INTENT). Разделяемые и эксклюзивные блокировки работают также как страничные. Блокировки намерения показывают, что в таблице имеется несколько страниц, которые сервер в ответ на запрос пользовательского процесса намеревается блокировать на уровне страниц.
Еще одна блокировка - блокировка вставки на уровне строки (INSERT ROW-LEVEL LOCKING). Эта блокировка предназначена разрешить конфликт между несколькими процессами, пытающимися одновременно добавить в конец страницы запись.
Уровни изолированности
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 и др.).