Информатика. 1. Введение. Предмет, цель, методы и средства курса
Скачать 5.12 Mb.
|
Администрирование баз данных Лекция 13 Технологии баз данных и знаний База данных является ядром любой информационной системы. Информационная система включаетспециальным образом организованные компоненты, определяющие и регулирующие сбор, накопление, хранение и обработку данных. Она состоит из следующих основных частей: данные, аппаратное обеспечение, программное обеспечение, организационно-методические средства и пользователи. Данные – наиболее важный компонент с точки зрения пользователей базы данных. Данные являются связующим звеном, своеобразным мостом между компьютером и человеком в информационной системе Аппаратное обеспечение – это набор физических устройств, на которых располагается база данных, СУБД и другие компоненты системы. Некоторые СУБД предназначены для работы только с конкретными типами оборудования, другие могут работать с широким кругом аппаратного обеспечения. Для работы любой СУБД требуется некоторый минимум оперативной и внешней памяти, но его может оказаться недостаточно для достижения приемлемой производительности системы. За счет оптимального выбора аппаратного обеспечения можно в значительной мере повысить производительность СУБД. Программное обеспечение. Этот компонент включает операционную систему, сетевое программное обеспечение, если СУБД используется в сети, программное обеспечение самой СУБД, приложения. Одни СУБД могут работать только под управлением определенных операционных систем, другие – под управлением различных операционных систем. Для успешной работы аппаратные и программные средства должны быть подобраны с учетом возможности согласованной совместной работы. К организационно-методическим средствам относят инструкции и правила, которые должны учитываться при проектировании и эксплуатации базы данных. К таким средствам относятся, например, порядок регистрации персоны в качестве пользователя базы данных, правила запуска и останова СУБД, инструкции по использованию каждого инструмента СУБД или приложения и т.п. Для успешного использования СУБД всем пользователям необходимо предоставить документацию, регламентирующую их действия по работе с базой данных. Пользователем базы данных называют лицо или прикладную программу, которые могут обращаться с командами и/или запросами к базе данных и получать от нее результаты обращений. Людей, которые работают с базой данных, можно разделить на две категории: конечные пользователи базы данных и обслуживающий персонал. Конечные пользователи базы данных – это специалисты предметной области, которым требуется информация из базы данных для выполнения прямых служебных обязанностей. Например, конечными пользователями базы данных могут быть бухгалтер, руководитель, менеджер отдела продаж. Обслуживающий персонал – люди, ответственные за работу базы данных и соответствующего прикладного программного обеспечения. К ним относятся разработчики программного обеспечения, а также администраторы базы данных. Разработчики программного обеспечения играют роль посредников между базой данных и конечными пользователями, так как создают удобный пользовательский интерфейс в рамках конкретного приложения. Администрирование базы данных предусматривает выполнение функций, направленных на обеспечение надежного и эффективного функционирования базы данных, а также адекватности ее содержания информационным потребностям пользователей, отображения в базе данных актуального состояния предметной области. Функции администратора базы данных весьма обширны и по-разному трактуются в различных организациях. Структуризация функций администрирования базы данных была предложена американским национальным институтом стандартов ANSI в 1975 г. В соответствии с этим подходом в администрировании базы данных можно выделить следующие направления: · администрирование предметной области, обеспечивающее адекватность отображения в концептуальной схеме базы данных тех изменений, которые происходят в предметной области; · администрирование приложений,ответственноеза обеспечение представления базы данных для различных групп пользователей в соответствии с их потребностями; · администрирование базы данных (хранения данных), включающее сохранность базы данных и максимизацию ее производительности; · администрирование безопасности данных, которое обеспечивает представление пользователям полномочий на доступ к данным в базе данных и соответствующим образом настраивает системные средства защиты от несанкционированного доступа. Каждая из перечисленных групп функций может возлагаться на одно либо несколько лиц в зависимости от масштабов системы, количества пользователей, количества и уровня сложности приложений, а также других факторов. В простейших случаях, например, при работе с настольными СУБД, одно лицо может совмещать функции и пользователя, и разработчика приложений, и администратора базы данных. В достаточно полный набор функций администратора баз данных включаются следующие: · контроль целостности и восстановление базы данных; · настройка СУБД на конкретные условия применения; · настройка СУБД для эффективной обработки данных и обслуживания пользователей; · сбор и анализ статистики функционирования базы данных; · реорганизация (реструктуризация) базы данных в соответствии с изменениями предметной области; · подключение новых разработчиков и пользователей, назначение паролей, привилегий доступа к конкретным данным; · контроль изменения объема базы данных, определение целесообразности модернизации оборудования; · консультирование пользователей по особенностям используемой версии СУБД и инструментов разработки запросов и других приложений; · разработка процедур использования типичных средств СУБД и документации, регламентирующей действия пользователей по отношению к базе данных. Кроме того, на администратора баз данных возлагаются мониторинг и оптимизация производительности базы данных. Рольадминистратора баз данных очень важна для современных предприятий, организаций. Выбор лица или группы лиц на эту должность должен учитывать, что администратор базы данных – это: · управляющий данными, а не их хозяин; · эксперт высшего уровня, обеспечивающий службу эксплуатации базы данных решениями по процедурам и регламентам работы; · лицо, принимающее окончательные решения в своей области, и человек, обладающий способностями к общению, совместному планированию и компромиссам. Управление буферами оперативной памяти Объём информации, хранящейся в базе данных, с которой работает СУБД, обычно достаточно велик и практически всегда превышает доступный объем оперативной памяти. При этом время доступа к данным, хранящимся в оперативной памяти, существенно меньше, чем к данным, хранящимся на устройствах внешней памяти. Очевидно, что если при обращении к любому элементу данных будет производится обмен с внешней памятью, то вся система будет работать со скоростью устройства внешней памяти. Увеличения скорости обмена данными Можно достичь, используя буферизацию данных в оперативной памяти. При этом, даже если операционная система производит общесистемную буферизацию (как в случае ОС UNIX), этого недостаточно для целей СУБД, которая располагает гораздо большей информацией о полезности буферизации той или иной части базы данных. Поэтому в СУБД обычно поддерживается собственный набор буферов оперативной памяти с собственным механизмом замены буферов. примечание следует отметить, что существует направление развития СУБД, ориентированное на постоянное присутствие в оперативной памяти всей информации из базы данных. это направление основывается на предположении, что в будущем объем оперативной памяти компьютеров будет настолько велик, что буферизация станет не нужна. если исходить из темпов снижения цен на оперативную память, то такие СУБД действительно могут стать актуальными в достаточно недалеком будущем. Транзакцией называется последовательность операций над базой данных, рассматриваемых СУБД как единое целое. Если все операции успешно выполнены, то транзакция также считается успешно выполненной и СУБД фиксирует (COMMIT) все изменения данных, произведенные этой транзакцией (то есть заносит изменения во внешнюю память). Если же хотя бы одна операция транзакции заканчивается неудачей, то транзакция считается невыполненной и производится откат (ROLLBACK) — отмена всех изменений данных, произведенных в ходе выполнения транзакции, и возврат базы данных к состоянию до начала выполнения транзакции. Управление транзакциями необходимо для поддержания логической целостности базы данных. Поддержка механизма транзакций является обязательным условием даже однопользовательских, а тем более для многопользовательских СУБД. То свойство, что каждая транзакция начинается при целостном состоянии базы данных и оставляет это состояние целостным после своего завершения, делает очень удобным использование понятия транзакции как единицы активности пользователя по отношению к базе данных. При соответствующем управлении параллельно выполняющимися транзакциями со стороны СУБД каждый из пользователей может, в принципе, ощущать себя единственным пользователем СУБД. С управлением транзакциями в многопользовательской СУБД связаны важные понятия сериализации транзакций и сериального плана выполнения смеси транзакций. Под сериализациями параллельно выполняющихся транзакций понимается такое планирование их работы, при котором суммарный результат смеси транзакций эквивалентен результату их некоторого последовательного выполнения. Сериальный план выполнения смеси транзакций - это такой план, который приводит к сериализации транзакций. Попятно, что если удается добиться действительно сериального выполнения смеси транзакций, то для каждого пользователя, по инициативе которого образована транзакция, присутствие других транзакций будет незаметно (если не считать некоторого замедления работы по сравнению с однопользовательским режимом). Существует несколько базовых алгоритмов сериализации транзакций. В централизованных СУБД наиболее распространены алгоритмы, основанные на синхронизационных захватах объектов базы данных. При использовании любого алгоритма сериализации возможны конфликты между несколькими транзакциями по доступу к объектам базы данных, В этом случае для поддержания сериализации необходимо выполнить откат одной или нескольких транзакций. Это один из случаев, когда пользователь многопользовательской СУБД может реально (и достаточно неприятно) ощутить присутствие в системе транзакций других пользователей. Журнализация Одним из основных требований к СУБД является надежность хранения данных во внешней памяти. Под надежностью хранения понимается то, что СУБД должна быть в состоянии восстановить последнее согласованное состояние БД после любого аппаратного или программного сбоя. Аппаратные сбои обычно подразделяются на два вида: мягкие сбои связаны с внезапной остановкой работы компьютера. Обычно являются следствием внезапного выключения питания или "зависания" операционной системы (что особенно характерно для операционных систем Windows); жесткие сбои характеризуются потерей информации на носителях внешней памяти. Программные сбои обычно возникают вследствие ошибок в программах. Причем эти ошибки могут быть как в самой СУБД, что может привести к аварийному завершению ее работы, так и в пользовательской программе. Первый случай можно рассматривать как разновидность мягкого аппаратного сбоя. Во втором случае незавершенной остается только одна транзакция. В любом случае для восстановления информации в базе данных необходимо иметь некоторую дополнительную информацию. Таким образом, для поддержания надежности хранения данных требуется избыточность данных. Причем та часть информации, которая используется для восстановления, должна храниться особо надежно. Наиболее распространенным методом поддержания такой избыточной информации является ведение журнала изменений базы данных. Журнал представляет собой особую часть базы данных, недоступную пользователям СУБД и поддерживаемую с особой тщательностью (иногда используются две копии журнала, располагаемые на разных физических дисках), в которую поступают записи обо всех изменениях основной части базы данных. В разных СУБД изменения базы данных журнализируются на разных уровнях: иногда запись в журнале соответствует некоторой логической операции изменения базы данных, иногда — минимальной внутренней операции модификации страницы внешней памяти. Могут также использоваться одновременно оба подхода. Во всех случаях придерживаются стратегии «упреждающей» записи в журнал (так называемого протокола Write Ahead Log — WAL). Несколько утрированно можно сказать, что эта стратегия заключается в том, что запись об изменении любого объекта базы данных должна быть занесена в журнал до того, как будет выполнено и зафиксировано изменение этого объекта. Если в СУБД корректно соблюдается протокол WAL, то с помощью журнала можно решить все проблемы восстановления базы данных после любого сбоя. Самая простая ситуация восстановления — индивидуальный откат транзакции. Строго говоря, для этого не требуется общесистемный журнал изменений базы данных. Достаточно для каждой транзакции поддерживать локальный журнал операций модификации базы данных, выполненных в этой транзакции, и производить откат транзакции путем выполнения обратных операций, следуя' от конца локального журнала. В некоторых СУБД так и делают, но в большинстве систем локальные журналы не поддерживают, а индивидуальный откат транзакции выполняют по общесистемному журналу, для чего все записи, относящиеся к одной транзакции, связывают обратным списком (от конца к началу). При мягком сбое во внешней памяти основной части базы данных могут находиться объекты, модифицированные транзакциями, не закончившимися к моменту сбоя, и могут отсутствовать объекты, модифицированные транзакциями, которые к моменту сбоя успешно завершились (по причине использования буферов оперативной памяти, содержимое которых при мягком сбое пропадает). При соблюдении протокола WAL во внешней памяти журнала должны гарантированно находиться записи, относящиеся к операциям модификации обоих видов объектов. Целью процесса восстановления после мягкого сбоя является приведение внешней памяти основной части базы данных в такое состояние, которое возникло бы при фиксации во внешней памяти изменений всех завершившихся транзакций и которое не содержало бы никаких следов незаконченных транзакций. Для того чтобы этого добиться, сначала производят откат незавершенных транзакций, а потом повторно воспроизводят те операции завершенных транзакций, результаты которых не отображены во внешней памяти. Для восстановления базы данных после жесткого сбоя используют журнал и архивную копию базы данных. Архивная копия — это полная копия базы данных к моменту начала заполнения журнала (хотя имеется много вариантов трактовки смысла архивной копии). Для нормального восстановления базы данных после жесткого сбоя, естественно, необходимо, чтобы журнал не пропал. Тогда восстановление базы данных состоит в том, что, исходя из архивной копии, по журналу воспроизводится работа всех транзакций, которые закончились к моменту сбоя. В принципе можно даже воспроизвести работу незавершенных транзакций и продолжить их работу после завершения восстановления. Однако в реальных системах это обычно не делается, поскольку процесс восстановления после жесткого сбоя является достаточно длительным. Поддержка языков баз данных Для работы с информацией, хранящейся в базе данных, используются специальные языки, носящее общее название языков баз данных. Чаще всего выделяются два языка: язык определения схем данных (Schema Definition Language, SDL) служит главным образом для определения логической структуры базы данных; язык манипулирования данными (Data Manipulation Language, DML) содержит набор операторов манипулирования данными, то есть операторов, позволяющих заносить данные в базу, а также удалять, модифицировать или выбирать существующие данные. Несколько разных специализированных языков баз данных поддерживалось лишь в ранних СУБД. В современных СУБД обычно поддерживается единый интегрированный язык, содержащий все необходимые средства для работы с базой данных, начиная от ее создания, и обеспечивающий базовый пользовательский интерфейс с базами данных. Стандартным языком наиболее распространенных в настоящее время реляционных СУБД является язык SQL (Structured Query Language). Таким образом, указанные выше языки баз данных на сегодняшний день фактически являются подмножествами единого стандартного языка SQL. Язык SQL позволяет определять схему реляционной базы данных и манипулировать данными. При этом именование объектов базы данных (для реляционной базы данных — именование таблиц и их полей) поддерживается на языковом уровне в том смысле, что компилятор языка SQL производит преобразование имен объектов в их внутренние идентификаторы на основании специально поддерживаемых служебных таблиц-каталогов. |