Базы данных / Лекции и прочее / БД (конспект)
.doc
За несколько последних десятилетий исследования в области теории баз данных оказали потрясающее влияние на экономику. Достижения в этой области стали основой фундаментальных разработок в сфере коммуникационных систем, транспорта и логистики, финансового менеджмента, методов доступа к научной литературе, а также большого количества гражданских и военных приложений.
Можно утверждать, что появление баз данных оказалось самым важным достижением в области программного обеспечения. Базы данных лежат в основе информационных систем, которые коренным образом изменяют характер деятельности многих организаций. С момента своего появления технология баз данных стала увлекательной областью деятельности, которая служит катализатором для многих значительных достижений в сфере информатизации.
Термином «база данных» обозначается некий набор взаимосвязанных данных, а специальное программное обеспечение, которое осуществляет все операции с этими данными, называют системой управления базой данных (СУБД). Более строгие и точные определения для этих понятий будут рассмотрены позднее.
Базы данных стали неотъемлемой частью нашей повседневной жизни:
-
покупка в супермаркете;
-
использование кредитных карточек;
-
оформление поездки в транспортном агентстве;
-
заказ книг в библиотеке;
-
покупка в электронном Интернет-магазине;
-
информационная система университета (от приемной компании до оформления приложения к диплому).
Краткий экскурс в историю. Непосредственными предшественниками баз данных являются файловые системы. Хотя такие системы давно устарели, существует несколько причин, по которым с ними следует хотя бы кратко познакомиться:
-
понимание проблем, присущих файловым системам, позволяет избежать их повторения в базах данных;
-
файловые системы до сих пор находят применение и принципы их работы нужно знать при переходе к новым технологиям.
Файловые системы были первой попыткой компьютеризации известных всем ручных картотек. Обычно в организации содержится много таких картотек (иногда в виде подшивок документов), где хранятся данные по определенной сфере деятельности. Если нужно получить какую-то информацию, то картотека просматривается. Для ускорения этого процесса могут использоваться различные алгоритмы индексации (например, группировка логически связанных элементов картотеки, их сортировка по определенному признаку и т.п.).
Файловые системы реализуют децентрализованный подход к хранению и обработке данных, необходимых для функционирования некоторой организации. Эта децентрализация обусловлена различием функций, выполняемых отдельными структурными подразделениями, и, соответственно, различными видами используемых данных (бухгалтерия, деканат, библиотека, здравпункт и т.п.).
Рисунок ХХХ
Недостатки файловых систем:
-
Когда данные разделены и изолированы друг от друга, доступ к ним для получения обобщенной информации становится затруднительным. В большинстве случаев приходится создавать временный файл, объединяющий исходные файлы.
-
Наличие избыточных данных за счет неконтролируемого дублирования одних и тех же элементов данных в разных файлах. Как следствие, возникает неэкономное расходование ресурсов памяти, а также создаются предпосылки для противоречий в данных, что нарушает целостность данных.
-
Жесткая зависимость программ от данных, поскольку структура файла и способ хранения данных обязательно фиксируются в тексте программы приложения. Следовательно, при любых изменениях в структуре файла приходится вносить изменения во все программы, которые работают с этим файлом.
-
Несовместимость форматов отдельных файлов, поскольку приложения для работы с этими файлами чаще всего создаются разными программистами с использованием разных средств программирования.
-
Фиксированный набор запросов, которые изначально заложены программистами в приложение на этапе его создания, и отсутствие универсальных средств для расширения этого набора. При эксплуатации приложения, когда возникает необходимость модифицировать этот набор или сконструировать новые запросы, приходится привлекать квалифицированных специалистов, способных разобраться в тексте программы приложения.
Несмотря на перечисленные недостатки, информационные системы с файловой архитектурой до сих пор находят применение во многих организациях, обеспечивая «кусочную» («островную») автоматизацию их деятельности. На первый взгляд кажется, что с помощью такого подхода можно постоянно расширять сферу автоматизации, приобретая (или разрабатывая самостоятельно) недорогие дополнительные подсистемы. У многих даже создается иллюзия постоянного прогресса (особенно с учетом необходимости разрешения нескончаемых проблем по налаживанию «мостов между островами»). Однако, если посчитать все затраты по сопровождению такого «зоопарка», а также учесть многие неудобства для пользователей, то быстро выясняется, что экономия средств практически отсутствует и давно пора переходить на интегрированную систему с централизованным управлением данными.
Принципы централизованного управления данными. Основой централизованного управления данными является база данных как набор структурированных и логически взаимосвязанных данных, которые удовлетворяют информационные потребности большого количества пользователей. База данных — это единое, большое хранилище данных, которые одновременно используются представителями разных подразделений в составе организации (фирмы), т.е. является общим корпоративным ресурсом. Вместо разрозненных файлов с избыточными данными, в которых могут присутствовать противоречия, здесь все данные собраны вместе, причем каждый элемент данных имеется в единственном экземпляре.
Принципиальным моментом является то, что в базе данных хранятся не только рабочие данные, но и их описание. Элементы описания данных принято называть метаданными (meta-data), т.е. данными о данных. Метаданные выступают в виде системного каталога или словаря данных. Именно эти элементы БД обеспечивают независимость приложений от организации (структуры и формы хранения) данных.
Для повышения эффективности работы с хранилищем данных предусматриваются специальные программные средства — система управления базой данных (СУБД). СУБД — это программное обеспечение, которое позволяет создать базу данных в соответствии с имеющимся описанием ее структуры, а затем поддерживать БД в рабочем состоянии, осуществляя контролируемый доступ к данным со стороны пользователей.
СУБД предоставляет следующие возможности.
-
Создание БД с помощью директив языка определения данных (Data Definition Language — DDL). Язык DDL позволяет:
-
указать структурную организацию данных (например, структуру таблиц для хранения отдельных элементов данных);
-
задать тип данных и ограничения на допустимые значения.
-
Предоставление инструментов для обращения к данным в виде директив языка манипулирования данными (Data Manipulation Language — DML). Для любой СУБД работа с данными сводится к выполнению следующих операций:
-
INSERT — добавление новых элементов данных;
-
DELETE — удаление существующих элементов данных, которые стали ненужными пользователям;
-
UPDATE — обновление значений для существующих элементов данных;
-
SEARCH, SELECT — поиск (выбор) данных по заданному признаку (критерию).
Язык DML часто называют языком запросов, поскольку все перечисленные операции манипулирования данными выполняются с помощью запросов соответствующих типов (запрос на добавление, запрос на удаление, запрос на обновление, запрос на поиск). Наличие такого языка снимает ограничение файловых систем, когда пользователь имеет дело только с фиксированным набором запросов, заложенных в приложение при его разработке.
-
Предоставление контролируемого доступа к БД с помощью следующих средств:
-
защита от несанкционированного доступа (разграничение полномочий и прав доступа к данным, защита паролем, шифрование данных);
-
автоматическая поддержка целостности данных, что обеспечивает отсутствие противоречий между отдельными элементами данных;
-
управление совместным доступом к данным при параллельной работе приложений;
-
восстановление БД при нарушениях ее целостности в результате аппаратных сбоев или программных ошибок;
-
ведение системного каталога (словаря данных) с описанием БД.
Общие сведения о языке SQL. В настоящее время многими СУБД поддерживается стандартизованный язык SQL (Structured Query Language), который фактически является конкретной реализацией языков DDL и DML. Этот язык обладает всеми функциональными возможностями, которые необходимы для управления базой данных:
-
организация данных — определение и изменение структуры представления данных, а также описание взаимосвязей между отдельными элементами данных;
-
обработка данных — извлечение (выборка) данных, а также изменение содержимого БД (добавление новых элементов данных, обновление или удаление имеющихся данных);
-
управление доступом к данным — назначение пользователям прав и полномочий по работе с данными (защита от несанкционированного доступа), координация совместной работы с данными в многопользовательском режиме.
Директивы языка SQL встраиваются в современные языки программирования, что дает возможность стандартным способом получать доступ к БД из прикладных программ. Большинство промышленных СУБД содержат языки программирования на основе SQL (например, язык PL/SQL для СУБД Oracle), что позволяет создавать полноценные процедуры обработки данных на сервере БД с использованием операторов цикла, ветвления и т.п.
Среда централизованного управления данными. Наиболее полным воплощением концепции централизованного управления данными являются информационные системы, которые называются банками данных. Банк данных (БнД) — это организационно-технический комплекс, который включает в себя собственно хранимые данные, а также технические и программные средства для обработки, хранения и выдачи пользователям необходимой информации. Основные компоненты, которые входят в состав банка данных, показаны на рис. ХХХ.
Рисунок ХХХ — Архитектура банка данных
Прежде всего, для работы СУБД и пользовательских приложений требуется некоторое аппаратное обеспечение — от единственного персонального компьютера или одного мэйнфрейма до вычислительной сети из многих компьютеров, что определяется потребностями конкретных пользователей.
Наиболее распространенная конфигурация включает в себя клиентские ПК и центральную ЭВМ — сервер БД, который обслуживает запросы к БД. Для крупных организаций с большим количеством удаленных филиалов к центральному серверу, установленному в главном офисе, рекомендуется добавлять региональные серверы, каждый из которых содержит соответствующую часть общей БД. Такая структура, которую называют распределенной БД, позволяет обеспечить достаточно быстрый доступ к данным без применения высокоскоростных магистральных каналов связи.
Программное обеспечение банка данных охватывает: операционную систему и другое системное ПО; СУБД; прикладные программы. Современные СУБД имеют в своем составе собственные инструменты 4-го поколения для быстрой разработки приложений с использованием встроенных языков запросов, генераторов отчетов и экранных форм. Эти инструменты позволяют существенно повысить производительность труда программистов.
Словарь данных предназначен для хранения общих сведений обо всех информационных ресурсах банка:
-
описание предметной области — перечень информационных объектов, их свойства и взаимоотношения; источники возникновения данных;
-
описание хранимых данных — наименования элементов данных, их возможные значения и формат представления; взаимосвязи между структурными элементами БД;
-
коды защиты данных, права доступа к данным для отдельных пользователей.
Реализовать БнД как полностью автоматическую систему на всех этапах ее жизненного цикла не представляется возможным, т.к. область деятельности, которую обеспечивает БнД, подвержена постоянным изменениям: изменяются границы этой области, характер происходящих бизнес-процессов, информационные потребности пользователей и др. Следовательно, как автоматизированная человеко-машинная система, БнД включает в себя обслуживающий персонал, состоящий из нескольких категорий специалистов:
-
администратор БнД со своей группой, которая отвечает за организацию работ по созданию, внедрению и эффективной эксплуатации БнД с учетом всех информационных потребностей со стороны пользователей БнД;
-
прикладные программисты, которые осуществляют разработку и сопровождение программ, предназначенных для решения пользовательских задач;
-
аналитики, которые являются посредниками между конечными пользователями и прикладными программистами;
-
системные программисты.
Администратор БнД и его группа — это основной управляющий орган банка данных. На этапах создания и внедрения БнД администратор, выступающий идеологом системы и ее главным конструктором, руководит следующими видами работ:
-
анализ информационных потребностей пользователей и проектирование БД с учетом этих потребностей, т.е. выбор структуры представления данных;
-
выбор и приобретение аппаратно-программных средств, подготовка ТЗ на самостоятельную разработку прикладных программ;
-
подбор и организация обучения специалистов по эксплуатации БнД.
В процессе эксплуатации БнД администратор обязан:
-
следить, чтобы удовлетворялись текущие информационные потребности пользователей, а также изучать их перспективные требования;
-
обеспечивать реализацию мер по информационной безопасности;
-
следить за производительностью БнД (скорость обработки запросов), при необходимости изменять методы хранения данных и доступа к ним;
-
координировать вопросы технического обеспечения системы исходя из требований, предъявляемых базой данных;
-
осуществлять общее руководство работой системных и прикладных программистов;
-
решать вопросы развития БнД, его обновления и реорганизации в соответствии с концептуальными изменениями, происходящими в предметной области.
Функции аналитика заключаются в том, чтобы прикладные задачи конечного пользователя представить в формализованном виде. Конечный пользователь излагает стоящие перед ним задачи на языке своей профессии, а искусство аналитика состоит в умении по этой постановке построить формальную модель (математическую или какую-то другую). Результаты работы аналитика служат исходным представлением задачи для прикладного программиста, который должен преобразовать продукт деятельности аналитика в готовую прикладную программу.
Системные программисты занимаются установкой и настройкой всех программных средств (системных и прикладных), необходимых для работы БнД, а также осуществляют сервисную поддержку системы (создание резервных копий БД, восстановление данных в случае программных ошибок и аппаратных сбоев).
Со стороны конечных пользователей, как потребителей услуг банка данных, предъявляется целый набор требований, которые должны учитываться на всех стадиях жизненного цикла этой сложной системы:
-
актуальность информации, т.е. ее соответствие текущему моменту;
-
возможность хранения больших объемов многоаспектной информации;
-
высокий уровень достоверности информации и отсутствие противоречий между отдельными элементами данных;
-
необходимость разграничения доступа к данным для разных категорий пользователей;
-
возможность поиска информации по произвольной группе признаков и выдача результатов в различной форме;
-
высокая производительность при одновременной обработке запросов от большого количества пользователей;
-
возможность реорганизации и расширения БД при изменениях характера деятельности в предметной области.
Преимущества и недостатки технологии баз данных. Технология баз данных обладает как многообещающими потенциальными преимуществами, так и определенными недостатками, которые будут рассмотрены ниже.
Преимущества технологии баз данных.
-
Контроль за избыточностью данных и автоматическая поддержка их целостности. За счет интеграции всех данных исключается необходимость хранения нескольких экземпляров для одного и того же элемента данных. Хотя необходимо сразу же оговориться, что в распределенных системах данные приходится тиражировать из соображений более быстрого доступа к локальным данным, но в этом случае идентичность оригинала и всех копий (т.е. наличие единственного экземпляра на логическом уровне) обеспечивается специальными механизмами репликации в составе системы.
-
Повышение безопасности данных за счет наличия соответствующих эффективных средств в составе СУБД.
-
Применение стандартных форматов данных, что облегчает взаимодействие с другими системами.
-
Более экономичное развитие системы за счет объединения технических и финансовых средств, которые ранее распределялись между разными отделами и использовались недостаточно эффективно.
-
Повышение доступности данных для конечных пользователей за счет возможности самостоятельного ввода любых запросов с помощью языка SQL.
-
Более простое сопровождение приложений, работающих с БД, поскольку реализован принцип независимости программ и данных.
-
Более эффективное управление параллельным доступом к БД, поскольку во многих современных СУБД для исключения конфликтов при одновременном обращении к данным предусмотрена блокировка на уровне более мелких структурных элементов (например, не весь файл, а только отдельная строка).
-
Наличие развитых средств СУБД для резервного копирования и восстановления данных в случае нарушения целостности (в файловых системах аналогичные задачи часто возлагаются на самого пользователя).
Недостатки технологии баз данных.
-
Сложность программных средств хорошей СУБД, что обусловлено более широкими функциональными возможностями. Следовательно, возрастают требования к квалификации персонала, т.к. непонимание принципов работы системы может привести к печальным результатам.
-
Для работы мощной СУБД требуется соответствующая компьютерная техника (мощный процессор, большой объем дискового пространства и оперативной памяти).
-
Мощная многопользовательская СУБД может оказаться очень дорогостоящей (от 100 тыс. до 1 млн. долл.). Кроме того, следует учитывать ежегодные затраты на ее сопровождение высококвалифицированными специалистами.
-
Более серьезные последствия при выходе системы из строя, т.к. любая централизация ресурсов делает систему более уязвимой (существует вероятность полного прекращения работы всей организации).
Трехуровневая архитектура базы данных. Элементы данных, присутствующих в БД, могут рассматриваться с самых разных позиций. Для примера укажем два крайних варианта:
-
самый верхний уровень рассмотрения — это точка зрения обычного пользователя, которого интересуют только значения конкретных данных;
-
самый низкий уровень — это представление данных на физическом носителе, что важно для программных средств операционной системы или системных программистов.
Другие, промежуточные уровни рассмотрения БД возникают из-за того, что на разных этапах жизненного цикла БД решаются различные задачи с привлечением соответствующих специалистов, каждый из которых имеет свой взгляд на БД.
Трехуровневая архитектура для описания БД была предложена в материалах комитета ANSI1/SPARC2 в 1975 г. Хотя эти материалы по разным причинам не стали стандартом, модель ANSI/SPARC все еще представляет интерес для понимания типичной организации баз данных. Как показано на рис. 2.1, рассматриваемая модель охватывает внешний, концептуальный и внутренний уровни.
Уровень, на котором данные воспринимаются пользователями, называется внешним. Этот уровень состоит из нескольких представлений для разных категорий пользователей. Каждое представление (view) содержит только те данные, которые интересны конкретному пользователю. Представление может содержать производные (вычисляемые) данные, которые не хранятся в БД, а создаются по мере надобности. Помимо этого, различные представления могут отображать одни и те же данные в разных форматах.
СУБД и операционная система воспринимают данные на внутреннем уровне. Именно здесь используются различные виды файлов, необходимых при хранении и поиске данных:
-
неупорядоченные файлы с линейным поиском;
-
упорядоченные (отсортированные) файлы;
-
хешированные файлы;
-
индексные файлы для ускорения поиска данных.
Внутренний уровень описывает физическую реализацию БД. Здесь основная цель — достижение максимальной скорости доступа к данным при экономичном использовании дискового пространства.
Отображение внешнего уровня на внутренний осуществляется с помощью промежуточного концептуального уровня, который отделяет пользовательское представление БД от ее физического представления. Этот уровень содержит логическую структуру всей БД, т.е. отражает точку зрения администратора БД. Фактически это полное представление всех требований к данным со стороны всех пользователей, причем здесь отсутствуют любые соображения относительно способов хранения данных.
На концептуальном уровне основными компонентами БД являются сущности, атрибуты и связи. Сущность (entity) — это определенный класс однотипных объектов, которые связаны с деятельностью в рассматриваемой предметной области. Это могут быть материальные объекты (человек, вещь), а также понятия, события различных видов и т.п. Характеристики, относящиеся к свойствам сущностей, называют атрибутами, и актуальные значения атрибутов должны храниться в БД. С помощью связей отображаются взаимоотношения, которые имеются между разными сущностями.
К концептуальному уровню относятся также:
-
ограничения, которые накладываются на значения атрибутов;
-
типы данных для атрибутов (целочисленный, с плавающей точкой, символьный и др.) и их длина (максимальное количество значащих цифр и символов).
Ниже внутреннего уровня находится физический уровень, который контролируется операционной системой, но под управлением СУБД. При этом разделение функций между СУБД и операционной системой не вполне четкое и может изменяться от системы к системе.
При использовании трехуровневой архитектуры ANSI/SPARC облегчается независимое внесение изменений на разных уровнях организации БД. К примеру, добавление новых сущностей, атрибутов или связей в концептуальную схему БД отразится на представлениях только тех пользователей, которые заинтересованы в этих изменениях (логическая независимость). На внутреннем уровне переход к другим способам хранения данных и методам доступа к ним осуществляется без внесения изменений в концептуальную или внешнюю схему. Пользователь может заметить только соответствующие изменения в скорости выполнения операций с данными, что и является основной причиной внесения изменений во внутреннюю схему БД.
Информационные модели и модели данных. На этапе создания БД важно описать требования к данным в масштабе всех категорий пользователей. Такое описание должно быть доступным для понимания всем заинтересованным лицам, чтобы проектировщики БД смогли уяснить роль тех или иных данных в деятельности пользователей БД. С этой целью необходимо построить так называемую информационную модель предметной области.
В соответствии с трехуровневой архитектурой описания БД, структура информационной модели включает в себя:
-
внешнюю модель данных, которая отображает представления каждой категории пользователей;
-
концептуальную модель данных для отображения обобщенного (логического) представления о данных независимо от конкретной СУБД;
-
внутреннюю модель данных, отображающую концептуальную модель с учетом конкретной СУБД.
Среди этих моделей наиболее важная роль принадлежит концептуальной модели данных. Именно эта модель призвана быть полным и точным описанием всех требований к данным со стороны всех категорий пользователей. Построение такой модели, которая носит наиболее общий характер и не зависит от особенностей реализации БД, является основной задачей этапа проектирования БД. Концептуальная модель поддерживает все внешние представления пользователей, а внутренняя модель — это лишь физическое воплощение концептуальной модели.
Модель данных — это интегрированный набор понятий для описания и обработки данных, связей между ними и ограничений, накладываемых на данные. Для построения перечисленных моделей, которые с разных позиций отражают архитектуру БД, в литературе описано несколько методологий, отличающихся способами отображения информационных объектов и их взаимосвязей. Более подробно рассмотрим модели, которые применяются для описания данных на концептуальном и внешнем уровнях.
Объектные модели данных. При создании объектных моделей используются такие элементы, как сущности, атрибуты и связи. Наиболее распространенным типом объектной модели данных является модель типа «сущность–связь» или ER-модель (Entity-Relationship model). Именно эта модель стала сегодня одним из основных методов концептуального проектирования баз данных.
Объектно-ориентированная модель расширяет понятие сущности, включая в него не только атрибуты, которые описывают состояние объекта, но и действия (методы), которые характеризуют поведение объекта. Появление таких моделей связано с проведением активных работ по базам данных следующего (третьего) поколения — объектно-ориентированные (ООБД) и объектно-реляционные (ОРБД) базы данных. Эти работы сопровождаются горячими спорами: приверженцы традиционных подходов считают, что достаточно всего лишь подкрепить реляционную модель дополнительными (объектно-ориентированными) возможностями, а их противники утверждают, что базовая реляционная модель не способна адекватно обслуживать некоторые сложные приложения (например, САПР, ГИС, автоматизированная разработка ПО). Чем закончатся эти споры — покажет ближайшее будущее.
