КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Организация баз данных ГИС 2 страница
Системы, основанные на инвертированных списках, иерархические и сетевые системы управления базами данных являлись предшественниками реляционных СУБД. К общим характеристикам ранних систем можно отнести следующие: 1.Эти системы активно использовали в течение многих лет, дольше, чем какую-либо из реляционных СУБД. В них накоплены большие базы данных, и поэтому одна из актуальных проблем информационных систем — использование их совместно с современными системами. 2. Системы не были основаны на каких-либо абстрактных моделях. Абстрактные представления ранних систем появились позже на основе анализа и выявления общих признаков у различных систем вместе с реляционным подходом. 3. Доступ к БД производился на уровне записей. Пользователи этих систем осуществляли навигацию в БД, используя языки программирования, расширенные функциями СУБД. Интерактивный доступ к БД поддерживался только путем создания соответствующих прикладных программ с собственным интерфейсом. 4. После появления реляционных систем большинство ранних систем было оснащено реляционными интерфейсами. Однако в большинстве случаев это не сделало их по-настоящему реляционными системами, поскольку оставалась возможность манипулировать данными в естественном для них режиме. К числу наиболее известных систем, основанных на инвертированных списках, относятся Datacom/DB компании Applied Data Research, Inc. (ADR), ориентированная на использование компьютеров основного класса фирмы IBM, и Adabas компании Software. Доступ к данным основан на инвертированных списках, что присуще практически всем современным реляционным СУБД, но в этих системах пользователи не имеют непосредственного доступа к инвертированным спискам (индексам). Внутренние интерфейсы систем, основанных на инвертированных списках, очень близки к пользовательским интерфейсам реляционных СУБД. Достоинства СУБД, основанных на инвертированных списках: развитость средств управления данными во внешней памяти; возможность построения вручную эффективных прикладных систем; возможность экономии памяти за счет разделения подобъектов (в сетевых системах). Недостатки этих СУБД: сложность пользования; необходимость информации о физической организации, от которой зависят прикладные программы; перегруженность логики системы деталями организации доступа к БД. К достоинствам реляционного подхода организации СУБД можно отнести: наличие небольшого набора абстракций, которые позволяют сравнительно просто моделировать большую часть распространенных предметных областей и допускают точные формальные определения, оставаясь интуитивно понятными; наличие простого и в то же время мощного математического аппарата, опирающегося главным образом на теорию множеств и математическую логику и обеспечивающего теоретический базис реляционного подхода к организации баз данных; возможность ненавигационного манипулирования данными без необходимости знания конкретной физической организации баз данных во внешней памяти. Реляционные системы не сразу получили широкое распространение. Хотя основные теоретические результаты в этой области были получены еще в 70-е годы XX в. и тогда же появились первые прототипы реляционных СУБД, долгое время считалось невозможным добиться эффективной реализации таких систем. Однако отмеченные ранее преимущества и постепенное накопление методов и алгоритмов организации реляционных баз данных и управления ими привели к тому, что уже в середине 80-х годов реляционные системы практически вытеснили с мирового рынка ранние СУБД. СУБД реляционного типа позволяют представить данные о пространственных объектах (точках, линиях и полигонах) и их характеристиках (атрибутах) в виде отношения или таблицы, строки которой (индексированные записи) соответствуют набору значений атрибутов объекта, а колонки (столбцы) обычно устанавливают тип атрибута, его размер и имя. В число атрибутов не входят геометрические атрибуты, описывающие их геометрию и топологию. Векторные записи координат объектов упорядочиваются и организуются с использованием особых средств. Связь между геометрическим описанием объектов и их семантикой в реляционной таблице устанавливается через уникальные номера — идентификаторы. В настоящее время основными недостатками реляционных СУБД являются: некоторая ограниченность (прямое следствие простоты) при использовании в так называемых нетрадиционных областях (наиболее распространенными примерами являются системы автоматизации проектирования), в которых требуются предельно сложные структуры данных; невозможность адекватного отражения семантики предметной области, так как представления знаний очень ограничены. Современные СУБД можно классифицировать в соответствии с используемой моделью данных [иерархическая, сетевая, реляционная, объектная, гибридная (элементы объектной с реляционной)]; в зависимости от объема поддерживаемых БД и числа пользователей [высший уровень, средний уровень, нижний уровень, настольные СУБД (рис. 3.8)]. Высший уровень СУБД поддерживают крупные БД (сотни и тысячи Гбайт и более), обслуживающие тысячи пользователей, например ORACLE7, ADABAS 5.3.2, SQL SERVER11. Реляционная СУБД Oracle!, corp. Oracle обладает широким диапазоном функциональных возможностей, включая поддержку двухфазной фиксации, тиражирования данных, хранимых процедур, триггеров, оперативного резервного копирования. Эта СУБД поддерживает БД, занимающую несколько физических дисков, хранящую новые типы данных, использует почти все аппаратные и программные платформы, а также протоколы передачи данных. SQL Server 10, сотр. Sybase — продукт, поддерживающий обработку в реальном времени и процессы решений. Он является СУБД одного уровня с Огас1е7, но имеет некоторые ограничения в плане масштабируемости и использует ограниченное число аппаратных и программных платформ.
Средний уровень СУБД поддерживают БД до нескольких сот Гбайт, обслуживают сотни пользователей. Представители: InterBase 3.3, Informix-On-Line7.0, Microsoft SQL Server 6.0. Среди реляционных СУБД Informix-On Line 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, соrр. Borland При использовании конкретной СУБД необходимо учитывать три ключевых фактора: архитектуру взаимодействия клиент/сервер; способ или метод реализации основных функций; уровень поддержки распределенных БД. Одно из главных условий, определяющих необходимость использования технологии баз данных при создании ГИС, — поддержка современными СУБД сетевых возможностей хранения и использования технологий локальных сетей (LAN) и удаленных сетей в так называемых распределенных БД. Тем самым достигаются оптимальное использование вычислительных ресурсов и возможность коллективного доступа пользователей к запрашиваемым БД. Блок анализа данных, являясь одним из трех крупных модулей ГИС (ввода, обработки и вывода), составляет ядро геоинформационных технологий, все остальные операции обеспечивают возможность выполнения системой ее основных аналитических и моделирующих функций. Содержание аналитического блока современных программных средств сформировалось в процессе реализации конкретных ГИС в форме устоявшегося набора операций или групп операций, наличие, отсутствие или эффективность (неэффективность) которых в составе ГИС могут служить показателем его качества. Существуют различные классификации, позволяющие сгруппировать элементарные аналитические операции или их последовательности в группы. Обобщая их и опираясь на состав и структуру аналитических модулей, можно выделить следующие группы операций: 1. Действия по переструктуризации данных. 2. Трансформация проекций и изменение систем координат. 3. Операции вычислительной геометрии. 4. Оверлейные операции (наложение разноименных и разнотипных слоев данных). 5. Общие аналитические, графоаналитические и моделирующие функции. Результаты обработки данных должны трансформироваться в «человекочитаемый» документ. Программные средства ГИС включают достаточно широкий набор средств генерации выходных данных. Документы, генерируемые на выходе: табличные, графические, картографические. К техническим средствам, используемым для генерации документов, относятся средства машинной графики, конвертеры данных, позволяющие преобразовывать данные из одних форматов в другие без потерь их геометрических и семантических атрибутов, графопостроители, графические дисплеи с высоким разрешением. К числу функций СУБД принято относить: управление данными во внешней памяти; управление буферами оперативной памяти; управление транзакциями; ведение журнала изменений данных; поддержка языков базы данных (рис. 3.9). Функция непосредственного управления данными во внешней памяти включает обеспечение необходимых структур внешней памяти как для хранения данных, непосредственно входящих в БД, так и для служебных целей, например для убыстрения доступа к данным в некоторых случаях (обычно для этого используются индексы). В некоторых реализациях СУБД активно используются возможности существующих файловых систем, в других работа производится вплоть до уровня устройств внешней памяти. В развитых СУБД пользователи в любом случае не обязаны знать, использует ли СУБД файловую систему, и если использует, то как организованы файлы. СУБД обычно работают с БД значительного размера, который существенно больше доступного объема оперативной памяти. Если при обращении к любому элементу данных будет производиться обмен с внешней памятью, то вся система будет работать со скоростью устройства внешней памяти. Практически единственный способ реального увеличения этой скорости — буферизация данных в оперативной памяти. Даже если операционная система производит общесистемную буферизацию (как в случае ОС 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); командный язык; набор утилит (рис. 3.10). Ядро СУБД отвечает за управление данными во внешней памяти, буферами оперативной памяти, транзакциями и журнализацию. Можно выделить такие компоненты ядра, как менеджер данных, менеджер буферов, менеджер транзакций и менеджер журнала. Функции этих компонентов взаимосвязаны, и для обеспечения корректной работы СУБД они должны взаимодействовать по тщательно' проверенным протоколам. Ядро СУБД обладает собственным интерфейсом, не доступным пользователям напрямую и используемым в программах, производимых компилятором SQL (или в подсистеме поддержки выполнения таких программ), и утилитах БД. При использовании архитектуры «клиент-сервер» ядро является основной составляющей серверной части системы. Командный язык служит для выполнения требуемых операций над данными. Он позволяет манипулировать данными, создавать прикладные программы, оформлять на экране и печатать формы ввода и вывода информации и т.п. Возможности СУБД в значительной степени определяются структурой и возможностями ее командного языка. Такой язык обладает следующими средствами и характеристиками: средствами описания, как хранимых данных, так и операций над ними (поиск и модификация); средствами работы с текстовыми, графическими и числовыми данными в различных представлениях; средствами защиты базы данных; возможностью определения нестандартных форматов и структур; вычислительными функциями; средствами форматирования экрана терминала и генераторами отсчетов. Кроме того, он обеспечивает высокую производительность труда программиста. Динамичное управление ссылками в реляционных базах позволяет выполнять соединение таблиц скрытно от пользователя, обеспечивая наиболее благоприятные условия для обработки. В этом случае язык позволяет описывать манипуляции уровня пользователя. Для работы с таблицами ему предоставляются простые операторы типа «создать», «добавить», «модифицировать», «уничтожить», «вставить». С помощью стандартных команд пользователь осуществляет следующие действия: создает таблицы; выбирает и/или изменяет данные в таблицах; осуществляет поиск данных в соответствии с заданными критериями. Манипулируя системными командами, можно читать сообщения, посылаемые с терминала, выбирать правила, описывающие структуру необходимой части данных, отыскивать и извлекать нужные данные, применять правила обработки, обновлять находящиеся в базе элементы. С помощью команд, возможно, также составлять запросы и сообщения. Типовое меню может включать в себя следующие варианты выбора: посылку или отображение сообщения, завершение сеанса работы, выбор запроса и т. п. Для повседневного использования, постоянно повторяющиеся команды могут быть записаны в файлы, после чего все выполняемые ими действия будут произведены автоматически. Это существенно повышает надежность системы, поскольку от пользователя не требуется знания всех ее средств, большую часть работы он выполняет, пользуясь меню. Таким образом, язык БД предоставляет в распоряжение пользователя следующие возможности: выбирать мощные средства работы с файлами, позволяющие выбирать, модифицировать, сортировать, объединять, отыскивать данные и выполнять сложные запросы. Все пользовательские операции выполняются только над выбранными данными. За счет этого независимо от действий пользователя данные в файле обновляются лишь однократно; пользоваться собственными критериями выбора и автоматически назначаемыми ключами выборки; пользоваться встроенными генераторами масок для форматирования экранов терминала с заданием индивидуальных заголовков; применять генератор отчетов, работающий по схеме, составленной пользователем в диалоговом режиме; вызывать заранее составленные последовательности команд с помощью меню. В командный язык входит несколько групп операций, полный набор которых специфичен для конкретной СУБД, но некоторое число команд, составляющее ядро языка, обязательно присутствует Это команды открытия и закрытия файлов, нахождения записи, ее вставки, модификации, создания и удаления, команды сохранения базы данных, группа команд упорядочивания записей, вывода на экран и устройства печати. В СУБД операции можно выполнять по одной, последовательно вводя их с клавиатуры, или группами в автоматическом режиме. В этом случае команды предварительно записываются в специальный файл. Операции языка СУБД обычно имеют форму, близкую к естественному языку, и записываются в виде текста. Основная функция компилятора языка БД — компиляция операторов языка БД в некоторую выполняемую программу. Основной проблемой реляционных СУБД является то, что языки этих систем (а это, как правило, SQL) непроцедурны, т. е. в операторе такого языка специфицируется некоторое действие над БД, но эту спецификацию не считают процедурой, она лишь в некоторой форме описывает условия совершения желаемого действия. Поэтому компилятор должен решить, каким образом выполнять оператор языка, прежде чем произвести программу. Результатом компиляции является выполняемая программа, представляемая в некоторых системах в машинных кодах, но более часто в выполняемом внутреннем машинно-независимом коде. В последнем случае реальное выполнение оператора производится с привлечением подсистемы поддержки времени выполнения, представляющей собой, по сути дела, интерпретатор этого внутреннего языка. Для превращения текстовой команды в код, понятный машине, используют специальные преобразующие программы двух типов: интерпретаторы и компиляторы. Способы, которыми они обрабатывают текст, принципиально различны. В первом случае используется интерпретирующая система, которая по очереди преобразует команды в исполнимый код перед их непосредственным выполнением. Во втором случае сначала вся программа преобразуется (компилируется) в серию машинных команд и только после этого выполняется. Первый способ имеет то преимущество, что при последовательном выполнении исходная программа занимает мало места в памяти. Кроме того, этот способ позволяет вводить команды с клавиатуры или пользуясь системой меню. Однако файл, обрабатываемый таким образом, выполняется крайне медленно. Компилирующий способ гораздо быстрее, но программа занимает много места в машинной памяти. Компромиссное решение проблемы — применение так называемых псевдокомпиляторов, которые предварительно обрабатывают операторы исходной программы и лишь затем выполняют их в режиме интерпретации. Хотя наблюдается тенденция к сближению двух основных способов выполнения команд СУБД, они существенно отличаются, что влияет на выбор конкретной системы в зависимости от целей ее использования. СУБД с компиляторами в основном ориентированы на программистов, создающих сложные прикладные системы, так как предполагают более высокий уровень квалификации пользователя. СУБД с интерпретаторами предназначены для пользователей, обладающих начальными знаниями программирования. Системы с интерпретаторами взаимодействуют с пользователем в режиме, управляемом с помощью меню, и в режиме ввода команд с клавиатуры. Первый доступен пользователю, даже не знакомому с системой команд СУБД и их синтаксисом, поскольку обычно смысл команды записывается в позицию меню на естественном языке. Пользователю достаточно выбрать нужную команду и нажать клавишу выполнения. Однако, как показал опыт, этот режим привлекателен лишь на начальном этапе знакомства с системой. В дальнейшем необходимость последовательного выбора из большого количества выпадающих меню сильно замедляет работу. Кроме того, система меню обычно включает не все команды языка, некоторые из них остаются недоступными пользователю. Второй режим позволяет управлять системой гораздо быстрее, но требует знания синтаксиса команд и способа их применения. Как правило, его используют опытные пользователи. Отдельные утилиты БД обычно выделяют такие процедуры, которые слишком накладно выполнять с использованием языка БД, например загрузка и выгрузка БД, сбор статистики, глобальная проверка целостности БД и т. д. Утилиты программируются с использованием интерфейса ядра СУБД, а иногда даже с проникновением внутрь ядра.
Дата добавления: 2015-04-29; Просмотров: 907; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |