Реляционная субд. Базы данных

30.07.2019 Приложения

Этой статьей мы начинаем новый цикл, посвященный базам данных, современным технологиям доступа к данным и их обработки. На протяжении данного цикла мы планируем рассмотреть наиболее популярные настольные и серверные системы управления базами данных (СУБД), механизмы доступа к данным (OLD DB, ADO, BDE и др.) и утилиты для работы с базами данных (средства администрирования, генераторы отчетов, средства графического представления данных). Кроме того, мы планируем уделить внимание методам публикации данных в Internet, а также таким популярным способам обработки и хранения данных, как OLAP (On-Line Analytical Processing), и созданию хранилищ данных (Data Warehousing).

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

Основные концепции реляционных баз данных

Начнем с основных понятий СУБД и краткого введения в теорию реляционных баз данных - наиболее популярного сейчас способа хранения данных.

Реляционная модель данных

Реляционная модель данных была предложена Е.Ф.Коддом (Dr. E.F.Codd), известным исследователем в области баз данных, в 1969 году, когда он был сотрудником фирмы IBM. Впервые основные концепции этой модели были опубликованы в 1970 г. «A Relational Model of Data for Large Shared Data Banks», CACM, 1970, 13 N 6).

Реляционная база данных представляет собой хранилище данных, содержащее набор двухмерных таблиц. Набор средств для управления подобным хранилищем называется реляционной системой управления базами данных (РСУБД) . РСУБД может содержать утилиты, приложения, сервисы, библиотеки, средства создания приложений и другие компоненты.

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

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

Данные в таблицах удовлетворяют следующим принципам:

  1. Каждое значение, содержащееся на пересечении строки и колонки, должно быть атомарным (то есть не расчленяемым на несколько значений).
  2. Значения данных в одной и той же колонке должны принадлежать к одному и тому же типу, доступному для использования в данной СУБД.
  3. Каждая запись в таблице уникальна, то есть в таблице не существует двух записей с полностью совпадающим набором значений ее полей.
  4. Каждое поле имеет уникальное имя.
  5. Последовательность полей в таблице несущественна.
  6. Последовательность записей также несущественна.

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

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

Итак, теперь мы знаем, что реляционные базы данных состоят из таблиц. Для иллюстрации некоторых теоретических положений и для создания примеров нам необходимо выбрать какую-нибудь базу данных. Чтобы не «изобретать колесо», мы воспользуемся базой данных NorthWind, входящей в комплект поставки Microsoft SQL Server и Microsoft Access.

Теперь давайте рассмотрим связи между таблицами.

Ключи и связи

Давайте взглянем на фрагмент таблицы Customers (клиенты) из базы данных NorthWind (мы удалили из нее поля, несущественные для иллюстрации связей между таблицами).

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

Если первичный ключ состоит из более чем одной колонки, он называется составным первичным ключом (composite primary key ).

Типичная база данных обычно состоит из нескольких связанных таблиц. Фрагмент таблицы Orders (заказы).

Поле CustomerID этой таблицы содержит идентификатор клиента, разместившего данный заказ. Если нам нужно узнать, как называется компания, разместившая заказ, мы должны поискать это же значение идентификатора клиента в поле CustomerID таблицы Customers и в найденной строке прочесть значение поля CompanyName. Иными словами, нам нужно связать две таблицы, Customers и Orders, по полю CustomerID. Колонка, указывающая на запись в другой таблице, связанную с данной записью, называется внешним ключом (foreign key ). Как видим, в случае таблицы Orders внешним ключом является колонка CustomerID (рис. 1).

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

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

Если каждый клиент в таблице Customers может разместить только один заказ, говорят, что эти две таблицы связаны соотношением один-к-одному (one-to-one relationship ). Если же каждый клиент в таблице Customers может разместить ноль, один или много заказов, говорят, что эти две таблицы связаны соотношением один-ко-многим (one-to-many relationship ) или соотношением master-detail . Подобные соотношения между таблицами используются наиболее часто. В этом случае таблица, содержащая внешний ключ, называется detail-таблицей , а таблица, содержащая первичный ключ, определяющий возможные значения внешнего ключа, называется master-таблицей .

Группа связанных таблиц называется схемой базы данных (database schema ). Информация о таблицах, их колонках (имена, тип данных, длина поля), первичных и внешних ключах, а также иных объектах базы данных, называется метаданными (metadata ).

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

Ссылочная целостность

Выше мы уже говорили о том, что первичный ключ любой таблицы должен содержать уникальные непустые значения для данной таблицы. Это утверждение является одним из правил ссылочной целостности (referential integrity ). Некоторые (но далеко не все) СУБД могут контролировать уникальность первичных ключей. Если СУБД контролирует уникальность первичных ключей, то при попытке присвоить первичному ключу значение, уже имеющееся в другой записи, СУБД сгенерирует диагностическое сообщение, обычно содержащее словосочетание primary key violation . Это сообщение в дальнейшем может быть передано в приложение, с помощью которого конечный пользователь манипулирует данными.

Если две таблицы связаны соотношением master-detail , внешний ключ detail- таблицы должен содержать только те значения, которые уже имеются среди значений первичного ключа master- таблицы. Если корректность значений внешних ключей не контролируется СУБД, можно говорить о нарушении ссылочной целостности. В этом случае, если мы удалим из таблицы Customers запись, имеющую хотя бы одну связанную с ней detail- запись в таблице Orders, это приведет к тому, что в таблице Orders окажутся записи о заказах, размещенных неизвестно кем. Если же СУБД контролирует корректность значений внешних ключей, то при попытке присвоить внешнему ключу значение, отсутствующее среди значений первичных ключей master-таблицы, либо при удалении или модификации записей master-таблицы, приводящих к нарушению ссылочной целостности, СУБД сгенерирует диагностическое сообщение, обычно содержащее словосочетание foreign key violation , которое в дальнейшем может быть передано в пользовательское приложение.

Большинство современных СУБД, например Microsoft Access 97, Microsoft Access 2000 и Microsoft SQL Server 7.0, способны контролировать соблюдение правил ссылочной целостности, если таковые описаны в базе данных. Для этой цели подобные СУБД используют различные объекты баз данных (мы обсудим их чуть позже). В этом случае все попытки нарушить правила ссылочной целостности будут подавляться с одновременной генерацией диагностических сообщений или исключений (database exceptions ).

Введение в нормализацию данных

Процесс проектирования данных представляет собой определение метаданных в соответствии с задачами информационной системы, в которой будет использоваться будущая база данных. Подробности о том, как производить анализ предметной области, создавать диаграммы «сущность-связь» (ERD - entity-relationship diagrams ) и модели данных, выходят за рамки данного цикла. Интересующиеся этими вопросами могут обратиться, например, к книге К.Дж.Дейта «Введение в системы баз данных» («Диалектика», Киев, 1998).

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

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

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

Первая нормальная форма

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

Чтобы таблица соответствовала первой нормальной форме, все значения ее полей должны быть атомарными, и

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

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

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

Некоторые из этих проблем могут быть решены путем приведения базы данных ко второй нормальной форме .

Вторая нормальная форма

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

Таблица OrderedProducts находится в первой, но не во второй нормальной форме, так как поля CustomerID, Address и OrderDate зависят только от поля OrderID, являющегося частью составного первичного ключа (OrderID, ProductID).

Чтобы перейти от первой нормальной формы ко второй, нужно выполнить следующие шаги:

  1. Определить, на какие части можно разбить первичный ключ, так чтобы некоторые из неключевых полей зависели от одной из этих частей (эти части не обязаны состоять из одной колонки! ).
  2. Создать новую таблицу для каждой такой части ключа и группы зависящих от нее полей и переместить их в эту таблицу. Часть бывшего первичного ключа станет при этом первичным ключом новой таблицы.
  3. Удалить из исходной таблицы поля, перемещенные в другие таблицы, кроме тех их них, которые станут внешними ключами.

Например, для приведения таблицы OrderedProducts ко второй нормальной форме, нужно переместить поля CustomerID, Address и OrderDate в новую таблицу (назовем ее OrdersInfo), при этом поле OrderID станет первичным ключом новой таблицы (рис. 3).

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

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

Устранить эти аномалии можно путем перехода к третьей нормальной форме .

Третья нормальная форма

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

Таблица OrderDetails уже находится в третьей нормальной форме. Неключевое поле Quantity полностью зависит от составного первичного ключа (OrderID, ProductID). Однако таблица OrdersInfo в третьей нормальной форме не находится, так как содержит зависимость между неключевыми полями (она называется транзитивной зависимостью - transitivedependency ) - поле Address зависит от поля CustomerID.

Чтобы перейти от второй нормальной формы к третьей, нужно выполнить следующие шаги:

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

Для приведения таблицы OrdersInfo к третьей нормальной форме создадим новую таблицу Customers и переместим в нее поля CustomerID и Address. Поле Address из исходной таблицы удалим, а поле CustomerID оставим - теперь это внешний ключ (рис. 4).

Итак, после приведения исходной таблицы к третьей нормальной форме таблиц стало три - Customers, Orders и OrderDetails.

Преимущества нормализации

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

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

Изменение адреса клиента или даты регистрации заказа теперь требует изменения только одной записи.

Как проектируют базы данных

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

Еще один способ создать таблицы, ключи и связи в базе данных - это написание так называемого DDL-сценария (DDL - Data Definition Language; о нем мы поговорим чуть позже).

Наконец, есть еще один способ, который становится все более и более популярным, - это использование специальных средств, называемых CASE-средствами (CASE означает Computer-Aided System Engineering). Существует несколько типов CASE-средств, но для создания баз данных чаще всего используются инструменты для создания диаграмм «сущность-связь» (entity-relationship diagrams, E/R diagrams). С помощью этих инструментов создается так называемая логическая модель данных, описывающая факты и объекты, подлежащие регистрации в ней (в таких моделях прототипы таблиц называются сущностями (entities), а поля - их атрибутами (attributes). После установления связей между сущностями, определения атрибутов и проведения нормализации, создается так называемая физическая модель данных для конкретной СУБД, в которой определяются все таблицы, поля и другие объекты базы данных. После этого можно сгенерировать либо саму базу данных, либо DDL-сценарий для ее создания.

Список наиболее популярных в настоящее время CASE-средств .

Таблицы и поля

Таблицы поддерживаются всеми реляционными СУБД, и в их полях могут храниться данные разных типов. Наиболее часто встречающиеся типы данных .

Индексы

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

Мы уже знаем, что записи в реляционных таблицах неупорядочены. Тем не менее любая запись в конкретный момент времени имеет вполне определенное физическое местоположение в файле базы данных, хотя оно и может изменяться в процессе редактирования данных или в результате «внутренней деятельности» самой СУБД.

Предположим, в какой-то момент времени записи в таблице Customers хранились в таком порядке .

Допустим, нам нужно получить эти данные упорядоченными по полю CustomerID. Опустив технические детали, мы можем сказать, что индекс по этому полю - это последовательность номеров записей, в соответствии с которой их нужно выводить, то есть:

1,6,4,2,5,3

Если же мы хотим упорядочить записи по полю Address, последовательность номеров записей будет другой:

5,4,1,6,2,3

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

Если нам нужно найти данные о клиентах, у которых CustomerID начинается с символов «BO», мы можем найти с помощью индекса местоположение этих записей (в данном случае 2 и 5 (очевидно, что в индексе номера этих записей идут подряд), а затем прочесть именно вторую и пятую записи, вместо того чтобы просматривать всю таблицу. Таким образом, использование индексов снижает время выборки данных.

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

Ограничения и правила

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

Помимо ограничений, связанных с установкой диапазона изменения данных, существуют также ссылочные ограничения (referential constraints, например связь master-detail между таблицами Customers и Orders может быть реализована как ограничение, содержащее требование, чтобы значение поля CustomerId (внешний ключ) в таблице Orders было равно одному из уже имеющихся значений поля CustomerId таблицы Customers.

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

Представления

Практически все реляционные СУБД поддерживают представления (views). Этот объект представляет собой виртуальную таблицу, предоставляющую данные из одной или нескольких реальных таблиц. Реально он не содержит никаких данных, а только описывает их источник.

Нередко такие объекты создаются для хранения в базах данных сложных запросов. Фактически view - это хранимый запрос.

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

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

Триггеры и хранимые процедуры

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

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

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

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

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

Объекты для генерации первичных ключей

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

В разных СУБД для генерации ключей используются разные объекты. Некоторые из таких объектов хранят целое число и правила, по которым генерируется следующее за ним значение, -обычно это выполняется с помощью триггеров. Такие объекты поддерживаются, например, в Oracle (в этом случае они называются последовательностями - sequences) и в IB Database (в этом случае они называются генераторами - generators).

Некоторые СУБД поддерживают специальные типы полей для первичных ключей. При добавлении записей такие поля заполняются автоматически последовательными значениями (обычно целыми). В случае Microsoft Access и Microsoft SQL Server такие поля называются Identity fields, а в случае Corel Paradox - автоинкрементными полями (Autoincrement fields).

Пользователи и роли

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

В настоящее время более популярен другой способ защиты данных - создание списка пользователей (users) с именами (user names) и паролями (passwords). В этом случае любой объект базы данных принадлежит конкретному пользователю, и этот пользователь предоставляет другим пользователям разрешение на чтение или модификацию данных из этого объекта либо на модификацию самого объекта. Этот способ применяется во всех серверных и некоторых настольных СУБД (например, Microsoft Access).

Некоторые СУБД, в основном серверные, поддерживают не только список пользователей, но и роли (roles). Роль - это набор привилегий. Если конкретный пользователь получает одну или несколько ролей, а вместе с ними - и все привилегии, определенные для данной роли.

Запросы к базам данных

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

Один из способов манипуляции данными называется «queries by example» (QBE) - запрос по образцу. QBE представляет собой средство для визуального связывания таблиц и выбора полей, которые следует отобразить в результате запроса.

В большинстве СУБД (за исключением некоторых настольных) визуальное построение запроса с помощью QBE приводит к генерации текста запроса с помощью специального языка запросов SQL (Structured Query Language). Можно также написать запрос непосредственно на языке SQL.

Курсоры

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

Большинство современных СУБД поддерживают так называемые двунаправленные курсоры (bi-directional cursors), позволяющие перемещаться по результирующему набору данных как вперед, так и назад. Однако некоторые СУБД поддерживают только однонаправленные курсоры, позволяющие перемещаться по набору данных только вперед.

Язык SQL

Structured Query Language (SQL) - это непроцедурный язык, используемый для формулировки запросов к базам данных в большинстве современных СУБД и в настоящий момент являющийся индустриальным стандартом.

Непроцедурность языка означает, что на нем можно указать, что нужно сделать с базой данных, но нельзя описать алгоритм этого процесса. Все алгоритмы обработки SQL-запросов генерируются самой СУБД и не зависят от пользователя. Язык SQL состоит из набора операторов, которые можно разделить на несколько категорий:

  • Data Definition Language (DDL) - язык определения данных, позволяющий создавать, удалять и изменять объекты в базах данных
  • Data Manipulation Language (DML) - язык управления данными, позволяющий модифицировать, добавлять и удалять данные в имеющихся объектах базы данных
  • Data Control Languages (DCL) - язык, используемый для управления пользовательскими привилегиями
  • Transaction Control Language (TCL) - язык для управления изменениями, сделанными группами операторов
  • Cursor Control Language (CCL) - операторы для определения курсора, подготовки операторов SQL к выполнению и некоторых других операций.

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

Функции, определяемые пользователем

Некоторые СУБД позволяют использовать функции, определяемые пользователем (UDF-User-Defined Functions). Эти функции, как правило, хранятся во внешних библиотеках и должны быть зарегистрированы в базе данных, после чего их можно использовать в запросах, триггерах и хранимых процедурах.

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

Транзакции

Транзакция (Transaction) - это группа операций над данными, которые либо выполняются все вместе, либо все вместе отменяются.

Завершение (Commit) транзакции означает, что все операции, входящие в состав транзакции, успешно завершены, и результат их работы сохранен в базе данных.

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

Транзакция может состоять из нескольких вложенных транзакций.

Некоторые СУБД поддерживают двухфазное завершение транзакций (two-phase commit) - процесс, позволяющий осуществлять транзакции над несколькими базами данных, относящихся к одной и той же СУБД.

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

Заключение

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

В следующей статье мы познакомим наших читателей с наиболее популярными настольными СУБД: dBase, Paradox, Access, Visual FoxPro, Works и обсудим их основные возможности.

КомпьютерПресс 3"2000

Функции СУБД.

Функции СУБД бывают высокого и низкого уровня.

Функции высокого уровня:

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

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

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

Функции низкого уровня:

1. Управление данными во внешней памяти;

2. Управление буферами оперативной памяти;

3. Управление транзакциями;

4. Введение журнала изменений в БД;

5. Обеспечение целостности и безопасности БД.

Транзакцией называется неделимая последовательность операций, которая отслеживается СУБД от начала и до завершения, и в которой при невыполнении одной операции отменяется вся последовательность.

Журнал СУБД – особая БД или часть основной БД, недоступная пользователю и используемая для записи информации обо всех изменениях базы данных.

Введение журнала СУБД предназначено для обеспечения надёжности хранения в базе данных при наличии аппаратных сбоев и отказов, а так же ошибок в программном обеспечении.

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

Классификация СУБД.

СУБД можно классифицировать:

1. По видам программ:

a. Серверы БД (например, MS SQL Server, InterBase (Borland)) – предназначены для организации центров обработки данных в сетях ЭВМ и реализуют функции управления базами данных, запрашиваемые клиентскими программами с помощью операторов SQL (т.е. программы, которые отвечают на запросы);

b. Клиенты БД – программы, которые запрашивают данные. В качестве клиентских программ могут использоваться ПФСУБД, электронные таблицы, текстовые процессоры, программы электронной почты;

c. Полнофункциональные БД (MS Access, MS Fox Pro) – программа, имеющая развитый интерфейс, позволяющий создавать и модифицировать таблицы, вводить данные, создавать и форматировать запросы, разрабатывать отчёты и выводить их на печать.

2. По модели данных СУБД (как и БД):

a. Иерархические – основаны на древовидной структуре хранения информации и напоминают файловую систему компьютера; основной недостаток - невозможность реализовать отношение многие - ко – многим;

b. Сетевые – которые пришли на смену иерархическим и просуществовали недолго т. к. основной недостаток – сложность разработки серьёзных приложений. Основное отличие сетевой от иерархической в том, что в иерархической структура «запись – потомок» имеет только одного предка, а в сетевой потомок может иметь любое количество предков;

c. Реляционные – данные которых размещены в таблицах, между которыми существуют определённые связи;

d. Объектно – ориентированные – в них данные хранятся в виде объектов и основное преимущество при работе с ними в том, что к ним можно применить объектно – ориентированный подход;

e. Гибридные, т. е. объектно – реляционные – совмещают в себе возможности реляционных и объектно – ориентированных баз данных. Примером такой базы данных является Oracle (ранее она была реляционной).

3. В зависимости от расположения отдельных частей СУБД различают:

a. локальные – все части которой располагаются на одном компьютере;

b. сетевые.

К сетевым относятся:

- с организацией файл – сервер ;

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

- с организацией клиент – сервер;

Сервер БД принимает запрос от клиента, отыскивает в данных нужную запись и передаёт её клиенту. Запрос к серверу формируется на языке структурированных запросов SQL, поэтому серверы БД называют SQL – серверами.

- распределённые СУБД содержат несколько десятков и сотен серверов, размещённых на значительной территории.

Основные положения реляционной модели БД.

Реляционной базой данных называется такая база данных, в которой все данные организованы в виде таблиц, а все операции над этими данными сводятся к операциям над таблицами.

Особенности реляционных баз данных:

1. Данные хранятся в таблицах, состоящих из столбцов и строк;

2. На пересечении каждого столбца и строки находится одно значение;

3. У каждого столбца - поля есть своё имя, которое служит его названием - атрибут, и все значения в одном столбце, имеют один тип;

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

Терминология реляционной базы данных:

Элемент реляционной БД Форма представления
1. База данных Набор таблиц
2. Схема базы данных Набор заголовков таблиц
3. Отношение Таблица
4. Схема отношения Строка заголовков столбцов таблицы
5. Сущность Описание свойств объекта
6. Атрибут Заголовок столбца
7. Домен Множество допустимых значений атрибута
8. Первичный ключ Уникальный идентификатор, однозначно определяющий каждую запись в таблице
9. Тип данных Тип значений элементов в таблице
10. Кортеж Строка (запись)
11. Кардинальность Количество строк в таблице
12. Степень отношения Количество полей
13. Тело отношения Множество кортежей отношения

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

Существуют следующие виды связей между таблицами:

1. Связь вида 1:1 (один к одному) означает, что каждой записи в основной таблице соответствует одна запись в дополнительной таблице и, наоборот, каждой записи в дополнительной таблице соответствует одна запись в основной таблице.

2. Связь вида 1:М (один ко многим) означает, что каждой записи в основной таблице соответствует несколько записей в дополнительной таблице и, наоборот, каждой записи в дополнительной таблице соответствует только одна запись в основной таблице.

3. Связь вида М:1 (многим к одному) означает, что одной или нескольким записям в основной таблице соответствует только одна запись в дополнительной таблице.

4. Связь вида М:М (многим ко многим) – это, когда нескольким записям основной таблицы соответствует несколько записей дополнительной и наоборот.

5. Основные компоненты MS Access.

Основными компонентами (объектами) MS Access являются:

1. Таблицы;

3. Формы;

4. Отчёты;

5. Макросы:

Модули.

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

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

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

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

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

Модуль – набор описаний, инструкций и процедур, сохранённых под одним именем. В MS Access имеется три вида модулей:модуль формы, отчёта и общий модуль. Модули формы и отчётов содержат локальную программу для форм и отчётов.

6. Таблицы в MS Access.

В MS Access существуют следующие методы создания таблиц:

1. Режим таблицы;

2. Конструктор;

3. Мастер таблиц;

4. Импорт таблиц;

5. Связь с таблицами.

В режиме таблицы данные вводятся в пустую таблицу. Для ввода данных предоставляется таблица с 30 полями. После её сохранения MS Access сам решает, какой тип данных присвоить каждому полю.

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

Для определения поля в режиме Конструктор задаются:

1. Имя поля , которое в каждой таблице должно иметь уникальное имя, являющееся комбинацией букв, цифр, пробелов и специальных символов, за исключением «.!” “ ». Максимальная длина имени 64 символа.

2. Тип данных определяет вид и диапазон допустимых значений, а также объём памяти, выделенный для этого поля.

Типы данных MS Access

Тип данных Описание
Текстовый Текст и числа, например, имена и адреса, номера телефонов, почтовые индексы (до 255 символов).
Поле Memo Длинный текст и числа, например комментарии и пояснения (до 64000 символов).
Числовой Общий тип данных для числовых данных, допускающих проведение математических расчётов, за исключением денежных расчётов.
Дата / время Значения даты и времени. Пользователь может выбирать стандартные формы или создавать специальный формат.
Денежный Денежные значения. Для денежных расчётов не рекомендуется использовать числовые типы данных, т.к. они могут округляться при расчётах. Значения типа «денежный» всегда выводятся с указанным числом десятичных знаков после запятой.
Счётчик Автоматически выставляющиеся последовательные номера. Нумерация начинается с 1. Поле счётчика удобно для создания ключа. Это поле является совместимым с полем числового типа, для которого в свойстве Размер указано значение «Длинное целое».
Логический Значения «Да / Нет», «Истинно / Ложь», «Вкл / Выкл», одно из двух возможных значений.
Поле объекта OLE Объекты, созданные в других программах, поддерживающие протокол OLE.

3. Наиболее важные свойства полей:

- Размер поля задаёт максимальный размер данных, сохраняемых в поле.

- Формат поля является форматом отображения заданного типа данных и задаёт правила представления данных при выводе их на экран или печать.

- Подпись поля задаёт текст, который выводится в таблицах, формах, отчётах.

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

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

Тип элемента управления – свойство, которое задаётся на закладке Подстановка в окне конструктора таблиц. Это свойство определяет, будет ли отображаться поле в таблице и в какой форме – в виде поля или поля со списком.

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

Для определения ключа выделяются поля, составляющие ключ, и на панели инструментов нажимается кнопка ключевое поле или выполняется команда Правка / ключевое поле .


©2015-2019 сайт
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-02-16

Структура реляционной БД.

Типы БД.

Основные возможности СУБД.

Понятие базы данных, СУБД.

План

ТЕРМИНЫ : база данных, система управления базами данных (СУБД),

реляционная БД, запись БД, поле БД, ключевое поле БД, таблица БД, запрос БД, форма БД, отчёт БД, макрос БД, модуль БД.

Одной из основных сфер использования компьютера в современном информационном обществе является хранение и обработка больших объёмов информации.

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

Далее на примере одной из самых распространенных систем управления базами данных - Microsoft Access входит в состав популярного пакета Microsoft Office - мы познакомимся с основными типами данных, способами создания баз данных и с приемами работы с базами данных.

База данных - организованная совокупность данных, предназначенная для длительного хранения во внешней памяти ЭВМ и постоянного применения. Для хранения БД может использоваться как один компьютер, так и множество взаимосвязанных компьютеров.

Если различные части одной базы данных хранятся на множестве компьютеров, объединенных между собой сетью, то такая БД называется распределенной базой данных.

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

В настоящее время наибольше распространение получили СУБД Microsoft Access, FoxPro , dBase . СУБД делятся по способу организации баз данных на сетевые, иерархические и реляционные СУБД.

Основные возможности СУБД:

ü Обновление, пополнение и расширение БД.

ü Высокая надёжность хранения информации.

ü Вывод полной и достоверной информации на запросы.

ü Средства защиты информации в БД.

БД бывают фактографическими и документальными .

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

Для хранения БД может использоваться как один компьютер, так и множество взаимосвязанных компьютеров.

Если различные части одной БД хранятся на множестве компьютеров, объединённых между собой сетью, то такая БД называется распределённой базой данных .

Известны три основных типа организации данных в БД и связей между ними:

· иерархический (в виде дерева),

· сетевой,

· реляционной .

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

Пример : иерархическую БД образует каталог файлов, хранимый на диске.

Такой же БД является родовое генеалогическое древо.

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

Реляционными БД (от англ. relation – «отношение») называются БД, содержащие информацию в виде прямоугольных таблиц. Согласно этому подходу, такая таблица называется отношением. Каждая строка таблицы содержит информацию об одном отдельном объекте описываемой в БД предметной области, а каждый столбец – определённые характеристики (свойства, атрибуты) этих объектов. Реляционная база данных, по сути, представляет собой двумерную таблицу . В реляционной БД используются четыре основных типов полей:

· Числовой,

· Символьный (слова, тексты, коды и т.д.),

· Дата (календарные даты в форме «день/месяц/год»),

· Логический (принимает два значения: «да» - «нет» или «истина» - «ложь»).

Окно базы данных содержит следующие элементы:

ü Кнопки : «СОЗДАТЬ» , «ОТКРЫТЬ» , «КОНСТРУКТОР» и т. д. Кнопки открывают объект в определенном окне или режиме.

ü Кнопки объектов . (Корешки выбора объектов, ярлычки.) «Таблица» , «Форма» и т. д. Кнопки объектов выводят список объектов, которые могут быть открыты или закрыты.

ü Список объектов. Выводит список объектов, выбираемых пользователем. В нашем варианте список пока пуст.

Основные объекты баз данных:

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

· Форма – это объект Microsoft Access, предназначенный, в основном, для ввода данных. В форме можно разместить элементы управления, применяемые для ввода, изображения и изменения данных в полях таблицы.

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

· Отчет – объект базы данных Microsoft Access, предназначенный для печати данных.

· Макросы – автоматизируют стандартные действия.

· Модули – автоматизируют сложные операции, которые нельзя описать макросами.

В данной главе выделим и характеризируем основные классы СУБД.

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

Более ранние СУБД такие как иерархические и сетевые имеют древовидную структуру и построены по принципу "Предок - потомок". Но такие системы уже отжили своё и применяются все реже.

На смену иерархическим и сетевым пришли реляционные СУБД.

Характеристика реляционных СУБД

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

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

Реляционный подход в построении СУБД имеет ряд достоинств Байдак А.Я., Булгаков А.А. Современные СУБД и их применение в энергетике [Электронный ресурс]. - Режим доступа: http: //masters. donntu.edu.ua/2010/etf/baydak/library/article2. htm. - Загл. с экрана:

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

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

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

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

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

Основной принцип реляционной модели - устранять повторяющиеся поля и группы с помощью процесса, который называется нормализацией. Плоские нормализованные таблицы универсальны, просты в понимании и теоретически достаточны для представления данных любой предметной области. Они хорошо подходят для приложений, связанных с хранением и отображением данных в традиционных отраслях, таких как банковские или учетные системы, но их применение в системах, основанных на более сложных структурах данных, часто является затруднительным. В основном, это связано с примитивностью механизмов хранения данных, лежащих в основе реляционной модели Никитин М. Закончилась ли эпоха реляционных СУБД? [Электронный ресурс]. - Режим доступа: http: //www.cnews.ru/reviews/free/marketBD/articles/articles2. shtml. - Загл. с экрана.

На сегодняшний день известные фирмы производители реляционных СУБД следующие - ORACLE, Informix, IBM (DB2), Sybase, Microsoft (MS SQL Server), Progress и другие. В своих продуктах производители СУБД ориентируются на работу на различных типах компьютеров (от майнфреймов до портативных) и на различных операционных системах (ОС). Также производители СУБД не обошли вниманием продукты, работающие на настольных компьютерах, такие как dBase, FoxPro, Access и им подобные. Данные СУБД предназначены для работы на РС и решают локальные задачи на одном РС или небольшой группе РС. Часто данные СУБД используются, как зеркальное отображения небольшой части общей корпоративной СУБД, для минимизации требуемых аппаратных и ресурсных затрат для решения небольших задач.

Различные СУБД работают под управлением разных ОС и аппаратной части. Наиболее известные среди таких ОС - UNIX, VAX, Solaris, Windows. В зависимости от объема хранения данных, количества пользователей, осуществляющих одновременный доступ к данным, сложности задач - используются различные СУБД на различных платформах. Например, СУБД Oracle на Unix, инсталлированная на многопроцессорный сервер позволяет решать задачи по обеспечению данными сотни тысяч пользователей Пономарева И.С. Системы управления базами данных [Электронный ресурс]. - Режим доступа: http: //mathmod. aspu.ru/images/File/Ponomareva/TM10_About%20BD. pdf. - С. 2.

В настоящее время наибольший интерес представляют СУБД ориентированные на операционную систему Windows использующие платформу Intel.

Основные функции СУБД Прикладное программное обеспечение ППО, пользователи Система управления базами данных Операционная система База данных Обеспечение доступа ППО к базе данных Управление базой данных «железо»

СУБД Программные составляющие СУБД включают в себя ядро и сервисные средства (утилиты). ØЯдро СУБД – это набор программных модулей, необходимый и достаточный для создания и поддержания БД, то есть универсальная часть, решающая стандартные задачи по информационному обслуживанию пользователей. ØСервисные программы предоставляют пользователям ряд дополнительных возможностей и услуг, зависящих от описываемой предметной области и потребностей конкретного пользователя. Системой управления базами данных называют программную систему, предназначенную для создания на ЭВМ общей базы данных для множества приложений, поддержания её в актуальном состоянии и обеспечения эффективного доступа пользователей к содержащимся в ней данным в рамках предоставленных им полномочий.

Классификация СУБД По степени универсальности СУБД делят на два класса: 1. СУБД общего назначения (СУБД ОН) 2. специализированные СУБД (Сп. СУБД). Специализированные СУБД создаются в тех случаях, когда ни одна из существующих СУБД общего назначения не может удовлетворительно решить задачи, стоящие перед разработчиками. Причин может быть несколько: не достигается требуемого быстродействия обработки данных; необходима работа СУБД в условиях жёстких аппаратных ограничений; требуется поддержка специфических функций обработки данных. Сп. СУБД предназначены для решения конкретной задачи, а приемлемые параметры этого решения достигаются следующим образом: 1. за счёт знания особенностей конкретной предметной области, 2. путём сокращения функциональной полноты системы.

Классификация СУБД По методам организации хранения и обработки данных СУБД делят на Ø Централизованные Ø Распределённые. Первые работают с БД, которая физически хранится в одном месте (на одном компьютере). Это не означает, что пользователь может работать с БД только за этим же компьютером: доступ может быть удалённым (в режиме клиент–сервер). Большинство централизованных СУБД перекладывает задачу организации удалённого доступа к данным на сетевое обеспечение, выполняя только свои стандартные функции, которые усложняются за счёт одновременности доступа многих пользователей к данным. По модели данных различают иерархические, сетевые, реляционные, объектно-реляционные и объектно-ориентированные СУБД.

Требования к реляционным СУБД (по Кодду) 1. 2. 3. Явное представление данных (The Information Rule). Информация должна быть представлена в виде данных, хранящихся в ячейках. Данные, хранящиеся в ячейках, должны быть атомарны. Порядок строк в реляционной таблице не должен влиять на смысл данных. Гарантированный доступ к данным (Guaranteed Access Rule). К каждому элементу данных должен быть гарантирован доступ с помощью комбинации имени таблицы, первичного ключа строки и имени столбца. Полная обработка неизвестных значений (Systematic Treatment of Null Values). Неизвестные значения (NULL), отличные от любого известного значения, должны поддерживаться для всех типов данных при выполнении любых операций.

Требования к реляционным СУБД (по Кодду) 4. 5. Доступ к словарю данных в терминах реляционной модели (Dynamic On-Line Catalog Based on the Relational Model). Словарь данных должен сохраняться в форме реляционных таблиц, и СУБД должна поддерживать доступ к нему при помощи стандартных языковых средств. Полнота подмножества языка (Comprehensive Data Sublanguage Rule). Система управления реляционными базами данных должна поддерживать единственный язык запросов, который позволяет выполнять все операции работы к данным: операции определения данных, операции манипулирования данными, управление доступом к данным, управление транзакциями.

Требования к реляционным СУБД (по Кодду) 6. 7. Поддержка обновляемых представлений (View Updating Rule). Обновляемое представление должно поддерживать все операции манипулирования данными, которые поддерживают реляционные таблицы: операции выборки, вставки, модификации и удаления данных. Наличие высокоуровневых операций управления данными (High-Level Insert, Update, and Delete). Операции вставки, модификации и удаления данных должны поддерживаться не только по отношению к одной строке реляционной таблицы, но по отношению к любому множеству строк.

Требования к реляционным СУБД (по Кодду) 8. Физическая независимость данных (Physical Data Independence). Приложения не должны зависеть от используемых способов хранения данных на носителях, от аппаратного обеспечения компьютеров, на которых находится реляционная база данных. 9. Логическая независимость данных (Logical Data Independence). Представление данных в приложении не должно зависеть от структуры реляционных таблиц.

Требования к реляционным СУБД (по Кодду) 10. Независимость контроля целостности (Integrity Independence). Вся информация, необходимая для поддержания целостности, должна находиться в словаре данных. СУБД должна выполнять проверку заданных ограничений целостности и автоматически поддерживать целостность данных. 11. Независимость от распределенности (Distribution Independence). База данных может быть распределенной, может находиться на нескольких компьютерах, и это не должно оказывать влияние на приложения. 12. Согласование языковых уровней (Non-Subversion Rule). Не должно быть иного средства доступа к данным, отличного от стандартного языка работы с данными. Если используется низкоуровневый язык доступа к данным, он не должен игнорировать правила безопасности и целостности, которые поддерживаются языком более высокого уровня.

Требования к составу и функциям СУБД 1. Хранение, извлечение и обновление данных. 2. Каталог (ССД), доступный конечным пользователям. Обычно в системном каталоге хранятся следующие сведения: имена, типы и размеры элементов данных; имена связей; накладываемые на данные ограничения поддержки целостности; имена пользователей, которым предоставлено право доступа к данным; внешняя, концептуальная и внутренняя схемы и отображения между ними; статистические данные, например частота транзакций и счетчики обращений к объектам базы данных.

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

Системный словарь данных Oracle Хранит всю информацию о структуре, информационных объектах и отношениях в конкретной базе данных. Словарь данных представляет собой набор таблиц и вспомогательных объектов (индексов, кластеров, синонимов, представлений, последовательностей), информация о которых также хранится в таблицах словаря. Логически словарь данных разделяется на: üбазовые таблицы; üпредставления базовых таблиц; üдинамические таблицы и их представления. Всего словарь данных включает более 100 базовых таблиц, которые расположены в табличном пространстве SYSTEM и нигде более. Их имена включают символ "$" (поэтому его не рекомендуется использовать в названиях небазовых объектов), например: AUD$ – таблица audit-информации; FILE$ – таблица файлов; USER$ – таблица пользователей; IND$ – таблица индексов; OBJ$ – таблица объектов; SEG$ – таблица сегментов; SYN$ – таблица синонимов; TAB$ – таблица таблиц; TS$ – таблица табличных областей; VIEW$ – таблица представлений.

Работа с системным словарём Для получения информации из словаря данных пользователям предоставлены представления базовых таблиц. Они разбиты на три группы: DBA – представления, предназначенные пользователям, являющимися АБД, то есть которым присвоена роль DBA. По этим представлениям предоставляется наиболее полная информация из словаря данных; USER – представления, по которым каждый пользователь получает информацию о тех объектах, которыми владеет; ALL – представления, дающие каждому пользователю всю информацию об объектах, к которым ему разрешен доступ. Например: DBA/ALL/USER_INDEXES – все/доступные/пользовательские индексы; DBA/ALL/USER_IND_COLUMNS – все/доступные/пользовательские колонки индексов; DBA/ALL/USER_OBJECTS – все/доступные/пользовательские объекты; DBA/ALL/USER_SYNONYMS – все/доступные/пользовательские синонимы; DBA/ALL/USER_TABLES – все/доступные/пользовательские таблицы; DBA/ALL/USER_TAB_COLUMNS – все/доступные/пользовательские колонки таблиц; DBA/ALL/USER_TAB_PRIVS – все/доступные/пользовательские привилегии на таблицы; DBA/ALL/USER_VIEWS – все/доступные/пользовательские представления.

Работа с системным словарём Некоторые представления (по смыслу их применения) присутствуют только в одной или двух группах. Наиболее характерно это для DBA-представлений, например: DBA_DATA_FILES – данные о физических файлах базы и журналов; DBA/USER_FREE_SPACE – свободная память в табличных пространствах (вся и доступная конкретному пользователю); DBA_PROFILES – перечень вариантов "стоимости" системных ресурсов; DBA_ROLES – перечень определенных в базе данных ролей. Примеры извлечения данных из ССД: select table_name from user_tables; select * from all_views; select view_name from dba_views;

Работа с системным словарём Важное значение имеет синоним DICT к представлению DICTIONARY. По нему выбираются имена таблиц, представлений, синонимов словаря данных с описаниями, если таковые есть в базе данных. Приведем небольшой фрагмент: select * from dict; ALL_CATALOG Все таблицы, представления, синонимы, последовательности, доступные пользователю ALL_DB_LINKS Связи базы данных, доступные пользователю DBA_OBJECTS Все объекты в базе данных DBA_ROLES Все роли, которые существуют в БД USER_EXTENTS Экстенты, принадлежащие пользователю USER_VIEWS Определения представлений, принадлежащих пользователю DUAL Специальная таблица, содержащая один столбец DUMMY и одну строку DICT Синоним для DICTIONARY TABS Синоним для USER_TABLES

Работа с системным словарём АБД открыт доступ к этим таблицам, но работать на этом уровне, за исключением случаев КРАЙНЕЙ необходимости, НИКОГДА НЕ рекомендуется: вся информация словаря данных доступна через представления базовых таблиц; данные в базовых таблицах представлены без дублирования по правилам внутри системной упорядоченности, без расшифровки; количество, названия, размеры столбцов таблиц сделаны без учета достаточной наглядности; случайная, намеренная или еще по какой-либо причине КОРРЕКТИРОВКА содержимого базовых таблиц (даже в очевидных случаях, например, хранение данных о давно удаленных табличных пространствах), как правило, приводит к ПОВРЕЖДЕНИЮ словаря данных, то есть к ПОТЕРЕ всей базы данных. Редчайшее исключение представляет AUD$ (таблица аудиторской информации), из которой следует периодически удалять ненужные записи, поскольку при включенном audit-режиме эта таблица быстро наполняется и может переполнить табличное пространство SYSTEM.

Требования к составу и функциям СУБД 3. 4. 5. 6. 7. 8. 9. Поддержка транзакций. Служба управления параллельной работой. Службы восстановления. Службы контроля доступа к данным. Службы поддержки целостности данных. Службы поддержки независимости от данных. Вспомогательные службы.

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

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

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

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

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

Основные объекты Oracle База данных (DATABASE) – объект, который находится на самом верхнем уровне физической организации базы данных Oracle находится объект, который так и называется: база данных (database). База данных состоит из словаря-справочника данных, собственно данных и различных вспомогательных объектов: файла параметров инициализации, управляющего файла, файла сегментов отката и двух файлов журнала транзакций. (Этот перечень может быть расширен, например, за счет копий управляющего файла). База данных может быть создана автоматически при инсталляции СУБД Oracle или вручную с помощью команды CREATE DATABASE. Табличная область (TABLESPACE) – область памяти, предназначенная для хранения всех объектов БД. Табличная область имеет имя и занимает один или более файлов операционной системы. Создается командой CREATE TABLESPACE. Иногда табличную область называют табличным пространством.

Основные объекты Oracle Пользователь (USER) – объект, обладающий возможностью создавать и использовать другие объекты Oracle, а также запрашивать выполнение функций сервера. К числу таких функций относятся организация сессии, изменение состояния сервера и базы данных, создание других объектов БД, запросы на выполнение операторов SQL и проч. В СУБД Oracle имя пользователя совпадает с именем схемы. Создается командой CREATE USER. Каждый объект БД принадлежит тому пользователю, который его создал, и находится в его схеме. Полное имя любого объекта БД (кроме базы данных, табличных областей и пользователей) состоит из имени схемы, в которой он создан, и собственно имени объекта, например: scott. emp Здесь scott – имя пользователя (схемы), emp – имя объекта (таблицы "Сотрудники"), а точка – это т. н. квалифицированная ссылка, разделяющая уровни определения.

Основные объекты Oracle Кластер (CLUSTER) – объект, задающий способ совместного хранения данных нескольких таблиц, содержащих информацию, обычно обрабатываемую совместно. Кластеризация таблиц позволяет уменьшить время выполнения выборки. Создается командой CREATE CLUSTER. Включает таблицы с данными. Таблица (TABLE) является базовой структурой реляционной модели. Как известно, вся информация в базе данных хранится в таблицах. Таблицы состоят из множества поименованных столбцов или атрибутов. Множество значений столбца определено с помощью ограничений целостности, то есть поддерживается ограниченная концепция домена (множества допустимых значений). Таблица может быть пустой или состоять из одной или более строк значений атрибутов. Строки значений атрибутов таблицы называют также записями или кортежами. Создается командой CREATE TABLE, может быть создана в кластере.

Основные объекты Oracle Индекс (INDEX) – это объект базы данных, создаваемый для повышения производительности выборки данных. Индекс создается для столбца (столбцов) таблицы и обеспечивает более быстрый доступ к данным этой таблицы за счет упорядочения данных столбца (столбцов) по значению. Создается командой CREATE INDEX. Кластеры, таблицы и индексы называются объектами, занимающими память, т. к. в них хранятся фактографические данные. Им при создании выделяется определенный объем памяти (один или несколько экстентов), который может быть увеличен при добавлении в них данных. Экстент (extent) – это непрерывная область памяти в табличном пространстве. Все экстенты, относящиеся к одному объекту, образуют сегмент (segment). Кластер Таблица Индекс

Основные объекты Oracle Представление (VIEW) – это поименованная, динамически поддерживаемая сервером выборка данных из одной или нескольких таблиц. В основе представления лежит оператор SELECT, который называется базовым запросом представления. Базовый запрос определяет видимые пользователем данные. Представление позволяет ограничить данные, которые пользователь может модифицировать. Данные в представлении не хранятся: сервер формирует представление каждый раз при обращении к нему (это называется материализация представления). Используя представления, администратор безопасности может ограничить доступную пользователям часть базы данных только теми данными, которые реально необходимы им для выполнения работы. Создается командой CREATE VIEW. Последовательность (SEQUENCE) – это объект, обеспечивающий генерацию уникальных номеров в условиях многопользовательского асинхронного доступа. Обычно элементы последовательности используются для вставки уникальных идентификационных номеров для элементов таблиц базы данных. Создается командой CREATE SEQUENCE.

Основные объекты Oracle Синоним (SYNONYM) – это альтернативное имя или псевдоним объекта Oracle, который позволяет пользователям базы данных иметь доступ к данному объекту. Синоним может быть частным и общим. Общий (public) синоним позволяет всем пользователям базы данных обращаться к соответствующему объекту по альтернативному имени. При этом имя схемы для обращения к объекту не надо указывать, даже если Вы подключились не как владелец объекта, а из другой схемы. Создается командой CREATE SYNONYM. Роль (ROLE) – именованная совокупность привилегий, которые могут быть предоставлены пользователям или другим ролям. Используется для эффективного управления разграничением доступа к данным. Oracle поддерживает несколько стандартных или предопределенных ролей (DBA, CONNECT, RESOURCE и др.). Создается командой CREATE ROLE.

Основные объекты Oracle Специфичными для распределенных систем являются такие объекты Oracle как снимок и связь базы данных. Снимок (SNAPSHOT) – локальная копия таблицы удаленной базы данных, которая используется либо для тиражирования (копирования) всей или части таблицы, либо для тиражирования результата запроса данных из нескольких таблиц. Снимки могут быть модифицируемыми или предназначенными только для чтения. Снимки только для чтения возможно периодически обновлять, отражая изменения основной таблицы. Изменения, сделанные в модифицируемом снимке, распространяются на основную таблицу и другие копии. Создается командой CREATE SNAPSHOT. Связь базы данных (DATABASE LINK) – это объект базы данных, который позволяет обратиться к объектам удаленной базы данных. Имя связи базы данных можно рассматривать как ссылку на параметры механизма доступа к удаленной базе данных (имя узла, протокол и т. п.). Использование одного имени упрощает работу с объектами удаленной базы данных. Создается командой CREATE DATABASE LINK.

Основные объекты Oracle Для программирования алгоритмов обработки данных, поддержки сложных правил целостности данных Oracle использует процедурные объекты: Процедура (PROCEDURE) – это подпрограмма на языке PL/SQL, предназначенная для решения конкретной задачи обработки данных. Создается командой CREATE PROCEDURE. Функция (FUNCTION) – это подпрограмма на языке PL/SQL, предназначенная для решения конкретной задачи и возвращающая конкретное значение. Создается командой CREATE FUNCTION. Пакет (PACKAGE) – это поименованный, структурированный набор переменных, процедур и функций, связанных единым функциональным замыслом. Пакет состоит из спецификации и тела пакета. Спецификация содержит описания внешних переменных, констант, типов и подпрограмм, а тело пакета – реализацию подпрограмм и описание внутренних переменных, констант и типов, которые доступны только внутри пакета. Спецификация пакета создается командой CREATE PACKAGE, а тело пакета – CREATE PACKAGE BODY. Триггер (TRIGGER) – это хранимая процедура, которая автоматически запускается тогда, когда происходит связанное с триггером событие. Обычно события связаны с выполнением операторов INSERT, UPDATE или DELETE в некоторой таблице. Создается командой CREATE TRIGGER.

Физическая структура базы данных Oracle Параметры среды: $ORACLE_HOME – имя домашней директории Oracle. $ORACLE_SID – имя базы данных Oracle. База данных Oracle включает: Управляющие файлы (ctrl 1$ORACLE_SID. ctl, ctrl 2$ORACLE_SID. ctl, . .) Файл параметров запуска экземпляра init$ORACLE_SID. ora Файл параметров конфигурации базы config$ORACLE_SID. ora Журнальные файлы регистрации изменений (log 1$ORACLE_SID. dbf, log 2$ORACLE_SID. dbf, . .) Системное табличное пространство (SYSTEM, system$ORACLE_SID. dbf) Временное табличное пространство (TEMP, temp$ORACLE_SID. dbf) Табличное пространство для данных пользователей (USER, user$ORACLE_SID. dbf)

Структуры оперативной памяти Oracle SGA – это память, используемая всеми процессами экземпляра. Существует всего одна SGA для экземпляра. Изменения, сделанные в элементах SGA для одного процесса, немедленно становятся доступными для всех процессов, функционирующих в составе этого экземпляра. Создаваемая при запуске экземпляра Oracle, SGA имеет фиксированный размер. Она существует до тех пор, пока экземпляр не будет завершен вручную, или случится перезагрузка операционной системы, или произойдет аварийное завершение (крах) собственно Oracle. Основными внутренними структурами SGA являются: кеш буферов данных (Database Buffer Cache), то есть набор свободных, считанных и модифицированных блоков данных, в которых размещается информация из базы; буфер журнала транзакций (Redo Log Buffer); разделяемый (общий) буферный пул (Shared Buffer Pool).

Структуры оперативной памяти Oracle. SGA Кеш буферов данных содержит два списка: список наименее используемых в данный момент блоков (LRU – least_recently_used), куда входят считанные с диска, но еще не модифицированные блоки, а также свободные буферы данных; список модифицированных (dirty – "грязный"), но еще не записанных на диск блоков. Обратите внимание: обмен "диск-память" всегда производится блоками вне зависимости от их заполненности записями данных и от количества измененных при обработке записей; при обращении к данным Oracle сначала проверяет, имеются ли требуемые данные в кеше буферов, и, только если их нет, обращается к диску; считанные с диска блоки данных попадают в начало списка LRU. Если они затем модифицируются, то Oracle их переводит в список "грязных" блоков для последующей записи на диск; при недостатке в кеше свободных буферов для выполнения очередного запроса Oracle удаляет блоки с "хвоста" списка LRU, как наименее активно используемые, и на их место считывает с диска требуемые блоки данных.

Структуры оперативной памяти Oracle. SGA Буфер журнала регистрации изменений представляет собой циклически используемую память. В этот буфер поступают все изменения, происходящие в базе с пользовательскими, системными, служебными данными. Поскольку журнал регистрации изменений предназначен для восстановления состояния базы данных после аварийных ситуаций, записи журнала несут в себе "старое" и "новое" значения изменившихся элементов, в частности целиком записи данных после операций вставки их в базу или удаления из БД. Если обработка данных производится так интенсивно, что буфер журнала переполняется, то есть если процесс LGWR (процесс записи в журнал) не успевает переносить данные из буфера на диск, Oracle начинает сдерживать пользовательские процессы. Разделяемый (общий) буферный пул включает в себя: 1. кеш словаря (Dictionary Cache): хранит в себе наиболее часто (в текущей работе) используемые сведения из системного словаря данных, а именно: названия таблиц и представлений, имена столбцов и типы данных, привилегии и роли пользователей, права доступа к объектам базы данных и др. 2. разделяемую (общую) область SQL и PL/SQL (Shared SQL and PL/SQL), которая известна также как "библиотечный кеш" (library cache): включает в себя набор курсоров, то есть структур памяти, в которых хранятся результаты синтаксический разбора и планы выполнения SQL-предложений и блоков PL/SQL.

Структуры оперативной памяти Oracle. PGA представляет собой область оперативной памяти, выделяемую для обеспечения функционирования отдельного процесса. Имеет место одна и только одна целиком выделяемая процессу и независимая от других процессов PGA для каждого процесса экземпляра. Размер PGA может динамически увеличиваться в процессе функционирования. PGA часто называют глобальной областью процесса (Process Global Area). Когда процесс Oracle нормально завершается, вся память PGA возвращается операционной системе. PGA процесса Oracle-сервера включает в себя: область стека, содержащую переменные и служебную информацию о сеансе; частную SQL-область, которую иногда называют "Глобальной областью пользователя" (UGA – User Global Area), в которой производится синтаксический разбор SQL-предложений и блоков PL/SQL. Эта область физически располагается в SGA (вариант архитектуры MTS) или в PGA (архитектура с выделенными серверами). Важно то, что рекурсивные сессии не получают свои собственные UGA, а разделяют UGA породившей их сессии; необязательная область сортировки (размером sort_area_size), которая как временная память требуется для хранения промежуточных результатов сортировки данных. Если выделенной памяти недостаточно для проведения сортировки, процесс использует временный сегмент соответствующего табличного пространства.

Процессы экземпляра Oracle Набор работающих с базой данных фоновых процессов и порожденная при запуске экземпляра SGA (Системная Глобальная Область) составляют экземпляр Oracle. Все процессы экземпляра функционируют на едином программном ядре ($ORACLE_HOME/bin/oracle) СУБД. Обычно процессы экземпляра определяют как фоновые (обслуживающие, вспомогательные, дополнительные) и серверные (содержательная обработка запросов). Минимально необходимым для функционирования Oracle является набор из следующих четырех фоновых процессов: ora_pmon_ – процесс мониторинга внутреннего состояния системы ora_dbwr_ – процесс записи данных в базу данных Oracle ora_lgwr_ – процесс записи в журнал регистрации изменений ora_smon_ – процесс системного мониторинга.

Процессы экземпляра Oracle 1. pmon – фоновый процесс-монитор. Он следит: за состоянием процессов в системе (в частности, он отслеживает обращение к серверу со стороны пользователей (connect) и запускает сервер-процессы); обнаруживает аварийные ситуации и "мертвые" блокировки сервер-процессов; освобождает ресурсы, то есть снимает блокировки; завершает транзакции, удаляет процессы из списка активных; восстанавливает состояние (rollback – откат) базы данных после ненормальных ситуаций завершения пользовательских процессов. 2. dbwr – фоновый процесс записи блоков данных в базу из списка модифицированных блоков в SGA. dbwr "пробуждается" к работе, если: длина списка модифицированных блоков превысила пороговое значение; в списке свободных буферов не хватает памяти для чтения новых блоков; истек очередной 3 -х секундный интервал времени; фоновый процесс записи в журнал lgwr сигнализирует о начале формирования очередной контрольной точки.

Процессы экземпляра Oracle 3. lgwr – фоновый процесс записи в журнал регистрации изменений в базе данных. Регистрация транзакций осуществляется следующим образом: по мере выполнения транзакции создаются небольшие записи, называемые элементами повтора (redo entries), в которых содержится информация, достаточная для воссоздания изменений, вносимых транзакцией. элементы повтора транзакции временно сохраняются в буфере журнала повтора. когда запрашивается завершение транзакции, процесс lgwr считывает необходимые элементы повтора из буфера журнала транзакций и записывает их в журнал транзакций базы данных. Транзакция считается завершенной, когда процесс lgwr запишет элемент повтора транзакции в журнал транзакций и сделает запись о ее завершении в журнале транзакций. Данные из SGA-буфера переносятся на диск в следующих случаях: выполнена операция COMMIT фиксации изменений очередной транзакции; истек очередной 3 -х секундный интервал времени; буфер журнала в SGA заполнен на одну треть своей емкости; процесс dbwr записал на диск очередную порцию модифицированных буферов.

Процессы экземпляра Oracle 4. smon – обязательный процесс системного мониторинга выполняет: автоматическое восстановление (roll forward – накат вперед) базы данных, если ее предыдущий запуск завершился ненормально или аварийно; освобождение временных сегментов от ненужных данных; объединение смежных свободных экстентов табличных пространств в непрерывные участки. 5. arch – необязательный фоновый процесс архивирования файлов оперативных журналов регистрации изменений в базе данных. Место копирования (диск, лента, . . .) определяется параметром log_archive_dest в файле init. ora. Если процесс arch не успел заархивировать очередной журнальный файл (например, переполнена файловая система и не хватает места, чтобы разместить файл-архив), а требуется на него переключение, Oracle приостанавливает функционирование, выполняя только транзакции, не связанные с ведением журнала.

Процессы экземпляра Oracle 6. ckpt – необязательный вспомогательный процесс записи контрольной точки в оперативный журнал фиксации изменений. Обычно контрольные точки записывает lgwr. Процесс ckpt (checkpoint_process = true в файле init. ora) лишь освобождает lgwr от этой функции. 7. reco – (полу) обязательный процесс, ответственный за связи с удаленными базами данных. Процесс reco можно не запускать (в init. ora параметр disributed_transaction = 0), но тогда экземпляр не сможет использовать ни одной "связи между базами данных". 8. snp. X – от одного до десяти процессов автоматического обновления снапшотов локальной базы. Количество задается в init. ora параметром snapshot_refresh_processes, а параметр snapshot_refresh_interval определяет регулярность их включения. Процессы snp. X можно отнести к серверным, поскольку они, связываясь с другими (в частности с той же самой) базами данных, работают с пользовательской информацией в базе данных.

Процессы экземпляра Oracle 9. db. XX – дополнительные процессы записи в базу данных. Если узким местом производительности базы является ввод/вывод, а база физически размещается на нескольких дисках, рекомендуется запустить несколько дополнительных процессов записи (в среднем, по одному на каждый отдельный диск). Количество дополнительных db. XX определяется параметром db_writers. 10. d. XXX – процессы диспетчеры в варианте архитектуры MTS с разделяемыми серверами. Количество функционирующих в данный момент диспетчеров зависит от напряженности работы Oracle, но не превышает заданного параметром mts_max_dispatchers числа. Каждый диспетчер обслуживает только конкретный сетевой или внутренний протокол. Например: mts_dispatchers="tcp, 1" mts_dispatchers="ipc, 1"

Процессы экземпляра Oracle 11. s. XXX – процессы серверы в варианте архитектуры MTS с разделяемыми серверами. Количество функционирующих в данный момент серверов зависит от напряженности работы Oracle, но не превышает заданного параметром mts_max_servers числа. Стартуя, Oracle запускает несколько (mts_servers) сервер-процессов, а затем то мере возрастания или снижения нагрузки запускает или завершает дополнительные процессы. 12. oracle – выделенный процесс сервера, индивидуально обслуживающий какой-то пользовательский (в частном случае и процесс snp) процесс, вполне возможно функционирующий на другой машине. 13. loc. X – от одного до десяти процессов блокировок, обеспечивающих взаимное управление ресурсами в среде параллельного сервера.

Архитектуры серверов Oracle Однопользовательский вариант (пример среды – MS DOS) характеризуется тем, что: происходит объединение пользовательского процесса, процесса сервера и фоновых процессов в рамки одной задачи операционной системы; возможен запуск только одной базы данных и одного экземпляра Oracle; в распределенной базе данных не может функционировать в качестве сервера. Многопользовательский вариант (пример среды – UNIX) характеризуется тем, что: происходит разделение пользовательских, серверных и фоновых процессов на отдельные задачи операционной системы; есть возможность запуска нескольких баз данных и экземпляров Oracle; возможно функционирование в качестве сервера в распределенной БД.

Архитектуры серверов Oracle Однозадачный вариант (пример среды – Net. Ware) характеризуется тем, что: пользовательский процесс и процесс сервера образуют единую задачу операционной системы, называемую задачей пользователя; в каждый момент времени на сервере может выполняться только одна задача пользователя; возможен доступ многих пользователей через Net 8 (SQL*Net) к базе данных. Двухзадачный вариант (пример среды – UNIX) характеризуется тем, что: пользовательский процесс и процесс обслуживающего сервера представляют собой полностью самостоятельные процессы операционной системы вплоть до того, что могут функционировать на разных машинах и платформах (архитектура "клиент-сервер"); в каждый момент времени на сервере может функционировать несколько (много) пользовательских и серверных процессов; возможен доступ многих пользователей через Net 8 (SQL*Net) к локальным базам данных и локальных пользователей к удаленным базам данных.

Архитектуры серверов Oracle Однонитевая архитектура, или вариант с выделенными (Dedicated) серверами: жесткое закрепление за каждым пользовательским процессом процесса сервера, который выполняет его и только его запросы к базе данных. Параллельный сервер (среда – кластерные системы, например, RM-1000): на каждом процессоре кластера функционирует свой экземпляр Oracle, включающий отдельную область SGA и набор системных процессов; каждый экземпляр ведет свои собственные журналы регистрации изменений; база данных и управляющие файлы являются общими для всех экземпляров; к каждому экземпляру возможно подключение многих пользователей; каждый экземпляр адресуем отдельно, и может самостоятельно работать как часть распределенной системы.

Архитектуры серверов Oracle Многонитевая архитектура (MTS – Multi-Tread Server), вариант с разделяемыми серверами характеризуется: наличием процессов-диспетчеров, принимающих запросы от пользовательских процессов и возвращающих им результаты выполненных сервер-процессами запросов; наличием в SGA: одной входной очереди для всех сервер-процессов, в которую диспетчеры помещают заявки на обслуживание от пользователей; нескольких выходных очередей, закрепленных по одной за каждым процессом диспетчером, куда серверы помещают и откуда диспетчеры передают пользователям результаты выполнения запросов к базе данных; переносом в SGA экземпляра Oracle частных SQL-областей, ранее размещавшихся в PGA процессов серверов; динамическим изменением в зависимости от текущей нагрузки системы количества функционирующих диспетчеров и сервер-процессов; ни диспетчеры, ни серверы не закрепляются за какими-либо процессами пользователей: запросы обслуживаются по мере поступления; возможностью одновременного функционирования выделенных и разделяемых серверов.