
- •Место баз данных в Космических войсках
- •Основные понятия теории баз данных
- •Понятие системы баз данных
- •Базы данных и их назначение
- •Данные и модели данных
- •Типы систем баз данных
- •Архитектура системы баз данных
- •Уровни архитектуры
- •Система управления базами данных
- •Система управления передачей данных
- •Архитектура «клиент-сервер»
- •Утилиты
- •Распределенная обработка
- •Семантическое моделирование
- •Общий подход
- •Модель «сущность/связь»
Данные и модели данных
Слово «данные» (data) происходит от латинского слова «давать», откуда следует, что данные на самом деле являются заданным фактами, из которых можно логически получить другие факты. (Получение дополнительных фактов из заданных фактов – это в частности, то для чего используется СУБД, обслуживая запросы пользователя.) «Заданный факт», в свою очередь, соответствует тому, что в логике называется истинным высказыванием. Отсюда следует, что база данных в действительности есть набор подобных истинных высказываний.
Одна из причин того, что реляционные системы баз данных стали доминирующими состоит в их способности поддерживать вышеупомянутую интерпретацию данных и баз данных напрямую (фактически почти тривиально). Реляционные системы основаны на формальной теории, называемой реляционной моделью данных, которая предполагает следующее:
Данные представлены посредством строк в таблицах, и эти строки могут быть непосредственно интерпретированы как истинные высказывания.
Для обработки строк данных представляются операторы, которые напрямую поддерживают процесс логического получения дополнительных истинных высказываний их существующих высказываний.
Однако реляционная модель – не единственная возможная модель данных. Существуют и другие модели, хотя многие из них отличаются от реляционной модели только тем, что они в определенной степени приспособлены для специальных случаев, а не строго построены на формальной логике. Понятие модели данных можно определить следующим образом:
Модель данных – это абстрактное, самодостаточное, логическое определение объектов, операторов и прочих элементов, в совокупности составляющих абстрактно машину, с которой взаимодействует пользователь. Упомянутые объекты позволяют моделировать структуру данных, а операторы – поведение данных.
Используя это определение, можно эффективно разделить модель данных и ее реализацию.
Реализация (implementation) – заданной модели данных – это фактическое воплощение на реальной машине компонентов абстрактной машины, которые в совокупности составляют эту модель.
Другими словами, модель – это то, что пользователи должны знать, а реализация – то, чего пользователи знать не должны.
Замечание: Различие между моделью и ее реализацией в действительности является частным случаем знакомого отличия логического и физического. Однако многие современные системы баз данных не проводят различия между этими двумя понятиями, что приводит к тому, что все чаще наблюдается расхождение между принципами построения баз данных (указывающими, какими СБД должны быть) и практикой их реализации (какие есть на самом деле). В данном курсе рассматриваются, прежде всего, принципы, что может несколько отличаться от того, что можно видеть на практике при использовании конкретных коммерческих продуктов.
Типы систем баз данных
Все системы баз данных можно разделить на реляционные и нереляционные. Как уже отмечалось, пользователь реляционной системы видит все данные, представленные в виде таблиц и никак иначе. Пользователь не реляционной системы видит данные, представленные в других структурах: либо вместо таблиц реляционной системы, либо наряду с ними. Для работы с этими другими структурами применяются другие операции. В частности, в иерархической системе (например, IMS фирмы IBM) данные представляются пользователю в форме набора древовидных структур (иерархий), а среди операций работы с иерархическими структурами есть операции перемещения по иерархическим указателям (навигации) вверх и вниз по ветвям деревьев. Реляционные системы, как мы видели, не имеют таких указателей, и это очень важная их отличительная особенность.
На практике системы баз данных могут быть легко распределены по категориям в соответствии со структурами данных и операторами, которые они представляют пользователю. Прежде всего, старые (дореляционные) системы можно разделить на три большие категории.
системы инвертированных списков (inverted list). К числу наиболее известных и типичных представителей таких систем относятся Datacom/DB компании Applied Data Research, Inc. (ADR), ориентированная на использование на машинах основного класса фирмы IBM, и Adabas компании Software AG. Организация доступа к данным на основе инвертированных списков используется практически во всех современных реляционных СУБД, но в этих системах пользователи не имеют непосредственного доступа к инвертированным спискам (индексам). База данных, организованная с помощью инвертированных списков, похожа на реляционную БД, но с тем отличием, что хранимые таблицы и пути доступа к ним видны пользователям. При этом:
Строки таблиц упорядочены системой в некоторой физической последовательности.
Физическая упорядоченность строк всех таблиц может определяться и для всей БД (так делается, например, в Datacom/DB).
Для каждой таблицы можно определить произвольное число ключей поиска, для которых строятся индексы. Эти индексы автоматически поддерживаются системой, но явно видны пользователям.
Поддерживаются два класса операторов:
Операторы, устанавливающие адрес записи, среди которых:
прямые поисковые операторы (например, найти первую запись таблицы по некоторому пути доступа);
операторы, находящие запись в терминах относительной позиции от предыдущей записи по некоторому пути доступа.
Операторы над адресуемыми записями.
иерархические (hierarchic) системы. Иерархическая БД состоит из упорядоченного набора деревьев; более точно, из упорядоченного набора нескольких экземпляров одного типа дерева. Тип дерева состоит из одного "корневого" типа записи и упорядоченного набора из нуля или более типов поддеревьев (каждое из которых является некоторым типом дерева). Тип дерева в целом представляет собой иерархически организованный набор типов записи.
сетевые (network) системы. Сетевой подход к организации данных является расширением иерархического. В иерархических структурах запись-потомок должна иметь в точности одного предка; в сетевой структуре данных потомок может иметь любое число предков.
Замечание: Сетевые системы называют системами CODASYL или системами DBTG по имени группы, которая их предложила – Data Base Task Group (DBTG) of the Conference on Data Systems Languages (CODASYL). Наиболее известной из таких систем была IDMS корпорации Computer Associates International, Inc. Подобно иерархическим системам (но в отличие от реляционных), все такие системы, кроме всего прочего, предоставляли в распоряжение пользователя внутренние указатели на элементы данных.
Первые реляционные продукты начали появляться в конце 1970-х и начале 1980-х годов. Среди них можно отметить: DB2 (различные версии) для IBM; Ingres II корпорации Computer Associates International, Inc.; Informix Dynamic Server корпорации Informix Software, Inc.; Microsoft SQL Server корпорации Microsoft; Oracle 8i корпорации Oracle и Sybase Adaptive Server компании Sybase, Inc.
В последнее время появляются объектно-ориентированные и объектно-реляционные продукты, которые вместе можно назвать постреляционными моделями данных. Большинство объектно-реляционных СУБД основывается на совместимых снизу вверх расширениях оригинальных реляционных продуктов, как это случилось с DB2 или Informix. Существующие объектно-ориентированные системы представляют собой попытки сделать что-то совершенно отличное, как это имеет место в случае с системой GemStone корпорации GemStone Systems, Inc. и системой Versant ODBMS компании Object Technology.
В дополнение к различным уже упомянутым походам в последнее время проводились исследования множества альтернативных схем, включая многомерный (multi-dimensional) и логический (logic-based) подход, называемый еще дедуктивным или экспертным.