Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Характеристика современных автоматизированных информационных систем

.pdf
Скачиваний:
53
Добавлен:
10.03.2016
Размер:
912 Кб
Скачать
☆

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

Физическая архитектура базы данных. База данных SQL Server 2000 хранится в самостоятельном, уникальном для каждой БД наборе файлов. Кроме того, журнал транзакций и сами данные обязательно хранятся отдельно. Это повышает отказоустойчивость базы данных в случае сбоев системы. Рассмотрим физическую структуру базы данных более подробно.

Файлы и группы файлов. Для хранения базы данных предназначен набор файлов, персональный для любой базы данных. Каждый файл может принадлежать только одной базе данных. В SQL Server 2000 существует два типа файлов базы данных:

1.Файлы данных (data file). Предназначены для хранения информации, находящейся в таблицах базы данных. Кроме того, в этих файлах также размещены процедуры, ограничения, триггеры, индексы и другая информация;

2.Файлы журнала транзакций (transaction log file). В файлы этого типа SQL Server 2000 записывает информацию о ходе выполнения транзакций. В них размешается информация о состоянии данных перед началом транзакции, о выполняемых изменениях, блокированных ресурсах и другая сопутствующая информация.

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

Файлы данных бывают двух типов:

-Primary File (основной, или главный, файл). Каждая база данных имеет один и только один главный файл. Если база данных включает в себя только один файл данных, то этот файл будет основным. Основной файл предназначен для хранения всех системных таблиц, присутствующих в любой базе данных. В основном файле хранится информация о структуре базы данных, созданных в ней объектах, параметрах дополнительных файлов и файлов журнала транзакций. По умолчанию основному файлу базы данных присваивается расширение mdf (Master Data File);

-Secondary File (вторичный, или дополнительный, файл). В отличие от основного файла база данных может содержать множество дополнительных файлов или не содержать их вовсе. В дополнительных файлах может храниться только пользовательская информация. Хранение любой системной информации

не допускается. В ходе эксплуатации базы данных администратор может добавлять новые или удалять уже существующие дополнительные файлы.

Файлы журнала транзакций бывают только одного типа – Transaction Log File (файл журнала транзакций), служащего для хранения журнала транзакций. В базе данных должен быть как минимум один файл журнала транзакций. Для ускорения обработки транзакций можно использовать несколько журналов транзакций, расположенных на разных физических дисках.

5.23 Язык SQL – функции запросов и основные возможности.

Непроцедурный, структуризированный язык запросов (SQL) – язык,

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

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

1)предложения определения данных;

2)запросы на выбор данных;

3)предложения модификации данных;

4) предложения управления данными.

Типы данных

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

Рассмотрим основные типы данных SQL:

INTEGER – целое число;

SMALLINT – “короткое целое”;

FLOAT – вещественное число с 15 значащими цифрами и целочисленным порядком, определяемым типом СУБД;

CHAR(n) – символьная строка фиксированной длины из n символов (0 < n <

256);

VARCHAR(n) – символьная строка переменной длины, не превышающей n символов;

TIME – время в формате, определяемом специальной командой (по умолчанию hh.mm.ss);

DATETIME – комбинация даты и времени;

Средства определения схемы

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

Базовая таблица – таблица реляционной БД, для каждой строки которой в действительности имеется некоторый двойник, хранящийся в физической памяти ЭВМ, и которая создается с помощью предложения CREATE

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

Таблицы создаются командой CREATE TABLE. Значения вводятся с помощью DML команды INSERT. Команда CREATE TABLE в основном определяет имя таблицы в виде описания набора имен столбцов, указанных в определенном порядке.

При записи синтаксических конструкций используются следующие обозначения:

–звездочка (*) для обозначения “все” – употребляется в обычном для программирования смысле.

–квадратные скобки ([]) – означают, что конструкции, заключенные в эти скобки, являются необязательными;

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

–прямая черта (|) – означает наличие выбора из двух или более возможностей.;

–точка с запятой (;) – завершающий элемент предложений SQL;

–запятая (,) – используется для разделения элементов списков;

–термины таблица, столбец, ... – заменяют термины имя_таблицы, имя_столбца, ..., соответственно.

Согласно этим правилам синтаксис команды CREATE TABLE будет следующим:

CREATE TABLE базовая_таблица (столбец тип_данных[,столбец тип_данных]

...);

Индекс – это структура данных, которая помогает СУБД быстрее обнаруживать отдельные записи в таблице, а потому позволяет сократить время выполнения запросов пользователя.

Предложение для создания индекса обычно следующее: CREATEINDEXON(имя_столбца[,] ...);

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

Представление создается командой CREATE VIEW. Она состоит из слов CREATE VIEW (создать представление), имени представления, которое нужно создать, слова AS (как) и, далее, запроса.

Каждая СУБД должна обеспечивать функцию системного каталога. Системный каталог реляционной СУБД – это набор таблиц, в которых содержится информация, необходимая для правильного функционирования СУБД: о поддерживаемых базах данных и их базовых таблицах, пользователях и их правах доступа к информации, правилах модификации данных и т.д. Следует различать термины “каталог” и “информационная схема”. Каталог описывает отдельную базу данных, тогда как информационная схема состоит из описания той части базы данных, которая относится к некоторому отдельному пользователю.

в каждой строке системной таблицы SYSTABLES хранится описание одной из таблиц пользовательских или системной баз данных. В таблице SYSCOLUMNS содержится строка для каждого столбца каждой таблицы, в которой указано имя столбца, имя таблицы, частью которой является данный столбец, тип данных для этого столбца и много другой информации о столбце.

С помощью предложения SELECT пользователь может получить информацию из любой системной таблицы.

Структура запросов с использованием одной таблицы

Как уже говорилось, SQL представляет собой структуризованный язык запросов. Запросы – наиболее часто используемый элемент SQL. Запрос – это команда, которая дается СУБД и которая сообщает ей, чтобы она вывела определенную информацию.

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

Предложение SELECT выглядит следующим образом:

Ниже перечислены аргументы инструкции SELECT: * – указывает, что выбраны все поля заданной таблицы или таблиц;

поле_1, поле_2 – имена полей, из которых должны быть отобраны данные.

псевдоним_1, псевдоним_2 – имена, которые станут заголовками столбцов вместо исходных названий столбцов в таблице; выражение – имена одной или нескольких таблиц, которые содержат отбираемые данные; внешняя_база_данных – имя базы данных, которая содержит таблицы,

указанные с помощью аргумента “выражение”, если они не находятся в текущей базе данных.Предикат – предикаты используются для ограничения числа возвращаемых записей: ALL – возвращают все записи из таблицы.

DISTINCT – исключает записи, которые содержат повторяющиеся значения в выбранных полях DISTINCTROW– опускает данные, основанные на целиком повторяющихся записях, а не на отдельных повторяющихся полях;

5.24 Использование SQL в прикладном программировании.

Использование SQL при прикладном программировании

Встроенный SQL

Прикладное программирование с использованием SQL – это использование предложений SQL в исходных текстах прикладных программ, написанных на языках программирования высокого уровня, например, таких, как Си или Паскаль, либо в командах специально разработанного языка СУБД.

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

Операторы манипулирования данными

Операторы языка манипулирования данными DML управляют значениями, представляемыми в таблицах. Значения могут быть помещены и удалены из полей тремя операторами языка DML: INSERT (вставить), UPDATE (модифицировать), DELETE (удалить).

Оператор Вставка INSERT

Имя таблицы должно быть предварительно определено в команде CREATE TABLE, а каждое значение в предложении значений должно совпадать с типом данных столбца, в который оно вставляется. В стандарте ANSI эти значения не могут составлять выражений. Это означает, что 3 – разрешено, а выражение 2 + 1 – нет. Значения можно вводить в таблицу без указания имени поля, тогда первое значение в предложении значений автоматически попадает в столбец 1, второе в столбец 2 и т.д.

Если требуется ввести пустое значение (NULL), то его вводят точно так же, как и обычное значение:

Тогда имя_поля_1 таблицы имя_таблицы будет иметь значение NULL. Так как значение NULL – это специальный маркер, а не просто символьная константа, он не включается в одиночные кавычки.

Оператор Удаление DELETE

Команда DELETE позволяет удалять строки из таблицы. Она может удалять только введенные строки, а не индивидуальные значения полей, так что параметр поля является необязательным или недоступным. Чтобы удалить все содержание таблицы имя_таблицы_1, надо ввести следующее условие:

DELETE FROM имя_таблицы_1;

Оператор модифицирования UPDATE

Изменение значений поля выполняется командой UPDATE. Эта команда содержит предложение UPDATE, в котором указано имя используемой таблицы, предложение SET, которое указывает на изменение, которое нужно сделать для определенных столбцов, и предложение WHERE, условие которого определяет модифицируемые записи.

UPDATE имя_таблицы

SET имя_поля_1 = значение_поля_1, имя_поля_2 =

значение_поля_2,... WHERE условие;

Курсор

Одно из сильных качеств SQL – это способность функционировать на всех строках таблицы, чтобы встретить определенное условие как блок записей, не

зная сколько таких строк там может быть. Курсор в SQL – средство, которое состоит из некоторого рода указателя, используемого для просмотра множества записей путем поочередного указывания каждой записи в данном множестве, что обеспечивает возможность обращения к одной конкретной записи средствами включающего языка программирования. Можно рассматривать SQL-курсор как устройство, которое отмечает место в выводе запроса. Курсор – это вид переменной, которая связана с запросом. Курсоры должны быть объявлены прежде, чем они будут использованы. Это делается командой DECLARE CURSOR следующим образом:

EXEC SQL DECLARE CURSOR имя_курсора FOR

SELECT * FROM имя_таблицы WHERE условие;

Когда в программе надо выполнить запрос, надо открыть курсор с помощью следующей команды:

EXEC SQL OPEN CURSOR имя_курсора;

Значения в курсоре могут быть получены, когда выполняется именно эта команда, но не предыдущая команда DECLARE и не последующая команда FETСH. Команда FETCH используется для выборки из этого запроса по одной строке каждый раз:

EXEC SQL FETCH имя_курсора INTO : имя переменной_1, имя переменной_2,

…;

Для освобождения курсора значений используется оператор CLOSE CURSOR, соответствующий оператору OPEN CURSOR:

EXEC SQL CLOSE CURSOR имя_курсора;

Создание и удаление базовых таблиц

Как уже говорилось, базовые таблицы описываются в SQL с помощью предложения CREATE TABLE (создать таблицу), синтаксис которого имеет небольшие различия в различных СУБД. Однако все они поддерживают следующую минимальную форму:

CREATE TABLE базовая_таблица (столбец_1 тип_данных, столбец_2 тип_данных ...);

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

является пустой, с помощью предложения DROP TABLE (уничтожить таблицу):

DROP TABLE базовая_таблица;,

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

Работа с таблицами реляционной БД

Команда ALTER TABLE не часть стандарта ANSI, но это широко доступная и довольно содержательная команда, хотя ее возможности несколько ограничены. Она используется, чтобы изменить определение существующей таблицы. Обычно она добавляет столбцы к таблице. Иногда она может удалять столбцы или добавлять в (удалять из) определение таблицы новые (существующие) ограничения. Типичный синтаксис, чтобы добавить столбец к таблице:

ALTER TABLE имя_таблицы

ADD имя_столбца;

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

Обработка транзакций в SQL

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

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

COMMIT (фиксировать), превращающее все предварительные обновления в окончательные (“зафиксированные”);

ROLLBACK (откат), аннулирующее все предварительные обновления.

Таким образом, транзакцией можно назвать последовательность SQLпредложений, расположенных между “точками синхронизации”, учреждаемых в начале выполнения программы и издании COMMIT или ROLLBACK и только в

этих случаях. При этом следует иметь в виду, что возможен неявный COMMIT

и ROLLBACK.

Таким образом, пользователь должен сам решать, включать ли механизм обработки транзакций, и если включать, то где издавать COMMIT (ROLLBACK), т.е. какие последовательности SQL-предложений являются транзакциями.

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

TOP – возвращает определенное число записей, находящихся в начале или в конце диапазона, описанного с помощью предложения ORDER BY;

FROM – указывает таблицы или запросы, которые содержат поля, перечисленные в инструкции SELECT;

WHERE – строки из указанных таблиц должны удовлетворять указанному перечню условий отбора строк. Кроме традиционных операторов сравнения (= | <> | < | <= | > | >=) в WHERE фразе используются условия BETWEEN (между), LIKE (похоже на), IN (принадлежит), IS NULL (не определено) и EXISTS (существует), которые могут предваряться оператором NOT (не). Критерий отбора строк формируется из одного или нескольких условий, соединенных логическими операторами:

-AND – когда должны удовлетворяться оба разделяемых с помощью AND условия;

-OR – когда должно удовлетворяться одно из разделяемых с помощью OR условий;

-AND NOT – когда должно удовлетворяться первое условие и не должно – второе;

-OR NOT – когда или должно удовлетворяться первое условие, или не должно удовлетворяться второе.

GROUP BY – группирует по указанному перечню столбцов для того, чтобы получить группы строк, имеющих одно и то же значение в указанном столбце, используя во фразе SELECT SQL-функции SUM (сумма), COUNT (количество),

MIN (минимальное значение), MAX (максимальное значение) или AVG (среднее значение).

HAVING – имеет в результате лишь те группы, которые удовлетворяют указанному перечню условий отбора групп.

ORDER BY – упорядочить по – определяет упорядоченность результатов выполнения оператора.

Структура запросов с использованием нескольких таблиц

Объединения – это связь нескольких таблиц в запросе. Объединение соединяет все строки одной таблицы со строками другой таблицы и обычно сопровождается условием объединения таблиц.

Существует три типа объединений, используемых в предложении FROM: левое внешнее (LEFT JOIN), правое внешнее (RIGHT JOIN) и внутреннее (INNER

JOIN).

Ниже перечислены аргументы операций LEFT JOIN, RIGHT JOIN, INNER JOIN:

таблица_1, таблица_2 – имена таблиц, записи которых подлежат объединению;

поле_1, поле_2 – имена объединяемых полей. Поля должны иметь одинаковый тип данных и содержать данные одного рода, однако могут иметь разные имена;

оператор – любой оператор сравнения: “=,” “<,” “>,” “<=,” “>=,” или “<>”;

ON – определяет критерии объединения.

В левом внешнем объединении всем записям в таблице_1 поставлены в соответствие записи из таблицы_2, отвечающие заданным критериям. Записи из таблицы_1 включаются даже тогда, если для них нет соответствующих записей в таблице_2.

Правое внешнее объединение аналогично левому, но в данном случае отображаются все записи таблицы_2 и соответствующие критерию записи таблицы_1.

5.25 Организация БД в корпоративных распределенных АИС.

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