Файл: Лабораторная работа 1 Архитектура реляционных баз данных.doc

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 11.01.2024

Просмотров: 119

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Каждая страница имеет своего владельца, в качестве которого может выступать таблица, индекс или другой объект. Таким образом, экстент может содержать страницы, принадлежащие либо одному объекту, либо разным. Однако, как сервер находит свободные страницы и восстанавливает цепочку страниц, используемых для хранения данных конкретного объекта? При этом необходимо учитывать, что страницы одного и того же владельца могут располагаться более чем одном файле, что еще более усложняет восстановление цепочки. Эта проблема решается с помощью страниц GAM, которые представляет собой битовое поле, каждый бит которого соответствует одному экстенту. Так как размер страницы равен 8 Кбайт, то одна страница GAM может описать 64 000 экстентов. Соответственно, одна страница GAM охватывает область немногим менее 4 Гбайт (64 000 х 8 х 8192).

Итак, примерно на каждые 4 Гбайта (точнее на 3,95 Гбайта) данных необходимо выделить в файле данных две страницы типа GAM, общий размер которых составит всего 16 Кбайт. Такая плотность информации позволяет хранить в оперативной памяти информацию использования экстентов, что позволяет быстро находить свободное пространство для записи данных.

  • Page Free Space (PFS). Страницы данного типа содержат информацию о наличии свободного пространства на страницах файла.

Страницы GAM применяются только при поиске свободного пространства для записи страниц. Однако этих страниц для полноценной работы с данными явно недостаточно. Действительно, при сохранении одной-двух строк нет смысла выделять для них новую страницу, если на уже выделенных для соответствующего объекта страницах достаточно свободного пространства. Таким образом, встает задача найти страницы, принадлежащие объекту и определить количество свободного пространства на них.

Информация о степени заполнения страниц (не экстентов) хранится в страницах типа PFS. Каждая такая страница хранит информацию о количестве свободного пространства на 8000 страниц типа Data, Text/Image и Index. Таким образом, каждая страница описывается 1 байтом. Степень заполнения каждой страницы выражается в процентах, но не точно, а примерно, и указывается с помощью битов, каждому из которых соответствует определенное состояние страницы: 0%, 1-50%, 51-80%, 81-95%, 96-100%


Страницы PFS предназначены для быстрого поиска страниц, имеющих достаточно свободного пространства для хранения данных, без сканирования самих страниц.

  • Index Allocation Map (IAM). Страницы этого типа хранят информацию об экстентах, используемых таблицами или индексами.

Страницы PFS не содержат данных о том, кто именно является владельцем той или иной страницы. Очевидно, что эта же информация необходима для принятия решения о том, в какой именно странице файла следует сохранить данные. Информация о владельце страницы хранится в страницах типа IAM. Каждая страница IАМ описывает экстенты, принадлежащие одному объекту. Таким образом, каждому объекту (таблице или индексу) должна быть сопоставлена как минимум одна страница IAM.

Страница IАМ представляет собой битовое поле наподобие GAM. Если бит поля установлен в 1, то в экстенте содержатся страницы, принадлежащие соответствующему объекту. Когда же поле IAM содержит 0, то экстент принадлежит другому объекту либо вообще пуст. Таким образом, одна страница IAM охватывает блок данных объемом немногим менее 4 Гбайт (3,95 Гбайта), что соответствует 64 000 экстентам. Если же не все страницы объекта располагаются в этом интервале, то необходимо создать дополнительную страницу IAM. При этом в первой странице указывается номер второй страницы IAM. Таким образом можно охватить весь файл базы данных.

Номер страницы первого поля IAM хранится в столбце FirsIAM системной таблицы sysindexes. Зная номер первой страницы IAM, всегда можно восстановить всю цепочку страниц IAM и получить список всех экстентов, содержащих принадлежащие конкретному объекту данные. Таким объектом может быть индекс (кластерный или некластерный), таблица или отдельный столбец таблицы, имеющий тип данных text, ntext или image.


Структура файла базы данных

Каждый файл базы данных может состоять из страниц разных типов. Нумерация страниц в файле начинается с нуля. При этом используется сквозная нумерация. То есть нет различия между страницами разных типов. Тип страницы определяется по ее заголовку. Первые четыре страницы являются стандартными для любого файла данных. Страница с номером 0 отводится под заголовок файла, содержащий всю системную информацию о нем. Далее следуют страница PFS и две страницы GAM. Тип же следующих страниц может быть любым, но обязательно в файле должны присутствовать страницы IAM.

1.1.2. Логическая архитектура баз данных MSSQLServer

Основными компонентами MS SQL Server 2000 являются:

  • Databases  набор таблиц с данными и других объектов, таких как представление (views), индексы (indexes), хранимые процедуры (stored procedure), триггеры (trigger) и так далее, что обеспечивают дополнительные возможности по управлению данными;

  • Data Transformation Services  сервисы трансформации данных  средство, с помощью которого можно не только трансформировать объекты баз данных (индексы, сохраненные процедуры и все такое) из одного компьютера на другой, но и проводить импорт/экспорт разнородных данных, используя архитектуру OLE DB;

  • SQL Server Agent  многосерверный мастер, который обеспечивает диспетчеризацию заданий (jobs), извещений (alerts), операторов (operators), сообщений (notifications) и репликации (replication);

  • Backup  резервирование и последующее возобновление баз данных и журналов транзакций на специально предназначенное для этого логическое устройство (backup device);

  • Database Maintenance Plans  мастер планирования эксплуатации баз данных, с помощью которого решаются задания реорганизации страниц данных и индексов, сжатия файлов базы данных, после удаления из нее пустых страниц, контроля согласованности данных, резервирования базы данных и журнала транзакций;

  • SQL Server Logs  файлы (журналы транзакций), куда SQL Server записывает все транзакции перед тем, как провести изменения в самой базе данных;

  • Web Publishing  мастер формирования файлов HTML из данных SQL Server;

  • Logins  набор параметров, позволяющих определить имя и пароль пользователя, а также связаные с ними уровни доступа к компонентам базы данных;

  • Server Roles  средство, которое позволяет объединять пользователей в группы и назначать им определенные полномочия, причем пользователи могут «играть» (принадлежать к) разные роли;

  • Linked Servers  средство конфигурации связанных серверов, которые обычно используются для выполнения распределенных запросов;

  • Remote Servers  средство настройки отдаленных серверов, которое обеспечивает возможность пользователям, подключенным к одному серверу, выполнять хранимые процедуры на других серверах.


Данные в SQL Server организованы в нескольких разных объектах, к которым пользователь имеет доступ после подключения к БД. К таким объектам относятся:

  • Таблицы (tables). Это единственный объект базы данных, предназначенный для хранения пользовательских данных.

  • Представления (views). Являются виртуальными таблицами (virtual tables), которые отображают данные, хранящиеся в других таблицах. Для пользователя же представления во многом напоминают таблицы. Представления используются как редство реализации внешних моделй пользователей .

  • Индексы (indexes). Объекты этого типа предназначены для повышения производительности работы сервера при поиске нужных данных в таблицах и представлениях, что достигается путем хранения в упорядоченном состоянии данных одного или более столбцов таблицы или представления. Таким образом, индексы не могут существовать сами по себе.

  • Ключи (keys). Являются одним из типов ограничения целостности. Однако они играют достаточно важную роль в базе данных и поэтому рассматриваются как отдельные объекты. Тем не менее, реализуются они так же, как и другие ограничения целостности, которые связываются с таблицами.

  • Умолчания (defaults). Этот тип объектов описывает значения, которые присваиваются столбцам таблицы, если при добавлении строки явно не было указано значение для соответствующего столбца.

  • Правила (rules). Являются логическим условием, ограничивающим диапазон возможных значений для столбца таблицы или определяемого пользователем типа данных.

  • Ограничения целостности (constraints). Специальные управляющие конструкции, ограничивающие диапазон возможных значений в столбце таблицы. Таким образом, ограничения целостности оказываются неразрывными с таблицами.

  • Хранимые процедуры (stored procedures). Представляют собой набор команд SQL, хранимых на сервере, и выполняемых как одно целое. Каждая процедура имеет свое имя. По этому имени пользователи могут вызывать процедуру, запуская тем самым на выполнение весь набор команд, представляющих тело процедуры. Использование хранимых процедур позволяет снизить стоимость сопровождения системы и дает возможность избавиться от необходимости изменять клиентские приложения. Использование хранимых процедур также позволяет значительно повысить безопасность данных. Приложение или пользователь получает лишь специальное право на выполнение хранимой процедуры, которая и будет обращаться к данным. Доступа же к самим данным пользователь не получает.


  • Триггеры (triggers). Это специальный тип хранимых процедур, автоматически запускаемых сервером при выполнении удаления, вставки или изменения данных в конкретной таблице. То есть триггеры связываются с определенной таблицей и не могут существовать сами по себе.

  • Определяемые пользователем типы данных (user-defined data types, UDDT). Эти объекты представляют собой типы данных, создаваемые пользователями.

  • Определяемые пользователем функции (user-defined function). Объекты этого типа представляют собой набор команд Transact-SQL, сохраненных пользователем в виде функции.

  • Роли базы даннх (database roles). Собственно роли базы данных (фиксированные и пользовательские), предназначены для группировки пользователей и предоставления им необходимых прав доступа. Это помогает упростить администрирование системы безопасности базы данных. Отдельно стоят роли приложения. Они нужны не для группировки пользователей, а для предоставления прав доступа.

При создании новой базы данных SQL Server как отправной пункт использует шаблон (template) или модель (model) базы данных, которую можно представить в виде совокупности установленных по умолчанию объектов, реализованных в системных базах данных. Модель базы данных состоит из стандартных объектов SQL Server.

Если желательно установить для всех вновь создаваемых баз данных определенные атрибуты, необходимо реализовать их в модели базы данных. Потом при создании новых баз данных атрибуты наследуются каждой новой базой данных.

Модель базы данных управляется так же, как обычная база данных, и ограничений на размещение объектов в этой базе данных нет. Для работы с объектами этой базы данных, как и любой другой, можно использовать обычные способы доступа к БД.

1.2. Архитектура баз данных PostgreSQL

СУБД PostgreSQL   это кросплатформенная свободно распространяемая объектно-реляционная система управления базами данных, наиболее развитая из открытых (open source) СУБД в мире и являющаяся реальной альтернативой коммерческим базам данных. Теккщая версия  PostgreSQL 9.0.

Основные возможности PostgreSQL.

  • Поддержка объектно-реляционной модели. Работа с данными в PostgreSQL основана на объектно-реляционной модели, что позволяет задействовать сложные процедуры и системы правил. Примерами нетривиальных возможностей этой категории являются декларативные запросы SQL, контроль параллельного доступа, поддержка многопользовательского доступа, транзакции, оптимизация запросов, поддержка наследования и массивов.

  • Простота расширения. В PostgreSQL поддерживаются пользовательские операторы, функции, методы доступа и типы данных.

  • Полноценная поддержка SQL. PostgreSQL соответствует базовой спецификации SQL99.

  • Гибкость API. Гибкость API PostgreSQL позволяет легко создавать интерфейсы к РСУБД PostgreSQL. В настоящее время существуют программные интерфейсы для Object Pascal, Python, Perl, PHP, ODBC, Java/JDBC, Ruby, TCL, C/ C+ и Pike.

  • Процедурные языки. В PostgreSQL предусмотрена поддержка внутренних процедурных языков, в том числе специализированного языка PL/pgSQL, являющегося аналогом PL/SQL, процедурного языка Oracle. Одним из преимуществ PostgreSQL является возможность использования Perl, Python и TCL в качестве внутренних процедурных языков.

  • Технология МVСС. MVCC (Multiversion Concurrency Control) используется в PostgreSQL для управления конкурентным доступом к данным на многовариантной основе. Эта технология позволяет предотвращать лишние блокировки (locking) операций чтения операциями, производящими обновление записей. PostgreSQL отслеживает все транзакции, выполняемые пользователями базы данных, что позволяет работать с записями без ожидания их освобождения. На практике это означает, что при запросе к БД каждая транзакция видит как бы снимок данных (версию) на момент этого снимка, а не текущее состояние данных. Таким образом, транзакции защищаются от просмотра незафиксированных данных, которые в данный момент могут только формироваться конкурентными транзакциями в тех же самых строках таблицы. Основное преимущество MMVC состоит в том, что чтение данных никогда не блокирует запись, а запись никогда не блокирует чтение.