Проектирование базы данных
В настоящее время при проектировании БД используют два подхода. Один из них основан на стабильности данных, что
обеспечивает наибольшую гибкость и адаптируемость к используемым приложениям. Применение такого подхода целесообразно в тех случаях, когда не предъявляются жесткие требования к эффективности функционирования (объем памяти и время поиска), существует большое количество разнообразных задач с изменяемыми и непредсказуемыми запросами.
Другой подход базируется на стабильности процедур запросов к БД и является предпочтительным при жестких требованиях к эффективности функционирования, особенно это касается быстродействия.
Важным аспектом проектирования БД является проблема интеграции и распределения данных. Господствовавшая до недавнего времени концепция интеграции данных при резком увеличении их объема оказалась несостоятельной. Этот факт, а также увеличение объемов памяти внешних запоминающих устройств при ее удешевлении, широкое внедрение сетей передачи данных способствовали внедрению распределенных БД. Распределение данных по месту их использования может осуществляться различными способами:
1) копируемые данные. Одинаковые копии данных хранятся в различных местах использования, так как это дешевле передачи данных. Модификация данных контролируется централизованно;
2) подмножество данных. Группы данных, совместимые с исходной базой данных, хранятся отдельно для местной обработки;
3) реорганизованные данные. Данные в системе интегрируются при передаче на более высокий уровень;
4) секционированные данные. На различных объектах используются одинаковые структуры, но хранятся разные данные;
5) данные с отдельной подсхемой. На различных объектах используются различные структуры данных, объединяемые в интегрированную систему;
6) несовместимые данные. Независимые базы данных, спроектированные без координации, требующие объединения.
Большое значение для процесса создания БД имеет внутреннее содержание информации, которое формирует прикладные БД (ориентированные на конкретные приложения, например, БД для учета и контроля поступления материалов) и предметные БД (ориентированные на конкретный класс данных, например, БД «Материалы» — может быть использована для различных приложений).
Конкретная реализация системы баз данных, с одной стороны, определяется спецификой данных предметной области, отраженной в концептуальной модели, а с другой стороны — типом конкретной СУБД (МВД), устанавливающей логическую и физическую организацию.
Для работы с БД используется специальный обобщенный инструментарий в виде СУБД (МВД), предназначенный для управления БД и обеспечения интерфейса пользователя.
Основные требования к СУБД:
- независимость данных на концептуальном, логическом, физическом уровнях;
- универсальность (по отношению к концептуальному и логическому уровням, типу ЭВМ);
— совместимость, неизбыточность;
- безопасность и целостность данных;
— актуальность и управляемость.
Существует два основных вида реализации СУБД: программная и аппаратная.
Программная реализация (в дальнейшем СУБД) представляет собой набор программных модулей, работает под управлением конкретной ОС и выполняет ряд функций:
- описание данных на концептуальном и логическом уровнях;
- загрузка данных;
- хранение данных;
- поиск и ответ на запрос (транзакция); внесение изменений;
- обеспечение безопасности и целостности. Пользователя СУБД обеспечивает такими языковыми средствами, как:
- язык описания данных (ЯОД);
- язык манипулирования данными (ЯМД); прикладной (встроенный) язык данных (ПЯД, ВЯД).
Аппаратная реализация предусматривает использование так называемых машин баз данных (МВД). Их появление вызвано возросшими объемами информации и требованиями к скорости доступа. Слово «машина» в термине МВД означает вспомогательный периферийный процессор, термин «компьютер БД» — автономный процессор баз данных или процессор, поддерживающий СУБД. Основные функции МВД — параллельная обработка; распределенная логика; ассоциативные ЗУ; конвейерные ЗУ; фильтры данных и др.
На рис. 2.15 представлена последовательность процедур проектирования БД, которые можно объединить в 6 этапов.
На этапе 1 устанавливаются цели организации, определяются требования к БД. Эти требования документируются в форме доступной конечному пользователю и проектировщику БД. Обычно при этом используется методика интервьюирования персонала различных уровней управления.
Этап 2 заключается в описании и синтезе информационных требований пользователей к первоначальному проекту БД. Результатом этого этапа является высокоуровневое представление информационных требований пользователей на основе различных подходов.
На этапе 3 высокоуровневое представление данных преобразуется в структуре используемой СУБД. Полученная логическая структура БД может быть оценена количественно с помощью различных характеристик (число обращений к логическим записям, объем данных в каждом приложении, общий объем данных и т. д.). На основе этих оценок логическая структура может быть усовершенствована с целью достижения большей эффективности.
На этапе 4 решаются вопросы, связанные с производительностью системы, определяются структуры хранения данных и методы доступа.
Весь процесс проектирования БД является итеративным, при этом каждый этап рассматривается как совокупность итеративных процедур, в результате выполнения которых получают соответствующую модель.
Взаимодействие между этапами проектирования и словарной системой необходимо рассматривать отдельно. Процедуры проектирования могут использоваться независимо в случае отсутствия словарной системы. Сама словарная система может рассматриваться как элемент автоматизации проектирования.
Этап 5 связан с разбиением базы данных на разделы и синтезом различных приложений на основе модели. Основными факторами, определяющими методику расчленения, являются: размер каждого раздела (допустимые размеры); модели и частоты использования приложений; структурная совместимость: факторы производительности БД. Связь между разделом БД
Рис. 7.15. Совокупность процедур проектирования БД
и приложениями характеризуется идентификатором типа приложения, идентификатором узла сети, частотой применения приложения и его моделью. Существуют два вида приложений — использующие единственный файл; использующие несколько файлов (в том числе независимая параллельная обработка и синхронизированная обработка).
Для этапа 6 характерна многовариантность. Поэтому на практике рекомендуется в первую очередь рассмотреть возможность использования определенных допущений, упрощающих функции СУБД, например, допустимость временного рассогласования БД, осуществление процедуры обновления БД из одного узла и др. Такие допущения оказывают большое влияние на выбор СУБД и рассматриваемую фазу проектирования.
Средства проектирования и оценочные критерии используются на всех стадиях разработки. Любой метод проектирования (аналитический, эвристический, процедурный), реализованный в виде программы, становится инструментальным средством проектирования, практически не подверженным влиянию стиля проектирования.
В настоящее время неопределенность при выборе критериев является наиболее слабым местом в проектировании БД. Это связано с трудностью описания и идентификации бесконечного числа альтернативных решений. При этом следует иметь в виду, что существует много признаков оптимальности, являющихся неизмеримыми свойствами, которые трудно выразить в количественном представлении или в виде целевой функции. Поэтому оценочные критерии принято делить на количественные и качественные.
К количественным критериям оценки относятся: время ответа на запрос, стоимость модификации, стоимость памяти, время на создание, стоимость на реорганизацию. Качественные критерии оценки включают: гибкость, адаптивность, доступность для новых пользователей, совместимость с другими системами, возможность конвертирования в другую вычислительную среду, восстановления, возможность распределения и расширения.
Трудность в оценке проектных решений связана также с различной чувствительностью и временем действия критериев. Например, критерий эффективности обычно является краткосрочным и чрезвычайно чувствительным к проводимыми изменениям, а такие понятия, как адаптируемость и конвертируемость, проявляются на длительных временных интервалах и менее чувствительны к воздействию внешней среды.
Предназначение склада данных — информационная поддержка принятия решений, а не оперативная обработка данных. Потому база данных и хранилище данных не 5шляются одинаковыми понятиями. Архитектура ХД представлена на рис. 7.16.
Основные принципы организации хранилищ данных [39] приведены ниже:
1. Предметная ориентация. В оперативной базе данных обычно поддерживается несколько предметных областей, каждая из которых может послужить источником данных для ХД. Например, для магазина, торгующего видео- и музыкальной продукцией, интерес представляют такие предметные области, как: клиенты, аудио-, видео-, CD-диски, сотрудники, поставщики. Явно прослеживается аналогия между предметными областями ХД и классами объектов в объектно-ориентированных базах данных. Это говорит о возможности применения методов проектирования, применяемых в объектно-ориентированных СУБД.
2. Средства интеграции. Разные представления одних и тех же сущностей приводятся к некоторому общему типу.
Рис. 7.16. Архитектура ХД
3. Постоянство данных. В ХД не поддерживаются операции модификации как в случае традиционных баз данных. В ХД поддерживается модель «массовых загрузок» данных, производимых в заданные моменты времени по установленным правилам в отличие от традиционной модели индивидуальных модификаций.
4. Хронология данных. Благодаря средствам интеграции реализуется определенный хронологический временной аспект, присущий содержимому ХД.
Основные функции репозитариев:
- парадигма включения/выключения и некоторые формальные процедуры для объектов;
- поддержка множественных версий объектов и процедуры управления конфигурациями для объектов;
- способность оповещения инструментальных и рабочих систем об интересующих их событиях;
- управление контекстом и разные способы обзора объектов репозитария;
— возможность определения потоков работ. Рассмотрим кратко основные направления научных исследований в области баз данных:
— развитие теории реляционных баз данных;
— моделирование данных и разработка конкретных моделей разнообразного назначения;
— отображение моделей данных, направленных на создание методов преобразования моделей данных и конструирования коммутативных отображений, разработку архитектурных аспектов отображения моделей данных и спецификаций определения отображений для конкретных моделей данных;
СУБД с мультимодельным внешним уровнем, обеспечивающие возможности отображения широко распространенных моделей;
- разработка, выбор и оценка методов доступа; самоописываемые базы данных, позволяющие применять
единые методы доступа для данных и метаданных;
- управление конкурентным доступом;
- системы программирования баз данных и знаний, которые обеспечивали бы единую эффективную среду как для разработки приложений, так и для управления данными;
- машины баз данных;
- дедуктивные базы данных, основанные на применении аппарата математической логики и средств логического программирования в области с данных;
- пространственно-временные базы данных;
- интеграция неоднородных информационных ресурсов.
Серьезные недостатки реляционной модели данных привели к необходимости поиска других моделей. Такой прогрессивной и перспективной моделью данных является объектно-ориентированная модель данных.
В ней собственно база данных, интерфейс пользователя и алгоритм приложения построены с использованием объектно-ориентированного подхода.
Автор реляционной модели данных Э. Ф. Кодд первоначально сформулировал 12 требований к БД, чтобы она могла называться реляционной. В дальнейшем этот перечень увеличился до 333 требований. Им, несмотря на широкое распространение реляционных баз данных, не удовлетворяет ни одна из известных СУБД.
Более того, при значительных объемах данных начинают проявляться недостатки реляционных баз данных. К этим недостаткам относятся: сложность структуры, вызванная необходимостью проведения нормализации; низкая производительность из-за поиска по ключу, что в 3 — 5 раз увеличивает количество операций доступа; ограниченный набор типов данных; представление данных только в виде двухмерных таблиц и невозможность реализации таблиц с нелинейной структурой; невозможность послойного рассмотрения данных (например, работающие — в одном слое; научные сотрудники и преподаватели — в другом, подчиненном слое); нестыковка с принципами все более широко применяемого объектно-ориентированного подхода; невозможность задать для определенного типа данных набор операторов-методов, которые приходится вводить в конкретном приложении; возникновение конфузии — утраты при многочисленных обновлениях третьей (а порой и второй) нормальной формы; сложность совмещения с другой парадигмой хранилищ данных.
Суть объектно-ориентированной БД определяется особенностями объектной модели. Выделяется несколько специфических понятий. Данные называют свойствами, а алгоритмы — методами. Доступ к классу осуществляется через свойства — в статическом режиме написания и отладки программы или через методы в процессе выполнения (работы) программы.
Начало работы элемента класса задается с помощью специальных внутренних (например, нажатие кнопки) или внешних (вызов из другой подпрограммы) сигналов, называемых событиями.
Программную реализацию класса называют компонентой. Реализация компоненты в некоторой программе получила название объекта.
В объектно-ориентированном программировании используются три основных принципа: инкапсуляция, наследование, полиморфизм.
Инкапсуляция — выделение класса с доступом к нему через свойства или методы.
Наследование — трансформация класса путем изменения свойств и методов с помощью методов, называемых конструктором и деструктором.
Все классы (компоненты) строятся по иерархическому принципу с происхождением от некоторого исходного класса.
Полиморфизм позволяет использовать метод с одним именем как в базовом, так и в производных классах.
Дело в том, что количество классов значительно: уже сейчас оно приближается к ста и продолжает расти. Если в производных классах применять для однотипных, «похожих» методов (например, начертание квадрата и окружности) разные имена, пользователю, особенно начинающему, будет сложно освоиться с таким разнообразием имен.
Приведем основные положения ООБД, базирующиеся на объектно-ориентированном подходе.
1. В качестве значения столбца может быть использован произвольный кортеж:. Иными словами, столбец может являться как бы некоторой самостоятельной таблицей. Таким образом, создается возможность реализации таблиц с нелинейной структурой.
2. Процедура манипуляции данными позволяют присоединять процедуры, определяемые значениями столбцов.
3. Данные столбцов могут наследоваться.
4. Элементами отношений могут служить не только отдельные элементы, как в реляционных БД, но и множества.
5. Формируются классы данных, которые организуют столбцы в иерархию.
Базовым языком ООБД чаще всего является С++. Для работы с такими ООБД разработан новый вариант языка программирования SQL, получивший название SQL3 и содержащий внутри себя в качестве частного случая реляционную модель (SQL2). Если SQL2 определяет семь способов связывания со стандартными языками программирования, в SQL3 это количество предполагается увеличить.
В технологии разработки ООБД конкурируют два направления.
Distributed Object Linking and embedding (OLE) фирмы Microsoft;
- Common Object request Broker Architecture (COR) группы OBDMG, поддерживаемая фирмами IBM, Novell, DEC, с ориентацией на все платформы. В рамках этого направления выделены и сформированы указанные ранее язык определения объектов Object Definition Language (ODL); объектный язык запроса — Object Query Language (OQL); язык определения интерфейсов — Interface Definition Language (IDL).
Во втором направлении обычно выделяют [44] два стандарта управления БД:
- ODL/OQL, в котором объекты и методы формируются обычно с помощью языка программирования С;
- язык программирования SQL3.
Необходимо отметить, что к объектно-ориентированным можно отнести только те базы данных, у которых все структурные элементы реализации построены с использованием объектно-ориентированного подхода. Если хотя бы один структурный элемент реализации не использует объектно-ориентированный подход, то ее называют объектно-реляционной базой данных (ОРБД).
Таким образом, чтобы воспользоваться объектно-ориентированным подходом в построении собственно БД, необходимо:
- провести инкапсуляцию данных, т.е. выделить классы и объекты;
определить возможные виды структуры реализуемых таблиц;
- создать наследование классов данных;
- обеспечить полиморфизм.
Реализация даже первой позиции неоднозначна и различна, например в ООСУБД и ОРСУБД. Имеется некоторое отличие и в рамках различных ООСУБД.
По сравнению с реляционными базами данных ООБД обладают рядом преимуществ:
- лучшие возможности моделирования систем из блоков, обладающих произвольными связями;
- легкая расширяемость структуры за счет создания новых типов данных (свойств), наследования, установления новых связей и корректировки методов;
- возможность использования рекурсивных методов при навигационном методе доступа к большим объемам данных;
- повышение производительности в 10 — 30 раз;
- более широкая сфера применения (например, использование в мультимедиасистемах).
Преимущества ООБД [3, 4, 36] приведут, видимо, к очень широкому их распространению. Однако прежде следует решить ряд задач по устранению недостатков ООБД: создать гибкую структуру БД; построить четкий язык программирования; отработать синтаксис разбора запросов, в том числе — вложенных; определить несколько методов доступа к данным; отработать вопросы одновременного доступа (разрешение конфликтов при множественном наследии); определить сложный перебор данных; отработать защиту и восстановление данных; уточнить семантику (действия) операторов при динамических изменениях; встроить изменение атрибутов дочерних объектов.
Однако и после устранения названных недостатков переход к ООБД будет носить, видимо, эволюционный характер, поскольку сразу отказаться от значительного количества действующих реляционных БД невозможно. Безболезненный переход станет реальным после того, как в ООСУБД войдет не только объектная, но и реляционная составляющая.
Переход к объектно-ориентированным моделям данных связан с процессом «перекачки» в них огромных объемов информации, которая в настоящее время хранится преимущественно в реляционных базах данных. Для упрощения этого процесса была создана объектно-реляционная модель данных, в которой выделяются две разновидности — гибридные и расширенные базы данных.
В гибридных объектно-реляционных базах данных объектно-ориентированный подход используется в создании интерфейса пользователя и алгоритма приложения. В то же время система таблиц формируется в рамках реляционной модели данных.
В расширенных объектно-реляционных базах данных объектно-ориентированный подход используется прежде всего для построения системы таблиц. Для этого разработана модификация языка SQL2, получившая название языка программирования SQL3.
Чтобы понять перспективы развития ОРБД, следует оценить их достоинства и недостатки.
К достоинствам следует отнести [36]:
- устранение ряда недостатков реляционных БД;
- повторное использование компонентов;
- использование накопленных знаний по реляционным БД. К недостаткам ОРБД возможно отнести:
- усложнение структуры БД и частичную утрату простой обозримости результатов, как в реляционных БД;
- сложность построения абстрактных типов данных и методов, связывающих типы в иерархию;
- менее широкий набор типов связей, определяемых языком программирования SQL, чем в объектно-ориентированных БД;
- менее продуманный, отлаженный и стандартизованный набор типов данных, чем в ООБД.
ОРБД, по-видимому, будут существовать еще достаточно долго, чему есть, по меньшей мере, два объяснения:
- быстрое накопление с помощью ОРБД опыта, который можно использовать при создании ООСУБД;
- необходимость иметь средства для постепенного эволюционного «перевода» многочисленных реляционных БД в разряд ООБД, за которыми, видимо, будущее.
В последнее время распределенные базы данных (РБД) находят все более широкое применение в связи с массовым распространением «сетевых» технологий.
Теория создания, использования и функционирование РБД имеет свои особенности по сравнению с централизованными БД.
Быстрое распространение сетей передачи данных, резкое увеличение объема внешней памяти ПК при ее удешевлении в 1980-е гг., развитие возможностей персональных компьютеров, которые по своим характеристикам в 1990-е гг. уже превосходили суперЭВМ 1980-х гг., создали необходимую базу для реализации и широкого внедрения РБД.
К достоинствам РБД можно отнести:
- соответствие структуры РБД структуре организаций;
- гибкое взаимодействие локальных БД;
- широкие возможности централизации узлов;
— непосредственный доступ к информации, снижение стоимости передач (за счет уплотнения и концентрации данных);
- высокие системные характеристики (малое время отклика за счет распараллеливания процессов, высокая надежность);
- модульная реализация взаимодействия, расширения аппаратных средств, возможность использования объектно-ориентированного подхода в программировании;
- возможность распределения файлов в соответствии с их активностью;
- независимые разработки локальных БД через стандартный интерфейс.
Вместе с тем РБД обладают более сложной структурой, что вызывает появление дополнительных проблем (избыточность, несогласованность данных по времени, согласование процессов обновления и запросов, использование телекоммуникационных ресурсов, учет работы дополнительно подсоединенных локальных БД, стандартизация общего интерфейса, усложнение защиты данных) согласования работы элементов.
Серьезные проблемы возникают при интеграции в рамках РБД однородных (гомогенных) локальных БД с одинаковыми, чаще всего — реляционными моделями данных.
Проблемы значительно усложняются, если локальные БД построены с использованием различных моделей данных (неоднородные, гетерогенные РБД).
Возникла необходимость в теоретической проработке процессов в РБД.
Распределенная база данных (РБД) — система логически интегрированных и территориально распределенных БД, языковых, программных, технических и организационных средств, предназначенных для создания, ведения и обработки информации.
Это означает, что информация физически хранится на разных ЭВМ, связанных сетью передачи данных. Любой узел (участок) может выполнять приложение и участвовать в работе по крайней мере одного приложения.
Большинство требований, предъявляемых к РБД, аналогично требованиям к централизованным БД, но их реализация имеет свою специфику. В частности, в РБД иногда полезна избыточность.
Дополнительными специфическими требованиями к РБД являются следующие.
ЯОД в рамках схемы должен быть один для всех локальных БД.
Доступ должен быть коллективным к любой области РБД с соответствующей защитой информации.
Подсхемы должны быть определены в месте сосредоточения алгоритмов (приложений, процессов) пользователя.
Степень централизации должна быть разумной.
Необходим сбор и обработка информации об эффективности функционирования РБД.
В дальнейшем К. Дейт сформулировал 12 правил для РБД
[13]:
локальная автономность;
отсутствие опоры на центральный узел;
непрерывное функционирование (развитие) РБД;
- независимость РБД от расположения локальных БД; независимость от фрагментации данных; независимость от репликации (дублирования) данных;
- обработка распределенных запросов;
- обработка распределенных транзакций;
- независимость от типа оборудования; независимость от операционной системы;
- независимость от сетевой архитектуры;
- независимость от типа СУБД.
Рис. 7.17. Схема, распределенной базы данных
Рассмотрим общие вопросы (состав, работа РБД) и теоретические вопросы РБД, в которых по-прежнему выделим три составляющие (создание, использование и функционирование РБД).
Схема РБД может быть представлена в виде, показанном на рис. 7.17.
Сравнительные характеристики стратегий хранения приведены в табл. 7.3. На ее основе может быть построен простейший алгоритм выбора стратегии, показанный на рис. 7.18.
Отметим, что в обычной сети имеет место равноправие компьютеров, что может вызвать дополнительные осложнения доступа к данным в процедурах обновления и запросов.
Таблица 2.3. Стратегии хранения данных
Название | Суть стратегии | Достоинства | Недостатки |
Централизация (в том числе технология клиент-сервер) | Единственная копия в одном узле | Простота структуры | Скорость обработки ограничена одним узлом. Ограниченный доступ. Малая надежность. Долговременная память определяет объем БД |
Локализация (расчленение) | Единственная копия, расчленение по узлам (полная копия БД не допускается) | Объем БД определяется памятью сети. Снижение стоимости РБД. Время отклика при параллельной обработке уменьшается. Малая чувствительность к узким местам. Повышенная надежность при высокой локализации данных | Запрос может быть по всем узлам. Доступ хуже, чем при централизации. Рекомендации применения. Долговременная память ограничена по сравнению с объемом БД. Должна быть повышена эффективность функционирования при высокой степени локализации |
Рис. 7.18. Алгоритм выбора стратегии хранения данных: А —- запрос доступа к данным в процедурах обновления и запросов.
В связи с этим часто используют архитектуру «клиент-сервер» (рис.7.19) — структуру локальной сети, в которой применено распределенное управление сервером и рабочими станциями (клиентами) для максимально эффективного использования вычислительной мощности.
В этой структуре один из компьютеров, имеющий самый большой объем памяти и наиболее высокое быстродействие, становится приоритетным и называется сервером.
Сервер — узловая станция компьютерной сети, предназначенная в основном для хранения данных коллективного пользования и для обработки запросов в ней, поступающих от пользователей других узлов.
На сервере чаще всего хранятся только данные, запрашиваемые клиентами.
Клиент компьютер, обращающийся к совместно используемым ресурсам, которые предоставляются сервером.
К клиентам не предъявляют столь жестких требований по памяти и быстродействию, как к серверу. В памяти клиентов содержатся словари и приложения, служащие своеобразными фильтрами для данных сервера. В связи с этим обмен информацией в архитектуре «клиент-сервер» (см. рис. 7.19) фактически минимизируется.
Работа в архитектуре «клиент-сервер» может поддерживаться и с помощью схемы ODBC (Open DataBase Connectivity), как показано на рис. 2.20.
Сеть образуется в этом случае путем соединения серверов. Такое соединение обеспечивается или средствами СУБД (SQL Server), или мониторами транзакций (TUXEDO).
Рис. 7.19. Архитектура «клиент-сервер»
Рис. 2.20. ODBC вархитектуре «клиент-сервер»