Учебное пособие: Технологии баз данных в информационных экономических системах

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

К другим существенным отличиям относится то, что если в Access хранимые процедуры и функции пишутся на VВА (Visual Basic for Applications), то в SQL Server основным языком написания хранимых процедур является Transact SQL (хотя могут использоваться и внешние хранимые процедуры, написанные на других языках). Transact SQL - это диалект SQL, в котором, помимо стандартных инструкций SQL, предусмотрены возможности организации циклов, условного выполнения операторов и т.д.

Также необходимо упомянуть, что существующие базы данных Access (также как и файлы Excel, базы данных Paradox, Visual FoxPro и др.) легко импортируются в SQL Server, так что переход на SQL Server относительно прост.

3.1.2 Объекты MS SQL Server.

MS SQL Server может содержать несколько баз данных. На одном компьютере может быть установлено несколько экземпляров MS SQL Server. Каждая база данных содержит следующие объекты:

1) таблицы

2) индексы

3) представления (виды, запросы)

4) диаграммы (схема данных)

5) курсоры (окно накладываемое на набор данных, аналог окна в текстовом редакторе, в котором в каждый момент времени отображается только часть документа)

6) триггеры, хранимые и внешние процедуры, функции пользователя, пользовательские типы данных

7) правила (ограничения на значения столбцов) и умолчания (значения столбцов по умолчанию) необходимо для совместимости со старыми версиями, в новых версиях все эти ограничения указываются в инструкции Create языка SQL. .

8)перечень пользователей, допущенных к базе данных и их разрешения, роли пользователей

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

Управление SQL Server000 осуществляется через оснастку Enterprise Manager ММС (Мiсrоsоft Management Console), которая по внешнему виду напоминает проводник (рис.8). Эта оснастка, помимо непосредственной работы с конкретной базой данных (создание таблиц, импорт или ввод данных в таблицы, создание пользователей и определение их прав доступа и т.д.), позволяет выполнять много дополнительных операций: создавать расписание обслуживания базы данных (maintenance plan: проверка целостности БД, реорганизации: свободного места в БД, резервное копирование БД и журналов транзакций и др.), создавать перечень операторов, ответственных за обслуживание БД (имя, адрес электронной почты или номер пейджера, время работы) и определять ошибки в базе данных (alerts), при которых данному оператору будет направлено сообщение.

Репликация баз данных также настраивается через Enterprise Manager MMS. Репликация - это распространение копий базы данных на другие компьютеры в сети (например, пользователям других сетей, или пользователям мобильных компьютеров). Репликация в MS SQL Server000 может быть следующих типов:

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

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

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

Управление СУБД SQL Server000 при помощи Enterprise Manager ММС.

Помимо Enterprise Manager ММС, существует целый ряд других утилит, позволяющих управлять работой SQL Server. Используя утилиту Ргofiler можно отслеживать работу SQL Server, анализировать и настраивать его производительность. Утилиты Server Network Utility и Client Network Utility позволяют настроить список протоколов, поддерживаемых на сервере и клиентах (например, включить шифрование передаваемых данных). Утилита Analysis Manager ММС (пакет MS SQL Analysis Services устанавливается отдельно) позволяет использовать MS SQL Server000 не только как систему оперативной обработки транзакций (OLТР-систему), но и как систему делового анализа (хранилище данных, ОLАР-систему). Помимо утилит с графическим интерфейсом, MS SQL Server может управляться и при помощи утилит командной строки, что позволяет настраивать SQL Server из файлов-сценариев.

Важным моментом является и то, что MS SQL Server000 представляет средства интеграции с сервисами сети Internet. В частности, запросы к SQL Server можно направлять непосредственно по протоколу http (используя внешний Web-сервер, например IIS). Кроме того, в MS SQL Server000 поддерживается язык XML, наилучшим образом подходящий для представления структурированных данных в Web-броузерах.

3.2 СУБД Oracle

3.2.1 История развития СУБД Oracle

СУБД Oracle является на сегодняшний день самой мощной, многофункциональной и легко масштабируемой СУБД, построенной по архитектуре "клиент-сервер", поддерживающей практически все существующие платформы. Это прекрасный выбор для крупной организации: первоначальные затраты на установку (лицензия, приобретение высокопроизводительных серверов) в будущем обернутся значительной экономией средств при необходимости расширения базы данных. Для небольшой организации мощь Oracle может оказаться чрезмерной, в таком случае можно рекомендовать использование Мiсrоsоft SQL Server (Windows NT/2000) или PostgreSQL (Linux/Unix). Для фирм малого бизнеса стандартом остается СУБД MS Access. Тем не менее, Oracle продолжает занимать значительную долю рынка, являясь пожалуй самой передовой СУБД.

Первая коммерческая версия СУБД Oracle.0 (версия.0 не поставлялась заказчикам) была создана фирмой Relational Software Incorporated (позднее переименована в Oracle Corporation) на миникомпьютере РDР-ll фирмы Digital Equipment Corporation в операционной среде RSX-II. Отличительные черты этой и последующих версий представлены в таблице4.

3.2.2 Инструменты и технологии, реализованные в СУБД Oracle

Поддержка языка PL/SQL

Язык PL/SQL является диалектом SPL-SQL (Stored Procedure Language - SQL) - модифицированным вариантом языка SQL, использующимся в СУБД для описания триггеров, хранимых процедур и функций. Если в традиционном SQL отсутствуют циклы, операторы IF..THEN..ELSE и т.д., то в языках SPL-SQL все эти возможности имеются, что позволяет писать на них "полноценные" программы, хранимые в самой СУБД. Другим широко известным диалектом SPL-SQL является язык Transact-SQL, реализованный в СУБД MS SQL Server и СУБД Sybase.

Программа SOL *NET

Программа SQL *Net позволяет пользователю взаимодействовать с удаленной базой данных (или несколькими базами данных) через сеть так, как будто бы это была локальная база данных, находящаяся на компьютере пользователя. SQL *Net устанавливается и на сервере и на клиенте. Задача администратора - настроить ее, создать именованный канал связи между локальной и удаленной базой данной. Именованный канал связи определяет: местоположение удаленного сервера БД в сети, используемый коммуникационный протокол, имя удаленной базы данных, имя и пароль пользователя для подключения к БД. После создания именованного канала связи доступ к удаленной базе данных из инструкций SQL осуществляется в виде:

ИМЯ _ ТАБЛИЦЫ @ имя_канала.

SQL*Net поддерживает практически все сетевые протоколы: TCP/IP, SPXlIPX, DECnet, АРРС, ISO!OSI, Named Pipes, NetBIOS, AppleTalk, Banyan Vines,. XODIAC, Wang Systems Network и др. Механизм многопротокольного обмена - MPI (Multiple Protocol Interchange) осуществляет преобразование данных из одного протокола в другой и позволяет

История развития СУБД Oracle

Версия

Отличительные черты

Orac1e.0

1979 г

Большая часть СУБД написана на ассемблере РDР-ll, а отдельные компоненты - на языке Си. Реализована межплатформенная переносимость (например, помимо "родной" ОС RSX-1, работала в ОС UNIX). Полная реализация нового (на то время) языка запросов SQL (по стандарту IВM). Отсутствие поддержки транзакций

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

Orac1e.0

1983 г.

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

Orac1e.0

1984 г.

Существенно повышена надежность и проработан механизм блокировок, для обеспечения непротиворечивости данных, при одновременной работе с СУБД нескольких пользователей Выполнен перенос Oracle.0 на большие компьютеры в ОС VМ и MVS, а также на персональный компьютер с40 Кбайтами оперативной памяти.

Orac1e.0

1985 г.

Впервые введена архитектура "клиент/сервер" и реализована программа SQL *Net, поддерживающая неоднородные среды.

Orac1e.1

1986 г.

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

Oracle.0

Ориентирована на построение крупномасштабных информационных систем, позволяющих обрабатывать транзакций в режиме реального времени. Существенно улучшен механизм блокировок (введена блокировка на уровне записи, введено несколько уровней блокировки, что позволило процессам чтения и записи больше не блокировать друг друга). Частично реализован механизм описания ограничений ссылочной целостности на уровне схемы базы данных. Введена возможность совместного использования языка SQL с процедурным язы ком PL/SQL (получающиеся в результате утверждения могли посылаться для выполнения на сервер, как анонимные процедуры). В язык PL/SQL введен язык четвертого поколения на системы OS/2, Xenix, Вапуап Vines и Macintosh.

Orac1e.0

Повышение эффективности ввода/вывода, использования центрального процессора и работы с памятью, оптимизатор запросов, разделяемый SQL-кэш на сервере (SQL-инструкции, ко торые ранее уже были получены от клиентов, проанализированы и скомпилированы, хранят ся некоторое время в кэш-памяти, экономя время и память при обработке последующих аналогичных SQL-инструкций). Полностью реализован механизм описания ограничений ссылочной целостности на уровне схемы базы данных (каскадные удаления и обновления записей). При помощи PL/SQL реализованы хранимые процедуры и триггеры. В области администрирования введены: зеркальный журнал транзакций, динамическое создание журналов данных, команда ANALYZE, позволяющая собирать статистику об использовании таблиц, индексов и других физических объектах (используется оптимизатором запросов), профили пользователей на использование системных ресурсов (процессора, ввода/вывода и т.д.), роли пользователей. Роль - это совокупность прав доступа к объектам базы данных (1NSERT, UPDATE, SELECT и др.) и системных прав (CREATE TABLE, ALTER SYSTEM и т.д.). Определив роль, администратор базы данных может с помощью одной команды GRANT дать пользователю привилегии для работы с некоторым приложением.

Oracle.1

Полностью поддерживает стандарт ANSl SQL9 и входной уровень ANSl SQL2. Достигнута полная интеграция PL/SQL и SQL. Если ранее можно было использовать конструкции SQL в текстах PL/SQL (но не наоборот), то теперь функции PL/SQL могут вызываться из SQL как обычные встроенные функции в любых SQL-инструкциях (SELECT, WHERE, GROUP ВУ, CREATE TABLE, ALTER TABLE и др.). Реализована возможность динамически формировать и выполнять инструкции SQL в программах PL/SQL, т.е. реализо ван динамический SQL (благодаря встроенному пакету DBMS_SQL). Реализована возмож ность параллельной обработки запросов (опция paralle1 query), параллельного создания ин дексов и параллельной загрузки данных (параллельная работа сразу нескольких серверных процессов, под управлением процесса-координатора). В области распределенной обработки данных введена асинхронная симметричная репликация данных и асинхронный вызов vдаленных процедvр.

Oracle.0

1997 г.

Первая объектно-ориентированная версия СУБД Oracle (использование объектной модели для доступа к данным, вызова внешних процедур на языках С, С++, Java, как методов объек тов и т.д.). Поддержка языка Java: встроенная в СУБД виртуальная Jаvа-машина и техноло гия SQLJ дЛЯ возможности внедрения инструкций SQL в Jаvа-код. Как следствие - хранимые процедуры и триггеры на языке Java, взаимодействие Java - SQL - PL/SQL. Драйвер JDBC - набор стандартных АРI-функций, позволяющих внешним программам на языке Java взаимодействовать с базой данных при помощи SQL-инструкций. Упрощены процедуры резервного копирования, восстановления и репликации базы данных. Введена возможность разделять большие таблицы и индексы на несколько небольших самостоятельных частей (partitioning). В результате появляется возможность обслужива ния/восстановления крупных таблиц "по частям", в случае утраты одной части (из-за физи ческих проблем диска) остальные части таблицы продолжают оставаться корректными - данные всей таблицы не теряются. Улучшена параллельная обработка данных, возможность оперативной обработки транзакций (OL ТР, Online Transaction Processing), улучшена работа с данными типа мультимедиа.

Oracle.1

1999 г.

Версия, ориентированная на более тесную интеграцию в сеть Intemet. Интегрированный в СУБД Web-серВер (на основе Apache) -СУБД может сама принимать НТТР-запросы и обрабатывать их без помощи внешнего Web-серВера. Акселератор (JIТ-компилятор) для Jаvа-машины - байт-код Java компилируется в выполнимый код для конкретной платформы, что значительно увеличивает быстродействие. Поддержка JavaServer Pages, сервлетов Java и компонентов Java Beans. Поддержка языка XML. PL/SQL шлюз для протокола НТТР. Защита информации при помощи криптографических алгоритмов RC4 (256-бит) и TripleDes, поддержка протокола SSL, значительно повышена защищенность и стабильность самой СУБД.

Oracle

2002 г

Было сделано более00 изменений, по сравнению с предыдущей версией, обеспечивающих улучшение работы СУБД.

существенно снизить число, используемых протоколов в сети.

SQL *Net поддерживает также множественные сетевые интерфейсы для одного узла.

Другой существенной функцией SQL *Net является поддержка национальных языков, если на клиентах и серверах используются разные кодовые страницы, то SQL *Net обеспечивает корректную перекодировку данных.

Программа SQL *PLUS

Программа SQL *Plus позволяет интерактивно, из командной строки, взаимодействовать с БД Oracle при помощи инструкций SQL (рис.9). Программа позволяет:

1) выполнять в построчном режиме большинство SQL-операторов и блоки PL/SQL;

2)создавать или изменять таблицы и представления, а также просматривать их содержимое в окне SQL *Plus в форме отчета;

3) просматривать определения столбцов для любой таблицы;

4) выполнять отладку SQL-операторов, хранимых процедур и функций, блоков PL/SQL перед их использованием в разрабатываемых приложениях;

5) получать доступ и копировать данные между различными SQL-базами данных;

выполнять встроенные команды SQL *Plus.

ORACLE Developer

ORACLE Developer - это мощная интегрированная среда разработки приложений, взаимодействующих с БД Oracle по архитектуре клиент/сервер. Причем поддерживается создание приложений, как по архитектуре клиент - сервер, так и по трехуровневой архитектуре (клиент- сервер приложений - сервер БД). Пример трехуровневой архитектуры, с использованием Oracle Fonns Server приведен на рис.0. Наличие интегрированного в Oracle Web-сервера позволяет реализовать трехуровневую архитектуру и без использования Forms Server, однако это потребует больших затрат времени программистов.

Рис.9 Пример запроса в окне SQL *Plus.

Рис.0 Трехзвенная архитектура, с использованием Oracle Fonns Server.

В состав среды ORACLE Oeveloper входят следующие программы:

- Form Builder

- Report Bu]der

- Graphics Builder

- Procedure Builder

- Project Builder

Form Builder - это интегрированная среда для разработки программ, которые позволяют получить доступ к БД Oracle, при помощи удобных форм пользователя. Такой подход чем-то напоминает формы MS Access, с той разницей, что Form Builder позволяет создавать самостоятельные программы-клиенты, выполняющиеся на компьютере пользователя. Эти программы содержат собственное меню, окна, элементы управления, триггеры, срабатывающие при определенных действиях пользователя, и процедуры, написанные на PL/SQL. Процедуры могут определяться и быть доступными как внутри одной формы, так и группироваться в библиотеки процедур, используемые несколькими формами.

Report Builder - это интегрированная среда разработки отчетов, позволяющая при помощи удобных мастеров строить практически любые отчеты (табличные, главный-подчиненный и др.), с использованием различных текстовых и графических объектов и процедур PL/SQL. С помощью шлюзов можно строить отчеты из данных, находящихся в базах данных других производителей (например, ОВ2).

Graphics Builder - средство визуализации данных БД Oracle, поддерживает языки SQL и PL/SQL, импорт и экспорт данных и графики из различных источников.

Procedure Builder - позволяет создавать и отлаживать процедуры на языке PL/SQL.

Project Builder - позволяет объединить в едином проекте все средства Oracle Developer (Form Builder, Report Builder. Graphics Builder, Procedure Builder и др.). Он содержит информацию о всех файлах, относящихся к одному проекту и позволяет группе разработчиков скоординировано работать над проектом. Для редактирования файла формы Project Builder вызовет Form Builder, для файла отчета - Report Builder.

Все компоненты (Form Builder, Report Builder, Graphics Builder и др.) полностью интегрированы, и могут передавать и получать данные друг - друга. Все файлы, входящие в проект, компилируются совместно.

К другим инструментам разработчика можно отнести Oracle Book - инструмент создания электронной гипертекстовой документации, которая может вызываться из приложений. Созданные с помощью Oracle Book документы могут находиться в базе данных или в файловой системе, и содержать, помимо текста и графики, видео- и аудио- данные. Oracle Book автоматически конвертирует файлы в более чем0 форматах текстовых процессоров (MS Word, WordPerfect и др.), при этом сохраняются шрифты, цвета и выравнивание. Инструмент Oracle Glue ("клей") позволяет включать внешние прикладные программы (например, Excel) в среду разработки Oracle. Доступ к базе данных Oracle из программ на других языках программирования возможен либо с использованием препроцессоров встроенного SQL (Oracle Precompilers), либо через ODBC (или JDBC), либо через интерфейс вызовов функций Oracle (Oracle Саll Interface - OCI).

3.2.3 Структура базы данных Oracle.

В базе данных Oracle все таблицы хранятся в единой базе данных, причем таблицы, представления, индексы и др. объекты БД разных пользователей организованы по различным табличным пространствам (tabIespace). При создании объекта базы данных (таблица, представление, индекс и т.д.) внутри табличного пространства, ему выделяется некоторая область - сегмент. При увеличении объекта размер сегмента может увеличиваться на заданный размер, называемый экстентом (extents). Каждый сегмент может состоять из одного или из нескольких экстентов. Каждое табличное пространство может содержать следующие сегменты:

- сегменты данных (data segments);

- сегменты индексов (index segments);

- сегменты отката (roHback segments);

- временные сегменты (temporary segments).

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