Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Общее понятие. Стадии проектирования. Проектирование географических баз данных (БД). Классификация баз данных ГИС. Представление пространственных данных в БД и цифровой карте. Системы управления БД ГИС (СУБД ГИС). Содержание и классификация системы управления базой данных
Ядром каждой информационной системы (и ГИС в том числе) является база данных, под которой понимают поименованную совокупность данных, отображающую состояние объекта, его свойства и взаимоотношения с другими объектами, а также комплекс технических и программных средств для ведения этих баз данных. Формирование структуры ГИС начинается с формирования баз данных, основанных на территориальной (географической) привязке данных, поскольку все ГИС-системы имеют дело только с пространственно-координированными данными. Территориальная упорядоченность сведений важна не только с точки зрения унификации их сбора, но и установления оптимального соответствия размерам исследуемых систем. Наряду с данными, приуроченными к точкам и линиям поточечно фиксируемыми координатами, иногда их привязывают к границам административно-территориальных образований или природных контуров, например гидрографической сети, элементам рельефа местности и т. д.
База данных ГИС включает графические и атрибутивные данные, которые могут храниться вместе или отдельно.
Важная составная часть ГИС — БД, в которых содержится тематическая информация. В связи со стремительно уменьшающейся стоимостью запоминающих устройств хранение информации в ЭВМ стоит дешевле, чем на бумажных носителях.
Основная идея организации структуры базы данных заключается в том, чтобы максимально нормализовать их, т. е. разбить на смысловые и функциональные группы.
Концептуальное проектирование
• определение конечной цели использования ГИС
• уровень и детальность базы данных (масштаб, классификации)
• пространственные элементы
• непространственные элементы
• определение источников пространственных и непространственных данных
• возраст и иные временные характеристики данных
• территория, которую должны покрыть данные
• информационная изученность территории
• стандартные точки (тики) для пространственного совмещения данных
• проблемная область непространственных данных, определяющая их особенности
Логическое проектирование
• координатная система, определяющая способ геокодирования и совмещения данных
• проект пространственной "нарезки" листов карт
• составление словаря непространственных данных
• пространственная топологизация данных
• редактирование пространственных и непространственых данных, их стыковка через идентификаторы
Физическое проектирование
• Размещение данных и программных средств ГИС на диске
• Физический объема базы данных
• Потребности дискового пространства
• Скорость доступа к файловым структурам
Базы данных делят на иерархические, сетевые и реляционные.
Иерархические базы данных устанавливают строгую подчиненность между записями и состоят из упорядоченного набора деревьев (из упорядоченного набора нескольких экземпляров одного типа дерева). Тип дерева состоит из одного «корневого» типа записи и упорядоченного набора из нуля или более типов поддеревьев (каждое из которых является некоторым типом дерева). Тип дерева в целом представляет собой иерархически организованный набор типов записи (рис. 3.5).
Здесь Квартал является предком для Земельного участка, а Земельный участок — потомком для Квартала. Земельный участок является предком для Части участка, а часть участка — потомком для Земельного участка. Между типами записи поддерживаются связи. Автоматически поддерживается целостность ссылок между предками и потомками.
Типичный представитель иерархических систем — Information Management System (IMS) фирмы IBM. Первая версия появилась в
1968 г. До сих пор поддерживается много баз данных в этой системе, что создает существенные проблемы с переходом как на новую технологию БД, так и на новую технику.
Сетевые базы данных используют в том случае, если структура данных сложнее, чем обычная иерархия, т. е. простота структуры иерархической базы данных становится ее недостатком. Организация сетевых и иерархических баз данных должна быть жесткая. Наборы отношений и структуру записей необходимо задавать заранее.
Типичный представитель сетевых систем — Integrated Database Management System (IDMS) компании Cullinet Software, Inc., предназначенная для использования на машинах основного класса фирмы IBM под управлением большинства операционных систем. Архитектура системы основана на предложениях Data Base Task Group (DBTG) Комитета по языкам программирования Conference on Data Systems Languages (CODASYL).
Сетевой подход к организации данных является расширением иерархического. В иерархических структурах запись-потомок должна иметь в точности одного предка; в сетевой структуре данных потомок может иметь любое число предков. Сетевая БД состоит из набора записей и набора связей между этими записями. Тип связи определяется для двух типов записи: предка и потомка (рис. 3.6).
Изменение структуры базы данных предполагает перестройку всей базы данных, а для получения ответа на запрос необходимо иметь специальную программу поиска данных. Поэтому реализация пользовательских запросов занимает много времени.
Недостатки иерархической и сетевой моделей привели к появлению реляционной базы данных. Реляционная модель была попыткой упростить структуру БД. В ней все данные представлены в виде простых таблиц, разбитых на строки и столбцы.
В реляционной базе данных информация организована в виде таблиц, разделенных на строки и столбцы, на пересечении которых содержатся значения данных. У каждой таблицы имеется уникальное имя, описывающее ее содержимое. Структура таблицы показана на рисунке 3.7. Каждая горизонтальная строка этой таблицы представляет отдельный физический объект — один административный район. Она же представлена на карте отдельным графическим объектом. Все строки таблицы представляют все районы одной области. Все данные, содержащиеся в конкретной строке таблицы, относятся к району, который описывается этой строкой.
Все значения, содержащиеся в одном и том же столбце, являются данными одного типа. Например, в столбце «Районный центр» содержатся только слова, в столбце «Площадь» содержатся десятичные числа, а в столбце «ID» — целые числа, представляющие коды объектов, установленные пользователем. Связь между таблицами осуществляется по полям.
Каждая таблица имеет собственный, заранее определенный набор поименованных столбцов (полей). Поля таблицы обычно соответствуют атрибутам объектов, которые необходимо хранить в базе. Количество строк (записей) в таблице не ограничено, и каждая запись несет информацию о каком-либо объекте.
Понятие «тип данных» в реляционной модели данных полностью адекватно понятию «тип данных» в языках программирования Обычно в современных реляционных БД допускается хранение символьных, числовых данных, битовых строк, специализированных числовых данных (таких, как «деньги»), а также специальных «темпоральных» данных (дата, время, временной интервал) Достаточно активно развивается подход к расширению возможностей реляционных систем абстрактными типами данных (соответствующими возможностями обладают, например системы семейства Ingres/Postgres). В нашем примере мы имеем дело с данными трех типов: строки символов, целые числа и «деньги».
Понятие «домен» более специфично для баз данных, хотя и имеет некоторые аналогии с подтипами в некоторых языках программирования. В самом общем виде домен определяется заданием некоторого базового типа данных, к которому относятся элементы домена, и произвольного логического выражения, применяемого к элементу типа данных. Если вычисление этого логического выражения дает результат «истина», то элемент данных является элементом домена. Наиболее правильной трактовкой понятия «домен» является его понимание как допустимого потенциального множества значений данного типа.
Схема отношения — это именованное множество пар [имя атрибута имя домена (или типа, если понятие «домен» не поддерживаетсян Степень, или «арность», схемы отношения — мощность этого множества. Степень отношения СОТРУДНИКИ равна четырем т е оно является 4-арным. Если все атрибуты одного отношения определены на разных доменах, следует использовать для именования атрибутов имена соответствующих доменов (не забывая конечно, о том, что это является всего лишь удобным способом именования и не устраняет различия между понятиями «домен» и «атрибут»).
Схема базы данных (в структурном смысле) - это набор именованных схем отношений.
Кортеж соответствующий данной схеме отношения, — это множество пар (имя атрибута, значение), которое содержит одно вхождение каждого имени атрибута, принадлежащего схеме отношения «Значение» является допустимым значением домена данного атрибута (или типа данных, если понятие «домен» не поддерживается) Тем самым степень, или «арность», кортежа, т. е. число элементов в нем, совпадает с «арностью» соответствующей схемы
отношения. Попросту говоря, кортеж — это набор именованных значений заданного типа.
Отношение — это множество кортежей, соответствующих одной схеме отношения. Иногда, чтобы не путаться, говорят «отношение-схема» и «отношение-экземпляр», иногда схему отношения называют заголовком отношения, а отношение как набор кортежей — телом отношения. На самом деле понятие «схема отношения» ближе всего к понятию «структурный тип данных» в языках программирования. Было бы вполне логично разрешать отдельно определять схему отношения, а затем одно или несколько отношений с данной схемой.
Однако в реляционных базах данных это не принято. Имя схемы отношения в таких базах данных всегда совпадает с именем соответствующего отношения-экземпляра. В классических реляционных базах данных после определения схемы базы данных изменяются только отношения-экземпляры. В них могут появляться новые и удаляться или модифицироваться существующие кортежи. Однако во многих реализациях допускается и изменение схемы базы данных: определение новых и изменение существующих схем отношения. Это принято называть эволюцией схемы базы данных.
Обычным представлением отношения является таблица, заголовком которой служит схема отношения, а строками — кортежи отношения-экземпляра; в этом случае имена атрибутов именуют столбцы этой таблицы. Поэтому иногда говорят «столбец таблицы», имея в виду «атрибут отношения». Реляционная база данных — это набор отношений, имена которых совпадают с именами схем отношений в схеме БД.
Понятие «согласованность данных» — ключевое понятие баз данных. Фактически, если информационная система поддерживает согласованное хранение информации в нескольких файлах, можно говорить о том, что она поддерживает базу данных. Если же некоторая вспомогательная система управления данными позволяет работать с несколькими файлами, обеспечивая их согласованность, то ее можно назвать системой управления базами данных. Требование поддержания согласованности данных в нескольких файлах не позволяет обойтись библиотекой функций: такая система должна иметь некоторые собственные данные (метаданные) и даже знания, определяющие целостность данных.
Реляционные базы данных — наиболее популярная структура для хранения данных, поскольку сочетает в себе наглядность представления данных с относительной простотой манипулирования ими.
База данных, организованная с помощью инвертированных списков, похожа на реляционную БД. Отличие заключается в том,что хранимые таблицы и пути доступа к ним видны пользователям.
При этом:
строки таблиц упорядочены системой в некоторой физической последовательности;
физическую упорядоченность строк всех таблиц можно определять и для всей БД (так делают, например, в Datacom/DB);
для каждой таблицы можно определить произвольное число ключей поиска, для которых строятся индексы. Эти индексы автоматически поддерживаются системой, но явно видны пользователям.
Общие правила определения целостности БД отсутствуют. В некоторых системах поддерживаются ограничения уникальности значений некоторых полей, но в основном все возлагается на прикладную программу.
Для эффективного выполнения задач создания методов ввода, обновления, обеспечения файлового хранения и контроля за доступом пользователя к файлам вывода данных требуется создать гибкую и хорошо организованную ГИС.
Содержание и классификация системы управления базой данных
Эффективное использование цифровых данных предполагает наличие программных средств, обеспечивающих функции их хранения, описания, обновления и т. д. В зависимости от типов и форматов их представления, от уровня программных средств ГИС и некоторых характеристик среды и условий их использования возможны различные варианты организации хранения и доступа к пространственным данным, причем способы организации различаются для позиционной (графической) и семантической их части.
В простых программных средствах ГИС отсутствуют специфические средства организации хранения, доступа к данным и маниг-пулирования или эти функции реализуются средствами операционной системы в рамках ее файловой организации.
Большинство существующих программных средств ГИС используют для этих целей сложные и эффективные подходы, основанные на организации данных в виде баз данных, управляемых программными средствами, получившими название систем управления базами данных (СУБД). Под СУБД принято понимать комплекс программ и языковых средств, предназначенных для создания, ведения и использования баз данных.
Современные СУБД можно классифицировать в соответствии с используемой моделью данных [иерархическая, сетевая, реляционная, объектная, гибридная (элементы объектной с реляционной)];
Широкое применение при разработке программного обеспечения ГИС получили реляционные СУБД.
Системы, основанные на инвертированных списках, иерархические и сетевые системы управления базами данных являлись предшественниками реляционных СУБД.
К общим характеристикам ранних систем можно отнести следующие:
1. Эти системы активно использовали в течение многих лет, дольше, чем какую-либо из реляционных СУБД. В них накоплены большие базы данных, и поэтому одна из актуальных проблем информационных систем — использование их совместно с современными системами.
2. Системы не были основаны на каких-либо абстрактных моделях. Абстрактные представления ранних систем появились позже на основе анализа и выявления общих признаков у различных систем вместе с реляционным подходом.
3. Доступ к БД производился на уровне записей. Пользователи этих систем осуществляли навигацию в БД, используя языки программирования, расширенные функциями СУБД. Интерактивный доступ к БД поддерживался только путем создания соответствующих прикладных программ с собственным интерфейсом.
4. После появления реляционных систем большинство ранних систем было оснащено реляционными интерфейсами. Однако в большинстве случаев это не сделало их по-настоящему реляционными системами, поскольку оставалась возможность манипулировать данными в естественном для них режиме.
К числу наиболее известных систем, основанных на инвертированных списках, относятся Datacom/DB компании Applied Data Research, Inc. (ADR), ориентированная на использование компьютеров основного класса фирмы IBM, и Adabas компании Software AG.
Доступ к данным основан на инвертированных списках, что присуще практически всем современным реляционным СУБД, но в этих системах пользователи не имеют непосредственного доступа к инвертированным спискам (индексам). Внутренние интерфейсы систем, основанных на инвертированных списках, очень близки к пользовательским интерфейсам реляционных СУБД. Достоинства СУБД, основанных на инвертированных списках: развитость средств управления данными во внешней памяти; возможность построения вручную эффективных прикладных систем; возможность экономии памяти за счет разделения подобъектов (в сетевых системах).
Недостатки этих СУБД: сложность пользования; необходимость информации о физической организации, от которой зависят прикладные программы; перегруженность логики системы деталями организации доступа к БД.
К достоинствам реляционного подхода организации СУБД можно отнести:
наличие небольшого набора абстракций, которые позволяют сравнительно просто моделировать большую часть распространенных предметных областей и допускают точные формальные определения, оставаясь интуитивно понятными;
наличие простого и в то же время мощного математического аппарата, опирающегося главным образом на теорию множеств и математическую логику и обеспечивающего теоретический базис реляционного подхода к организации баз данных;
возможность ненавигационного манипулирования данными без необходимости знания конкретной физической организации баз данных во внешней памяти.
Реляционные системы не сразу получили широкое распространение.
Хотя основные теоретические результаты в этой области были получены еще в 70-е годы XX в. и тогда же появились первые прототипы реляционных СУБД, долгое время считалось невозможным добиться эффективной реализации таких систем. Однако отмеченные ранее преимущества и постепенное накопление методов и алгоритмов организации реляционных баз данных и управления ими привели к тому, что уже в середине 80-х годов реляционные системы практически вытеснили с мирового рынка ранние СУБД.
СУБД реляционного типа позволяют представить данные о пространственных объектах (точках, линиях и полигонах) и их характеристиках (атрибутах) в виде отношения или таблицы, строки которой (индексированные записи) соответствуют набору значений атрибутов объекта, а колонки (столбцы) обычно устанавливают тип атрибута, его размер и имя. В число атрибутов не входят геометрические атрибуты, описывающие их геометрию и топологию. Векторные записи координат объектов упорядочиваются и организуются с использованием особых средств. Связь между геометрическим описанием объектов и их семантикой в реляционной таблице устанавливается через уникальные номера — идентификаторы.
В настоящее время основными недостатками реляционных СУБД являются:
некоторая ограниченность (прямое следствие простоты) при использовании в так называемых нетрадиционных областях (наиболее распространенными примерами являются системы автоматизации проектирования), в которых требуются предельно сложные структуры данных;
невозможность адекватного отражения семантики предметной области, так как представления знаний очень ограничены.
в зависимости от объема поддерживаемых БД и числа пользователей [высший уровень, средний уровень, нижний уровень, настольные СУБД (рис. 3.8)].
Высший уровень СУБД поддерживают крупные БД (сотни и тысячи Гбайт и более), обслуживающие тысячи пользователей, например ORACLE7, ADABAS 5.3.2, SQL SERVER11.
Реляционная СУБД Oraclel, corp. Oracle обладает широким диапазоном функциональных возможностей, включая поддержку двухфазной фиксации, тиражирования данных, хранимых процедур, триггеров, оперативного резервного копирования. Эта СУБД поддерживает БД, занимающую несколько физических дисков, хранящую новые типы данных, использует почти все аппаратные и программные платформы, а также протоколы передачи данных.
SQL Server 10, сотр. Sybase — продукт, поддерживающий обработку в реальном времени и процессы решений. Он является СУБД одного уровня с Огас1е7, но имеет некоторые ограничения в плане масштабируемости и использует ограниченное число аппаратных и программных платформ.
Средний уровень СУБД поддерживают БД до нескольких сот Гбайт, обслуживают сотни пользователей. Представители: InterBase 3.3, Informix-OnLine7.0, Microsoft SQL Server 6.0.
Среди реляционных СУБД Informix-OnLine 7.0, сотр. Software поддерживает такие современные технологии, как тиражирование данных, синхронизирующее распределенные БД, и большие двоичные объекты. Его можно применять для запуска OLTP-прило-жений (высокоскоростной обработки транзакций), но скорость обработки в этом случае меньше, чем у продуктов верхней части рынка. Установка возможна на ограниченном числе платформ. Имеет большие возможности для расширения.
Microsoft SQL Server 6.0, corp. Microsoft — хорошая СУБД, которая интегрирована с Windows NT, дополняя ее. Недостатки: недостаточная масштабируемость, малое число поддерживаемых программных платформ.
Нижний уровень СУБД составляют системы, которые поддерживают БД до 1 Гбайта и имеют менее 100 пользователей. Используют их, как правило, в небольших подразделениях. Представители: NetWare SQL 3.0, Gupta SQL-Base Server.
Настольные СУБД предназначены для одного пользователя, используются для ведения настольной БД или как клиент для подключения к серверу БД. Имеют очень ограниченные возможности по обработке данных, а также характеризуются отсутствием возможности установки в сети. Представители: FoxPro 2.6, corp. Microsoft, Paradox 5.0, сотр. Borland
При использовании конкретной СУБД необходимо учитывать три ключевых фактора:
· архитектуру взаимодействия клиент/сервер;
· способ или метод реализации основных функций;
· уровень поддержки распределенных БД.
Одно из главных условий, определяющих необходимость использования технологии баз данных при создании ГИС, — поддержка современными СУБД сетевых возможностей хранения и использования технологий локальных сетей (LAN) и удаленных сетей в так называемых распределенных БД. Тем самым достигаются оптимальное использование вычислительных ресурсов и возможность коллективного доступа пользователей к запрашиваемым БД.
Блок анализа данных, являясь одним из трех крупных модулей ГИС (ввода, обработки и вывода), составляет ядро геоинформационных технологий, все остальные операции обеспечивают возможность выполнения системой ее основных аналитических и моделирующих функций. Содержание аналитического блока современных программных средств сформировалось в процессе реализации конкретных ГИС в форме устоявшегося набора операций или групп операций, наличие, отсутствие или эффективность (неэффективность) которых в составе ГИС могут служить показателем его качества.
Существуют различные классификации, позволяющие сгруппировать элементарные аналитические операции или их последовательности в группы. Обобщая их и опираясь на состав и структуру аналитических модулей, можно выделить следующие группы операций:
1. Действия по переструктуризации данных.
2. Трансформация проекций и изменение систем координат.
3. Операции вычислительной геометрии.
4. Оверлейные операции (наложение разноименных и разнотипных слоев данных).
5. Общие аналитические, графоаналитические и моделирующие функции.
Результаты обработки данных должны трансформироваться в «человекочитаемый» документ. Программные средства ГИС включают достаточно широкий набор средств генерации выходных данных.
Документы, генерируемые на выходе: табличные, графические,
картографические.
К техническим средствам, используемым для генерации документов, относятся средства машинной графики, конвертеры данных, позволяющие преобразовывать данные из одних форматов в другие без потерь их геометрических и семантических атрибутов, графопостроители, графические дисплеи с высоким разрешением.
К числу функций СУБД принято относить:
1. управление данными во внешней памяти;
2. управление буферами оперативной памяти;
3. управление транзакциями;
4. ведение журнала изменений данных;
5. поддержка языков базы данных (рис. 3.9).
1Функция непосредственного управления данными во внешней памяти включает обеспечение необходимых структур внешней памяти как для хранения данных, непосредственно входящих в БД, так и для служебных целей, например для убыстрения доступа к данным в некоторых случаях (обычно для этого используются индексы). В некоторых реализациях СУБД активно используются возможности существующих файловых систем, в других работа производится вплоть до уровня устройств внешней памяти. В развитых СУБД пользователи в любом случае не обязаны знать, использует ли СУБД файловую систему, и если использует, то как организованы файлы.
СУБД обычно работают с БД значительного размера, который существенно больше доступного объема оперативной памяти. Если при обращении к любому элементу данных будет производиться обмен с внешней памятью, то вся система будет работать со скоростью устройства внешней памяти. Практически единственный способ реального увеличения этой скорости — буферизация данных в оперативной памяти. Даже если операционная система производит общесистемную буферизацию (как в случае ОС UNIX), этого недостаточно для целей СУБД, которая располагаетгораздо большей информацией о полезности буферизации той или иной части БД. Поэтому в развитых СУБД поддерживается собственный набор буферов оперативной памяти с собственной дисциплиной замены буферов.
Транзакция — это последовательность операций над БД рассматриваемых СУБД как единое целое. Либо транзакция успешно выполняется и СУБД фиксирует (COMMIT) изменения БД, произведенные этой транзакцией во внешней памяти, либо ни одно из этих изменений никак не отражается на состоянии БД. Понятие транзакции необходимо для поддержания логической целостности БД. Поддержание механизма транзакций — обязательное условие даже однопользовательских СУБД. Но понятие транзакции гораздо более важно в многопользовательских СУБД.
То свойство, что каждая транзакция начинается при целостном состоянии БД и оставляет это состояние целостным после своего завершения, делает очень удобным использование понятия транзакции как единицы активности пользователя по отношению к БД. При соответствующем управлении параллельно выполняющимися транзакциями со стороны СУБД каждый из пользователей может в принципе ощущать себя единственным пользователем СУБД. На самом деле это несколько идеализированное представление, поскольку в некоторых случаях пользователи многопользовательских СУБД могут ощутить присутствие своих коллег.
Одно из основных требований к СУБД — надежность хранения данных во внешней памяти. Под надежностью хранения понимают то, что СУБД должна быть в состоянии восстановить последнее согласованное состояние БД после любого аппаратного или программного сбоя. Обычно рассматривают два возможных вида аппаратных сбоев: так называемые мягкие сбои, которые можно трактовать как внезапную остановку работы компьютера (например, аварийное выключение питания), и жесткие сбои, характеризуемые потерей информации на носителях внешней памяти. Примерами программных сбоев могут быть аварийное завершение работы СУБД (по причине ошибки в программе или в результате некоторого аппаратного сбоя) или аварийное завершение пользовательской программы, в результате чего некоторая транзакция остается незавершенной. Первую ситуацию можно рассматривать как особый вид мягкого аппаратного сбоя; при возникновении последней требуется ликвидировать последствия только одной транзакции.
Для восстановления БД нужно располагать некоторой дополнительной информацией. Другими словами, поддержание надежности хранения данных в БД требует избыточности хранения данных, причем та часть данных, которая используется для восстановления, должна храниться особо надежно. Наиболее распространенный метод поддержания такой избыточной информации — ведение журнала изменений БД.
Журнал — это особая часть БД, недоступная пользователям СУБД и поддерживаемая с особой тщательностью (иногда поддерживаются две копии журнала, располагаемые на разных физических дисках), в которую поступают записи обо всех изменениях основной части БД. В разных СУБД изменения БД ведут в журнале на разных уровнях: иногда запись в журнале соответствует некоторой логической операции изменения БД (например, операции удаления строки из таблицы реляционной БД), иногда — минимальной внутренней операции модификации страницы внешней памяти; в некоторых системах одновременно используются оба
подхода.
Самая простая ситуация восстановления — индивидуальный откат транзакции. Для этого не требуется общесистемный журнал изменений БД. Достаточно для каждой транзакции поддерживать локальный журнал операций модификации БД, выполненных в этой транзакции, и производить откат транзакции путем выполнения обратных операций, следуя от конца локального журнала. В некоторых СУБД так и делают, но в большинстве систем локальные журналы не поддерживают, а индивидуальный откат транзакции выполняют по общесистемному журналу, для чего все записи от одной транзакции связывают обратным списком (от конца к началу).
Для восстановления БД после жесткого сбоя используют журнал и архивную копию БД. Архивная копия — это полная копия БД к моменту начала заполнения журнала (имеется много вариантов более гибкой трактовки смысла архивной копии). Для нормального восстановления БД после жесткого сбоя необходимо, чтобы журнал не пропал. К сохранности журнала во внешней памяти в СУБД предъявляются повышенные требования. Тогда восстановление БД состоит в том, что, исходя из архивной копии, по журналу воспроизводится работа всех транзакций, которые закончились к моменту сбоя. В принципе можно даже воспроизвести работу незавершенных транзакций и продолжить их работу после завершения восстановления. Однако в реальных системах это обычно не делается, поскольку процесс восстановления после жесткого сбоя достаточно длителен.
Для работы с базами данных используются специальные языки, в целом называемые языками баз данных. В ранних СУБД поддерживалось несколько специализированных по своим функциям языков. Чаще всего выделялись два языка: язык определения схемы БД (SDL — Schema Definition Language) и язык манипулирования данными (DML — Data Manipulation Language). SDL служил главным образом для определения логической структуры БД, т.е. той структуры БД, какой она предоставляется пользователям. DML содержал набор операторов манипулирования данными, т. е. операторов, позволяющих заносить данные в БД, удалять, модифицировать или выбирать существующие данные.
В современных СУБД обычно используется единый интегрированный язык, содержащий все необходимые средства для работы с БД, начиная от ее создания, и обеспечивающий базовый пользовательский интерфейс с базами данных. Стандартным языком наиболее распространенных реляционных СУБД является язык SQL (Structured Query Language), имеющий следующие основные характеристики:
· позволяет определять схему реляционной БД и манипулировать данными, так как сочетает средства SDL и DML. При этом именование объектов БД (для реляционной БД — именование таблиц и их столбцов) поддерживается на языковом уровне в том смысле, что компилятор языка SQL преобразует имена объектов в их внутренние идентификаторы на основании специально поддерживаемых служебных таблиц-каталогов. Внутренняя часть СУБД (ядро) вообще не работает с именами таблиц и их столбцов;
· содержит специальные средства определения ограничений целостности БД. При компиляции операторов модификации БД компилятор SQL на основании имеющихся в БД ограничений целостности генерирует соответствующий программный код;
· определение представлений БД, фактически являющихся хранимыми в БД запросами (результатом любого запроса к реляционной БД является таблица), с именованными столбцами с помощью специальных операторов языка SQL;
· авторизация доступа к объектам БД на основе специального набора операторов SQL. Полномочия пользователей описываются в специальных таблицах-каталогах, контроль полномочий поддерживается на языковом уровне.
В реляционной СУБД можно выделить:
· ядро СУБД (часто его называют Data Base Engine);
· компилятор языка БД (обычно SQL);
· командный язык;
o набор утилит
Ядро СУБД отвечает за управление данными во внешней памяти, буферами оперативной памяти, транзакциями и журнализацию.
Можно выделить такие компоненты ядра, как
· менеджер данных,
· менеджер буферов,
· менеджер транзакций и
· менеджер журнала.
Функции этих компонентов взаимосвязаны, и для обеспечения корректной работы СУБД они должны взаимодействовать по тщательно проверенным протоколам. Ядро СУБД обладает собственным интерфейсом, не доступным пользователям напрямую и используемым в программах, производимых компилятором SQL (или в подсистеме поддержки выполнения таких программ), и утилитах БД. При использовании архитектуры «клиент-сервер» ядро является основной составляющей серверной части системы.
Командный язык служит для выполнения требуемых операций над данными. Он позволяет манипулировать данными, создавать прикладные программы, оформлять на экране и печатать формы ввода и вывода информации и т.п. Возможности СУБД в значительной степени определяются структурой и возможностями ее командного языка.
Такой язык обладает следующими средствами и характеристиками:
· средствами описания как хранимых данных, так и операций над ними (поиск и модификация);
· средствами работы с текстовыми, графическими и числовыми данными в различных представлениях;
· средствами защиты базы данных;
· возможностью определения нестандартных форматов и структур;
· вычислительными функциями;
· средствами форматирования экрана терминала и генераторами отсчетов.
Кроме того, он обеспечивает высокую производительность труда программиста.
Динамичное управление ссылками в реляционных базах позволяет выполнять соединение таблиц скрытно от пользователя, обеспечивая наиболее благоприятные условия для обработки. В этом случае язык позволяет описывать манипуляции уровня пользователя. Для работы с таблицами ему предоставляются простые операторы типа «создать», «добавить», «модифицировать», «уничтожить», «вставить». С помощью стандартных команд пользователь осуществляет следующие действия:
создает таблицы;
выбирает и/или изменяет данные в таблицах;
осуществляет поиск данных в соответствии с заданными критериями.
Манипулируя системными командами, можно читать сообщения, посылаемые с терминала, выбирать правила, описывающие структуру необходимой части данных, отыскивать и извлекать нужные данные, применять правила обработки, обновлять находящиеся в базе элементы. С помощью команд возможно также составлять запросы и сообщения. Типовое меню может включать в себя следующие варианты выбора: посылку или отображение сообщения, завершение сеанса работы, выбор запроса и т. п.
Для повседневного использования постоянно повторяющиеся команды могут быть записаны в файлы, после чего все выполняемые ими действия будут произведены автоматически. Это существенно повышает надежность системы, поскольку от пользователя не требуется знания всех ее средств, большую часть работы он выполняет, пользуясь меню.
Таким образом, язык БД предоставляет в распоряжение пользователя следующие возможности:
· выбирать мощные средства работы с файлами, позволяющие выбирать, модифицировать, сортировать, объединять, отыскивать данные и выполнять сложные запросы. Все пользовательские операции выполняются только над выбранными данными. За счет этого независимо от действий пользователя данные в файле обновляются лишь однократно;
· пользоваться собственными критериями выбора и автоматически назначаемыми ключами выборки;
· пользоваться встроенными генераторами масок для форматирования экранов терминала с заданием индивидуальных заголовков;
· применять генератор отчетов, работающий по схеме, составленной пользователем в диалоговом режиме;
· вызывать заранее составленные последовательности команд с помощью меню.
В командный язык входит несколько групп операций, полный набор которых специфичен для конкретной СУБД, но некоторое число команд, составляющее ядро языка, обязательно присутствует Это команды открытия и закрытия файлов, нахождения записи, ее вставки, модификации, создания и удаления, команды сохранения базы данных, группа команд упорядочивания записей, вывода на экран и устройства печати.
В СУБД операции можно выполнять по одной, последовательно вводя их с клавиатуры, или группами в автоматическом режиме. В этом случае команды предварительно записываются в специальный файл. Операции языка СУБД обычно имеют форму, близкую к естественному языку, и записываются в виде текста.
Основная функция компилятора языка БД — компиляция операторов языка БД в некоторую выполняемую программу. Основной проблемой реляционных СУБД является то, что языки этих систем (а это, как правило, SQL) непроцедурны, т. е. в операторе такого языка специфицируется некоторое действие над БД, но эту спецификацию не считают процедурой, она лишь в некоторой форме описывает условия совершения желаемого действия. Поэтому компилятор должен решить, каким образом выполнять оператор языка, прежде чем произвести программу. Результатом компиляции является выполняемая программа, представляемая в некоторых системах в машинных кодах, но более часто в выполняемом внутреннем машинно-независимом коде. В последнем случае реальное выполнение оператора производится с привлечением подсистемы поддержки времени выполнения, представляющей собой, по сути дела, интерпретатор этого внутреннего языка.
Для превращения текстовой команды в код, понятный машине, используют специальные преобразующие программы двух типов: интерпретаторы и компиляторы. Способы, которыми они обрабатывают текст, принципиально различны. В первом случае используется интерпретирующая система, которая по очереди преобразует команды в исполнимый код перед их непосредственным выполнением. Во втором случае сначала вся программа преобразуется (компилируется) в серию машинных команд и только после этого выполняется.
Первый способ имеет то преимущество, что при последовательном выполнении исходная программа занимает мало места в памяти. Кроме того, этот способ позволяет вводить команды с клавиатуры или пользуясь системой меню. Однако файл, обрабатываемый таким образом, выполняется крайне медленно. Компилирующий способ гораздо быстрее, но программа занимает много места в машинной памяти.
Компромиссное решение проблемы — применение так называемых псевдокомпиляторов, которые предварительно обрабатывают операторы исходной программы и лишь затем выполняют их в режиме интерпретации.
Хотя наблюдается тенденция к сближению двух основных способов выполнения команд СУБД, они существенно отличаются, что влияет на выбор конкретной системы в зависимости от целей ее использования.
СУБД с компиляторами в основном ориентированы на программистов, создающих сложные прикладные системы, так как предполагают более высокий уровень квалификации пользователя. СУБД с интерпретаторами предназначены для пользователей, обладающих начальными знаниями программирования. Системы с интерпретаторами взаимодействуют с пользователем в режиме, управляемом с помощью меню, и в режиме ввода команд с клавиатуры. Первый доступен пользователю, даже не знакомому с системой команд СУБД и их синтаксисом, поскольку обычно смысл команды записывается в позицию меню на естественном языке. Пользователю достаточно выбрать нужную команду и нажать клавишу выполнения. Однако, как показал опыт, этот режим привлекателен лишь на начальном этапе знакомства с системой. В дальнейшем необходимость последовательного выбора из большого количества выпадающих меню сильно замедляет работу. Кроме того, система меню обычно включает не все команды языка, некоторые из них остаются недоступными пользователю.
Второй режим позволяет управлять системой гораздо быстрее, но требует знания синтаксиса команд и способа их применения. Как правило, его используют опытные пользователи.
Отдельные утилиты БД обычно выделяют такие процедуры, которые слишком накладно выполнять с использованием языка БД, например загрузка и выгрузка БД, сбор статистики, глобальная проверка целостности БД и т. д. Утилиты программируются с использованием интерфейса ядра СУБД, а иногда даже с проникновением внутрь ядра.
При выборе СУБД руководствуются следующими требованиями:
возможность оперировать данными разного типа;
наличие языка запросов высокого уровня;
хранение данных в одном из стандартных форматов или наличие конвектора для соответствующих преобразований;
наличие возможностей работы в сетях;
наличие возможности обработки больших объемов информации;
наличие системы разграничения доступа к информации; наличие системы разграничений по функциям обработки информации;
наличие системы защиты данных от потерь из-за технических сбоев.
Дата публикования: 2014-08-30; Прочитано: 3202 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!