Файл: Теория баз данных в экономических системы.doc

Добавлен: 15.11.2018

Просмотров: 2781

Скачиваний: 8

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

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 автоматически конвертирует файлы в более чем 80 форматах текстовых процессоров (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) используются для хранения первоначального состояния данных, изменяемых при транзакциях. Они позволяют в любой точке транзакции выполнить откат транзакции ­возврат к первоначальному состоянию. В начале транзакции и в каждой контрольной точке текущее состояние данных копируется в сегмент отката. После завершения транзакции соответствующий элемент сегмента отката становится недействительным. Все изменения данных, выполняемые в рамках транзакции, сохраняются в специальных блоках кэш-буфера и пере носятся в базу данных только при завершении транзакции.

При инсталляции Oracle по умолчанию создается табличное пространство SYSTEM, в котором размещаются служебные таблицы (структура базы данных схематично приведена на рис. 21). Также, для улучшения производительности, сегменты отката и временные сегменты выделяются в отдельные табличные пространства ROLLBACK (сегменты отката) и ТЕМР (временные сегменты).






Рис. 21 Физическая структура базы данных Oracle


3.2.4 Основные объекты и термины базы данных.


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

- таблицы;

- индексы;

- кластеры;

- представления (виды);

- снимки - snapshots, журналы реnликаций;

- связи базы данных (содержат информацию о подключении к удаленной базе данных);

- последовательности;

- синонимы;

- пакеты, хранимые процедуры, функции, триггеры;

- библиотеки внешних процедур.

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

К объектам, не принадлежащим схеме, но хранимым в базе данных, относятся:

- роли;

- каталоги;

- профили;

- пользователи;

- сегменты отката;

- табличные пространства.

Таблицы.

Таблицы содержат данные и состоят из столбцов и строк. Для ссылки на строку таблицы можно использо­вать псевдостолбец ROWID, формируемый Oracle, который содержит уникальный адрес каждой строки. Определить значения ROWID для строк таблицы можно выполнением инструкции SELECT. Использование ROWID для поиска или изменения строки является самым быстрым способом доступа к строке.

Индексы.

Индексы создаются на базе таблиц для ускорения поиска и чтения данных. Если строки таблицы не упорядочены, то значения индекса, созданного по одному или нескольким столбцам, упорядочены. Это позволяет быстрее производить поиск данных по индексу, избегая полного перебора всех строк. После нахождения нужного значения в индексе, искомая строка определяется по значению ROWID строки, хра­нимому в индексе. Индексы также служат для обеспечения целостности данных и позволяют гарантировать их уникальность.

Кластеры.

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

Представления (виды).

Представления (виды, view) - это логическая таблица, получаемая из других таблиц или представлений. Иногда говорят, что вид - это сохраняемый запрос, результатом которого является таблица. Вид позволяет:


- ограничивать доступ к таблице выборкой только ее отдельных столбцов/строк;

- объединять несколько таблиц в одну структуру;

Снимки.

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

· использовать копии таблиц и представлений с удаленных серверов баз данных, доступ к которым является ненадежным или может быть прерван;

· получить более быстрый доступ к данным, расположенным в снимке, чем к их оригиналу на удаленном сервере.

Применение снимков имеет ряд ограничений:

· невозможность изменения удаленных данных, используемых в снимке, на локальном компьютере, так как снимок - это запрос с режимом доступа только для чтения;

· для автоматического обновления снимка требуется соединение с удаленным сервером;

· снимки не могут содержать столбцов типа LONG (большие объекты).

· в снимке нельзя использовать таблицы или представления, принадлежащие пользователю SYS. Процесс синхронизации в распределенной базе данных снимков и таблиц (представлений), на основе которых они созданы, называется репликацией.

Последовательности.

Последовательность (sequence) - это объект базы данных, аналогичный объекту "Счетчик" СУБД MS Access. Каждое следующее или текущее значение последовательности, с учетом заданного шага приращения, получается, используя псевдостолбцы NEXTVAL или CURVAL. Как правило, последовательности создаются для формирования значений столбца, который используется как первичный ключ.

Синонимы.

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

Пакеты, хранимые процедуры, функции, триггеры.

Триггер - это блок инструкций PL/SQL, связанный с определенной таблицей и автоматически запускаемый Oracle при попытке выполнить один из следующих SQL-операторов: DELETE, INSERT или UPDAТЕ. Хранимые процедуры/функции - это программы на PL/SQL, хранимые в самой базе данных и выполняющие определенные действия над ней. Хранимые процедуры могут использоваться наравне с инструкциями SQL, при работе с данной конкретной базой данных, а хранимые функции могут также использоваться в самих инструкциях SQL, в условиях отбора. Возможен вызов одной хранимой процедуры/функции из другой, или вызов хранимой процедуры из триггера.

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


· более удобное управление полномочиями;

· возможность изменения объектов пакета без изменения зависимых объектов схемы;

· использование глобальных переменных и курсоров всеми процедурами и функциями пакета;

· возможность перегрузки (overloading) процедур и функций, имеющих одинаковые имена, но разные списки аргументов (по количеству и/или по типу).

Словарь данных.

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

Распределенные транзакции.

Сервер Oracle позволяет выполнять распределенные транзакции, или транзакции, которые изменяют данные в нескольких базах данных. Для завершения распределенной транзакции достаточно выполнить оператор COMMIТ, как и для обычной транзакции. После этого каждый компонент распределенной транзакции завершается на каждой включенной в транзакцию базе данных. При возникновении сбоя в сети или на одной из машин во время процесса завершения транзакции состояние такой транзакции становится неопределенно. Говорят, что распределенная транзакция находится в сомнительном состоянии (in-doubi). После консультаций с администраторами других баз данных, вовлеченных в транзакцию, можно выполнить принудительное завершение или откат транзакции на отдельной локальной базе данных. Для принудительного отката транзакции используется оператор COMMIТ с фразой FORCE.






3.3 СУБД Progress.

3.3.1 Архитектура СУБД Progress.

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



Рис. 21 Архитектура СУБД Progress


Приложения Progress могут работать с данными из базы данных Progress, любой базы данных, для которой есть Progress DataServer или их комбинации, причем тип источника данных определяется только на этапе инсталляции и не требует изменений в приложении. Для доступа к своей базе данных Progress предоставляет ODBC Driver.

DataServer - шлюз нижнего уровня для доступа к другим источникам данных, в том числе и к распределенным.

При работе приложения через DataServer можно использовать специфические для конкретного сервера СУБД возможности, синтаксис и команды (например, использовать преимущества хранимых процедур Oracle, синтаксис PL-SQL, интерфейс SQL*Net) и/или расширять функциональность, используя специфические средства Progress, например триггеры.


Собственный сервер баз данных Progress.


На рис. 22 показана структура собственного сервера баз данных Progress в общем случае.




Рис. 22 Сервер СУБД Progress.


3.3.2 Основные компоненты СУБД Progress.


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

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

Progress Монитор - утилита, показывающая производительность и полезную информацию о статусе базы данных и активности.

Progress Watchdog - утилита, определяющая некорректно завершенные процессы и разблокирующая записи базы данных, структуры в разделяемой памяти и т. д.

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

APWs (Asynchronous page writers) постоянно записывают измененные блоки базы данных на диск.

BIWs (Before-image writers) постоянно записывают на диск заполненные буферы журнала активных транзакций, служащего для отката базы назад в случае системных сбоев.

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

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

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

Самообслуживающийся клиент - многопользовательская Progress-сессия, запущенная на той же машине, что и брокер. Самообслуживающиеся клиенты работают с базой напрямую через разделяемую память. В случае, когда клиент и сервер функционируют на одном компьютере, Progress позволяет объединить их функции в одном процессе в терминах операционной системы, что сокращает накладные расходы по производительности. Высокая производительность сервера обеспечивается также большим кэшем базы, до 500 000 блоков базы.