Слайд 2
ТРЕБОВАНИЯ К СУБД:
поддержка целостности данных;
согласованное хранение независимых наборов
данных;
извлечение данных и управление данными во внешней и оперативной
памяти;
надежное хранение данных несмотря на возможность сбоя в программных или технических средствах;
одновременный доступ к данным нескольким пользователям;
управление транзакциями;
поддержка языков БД;
масштабирование;
мультиплатформенность;
поддержка стандартов.
Слайд 3
ЦЕЛОСТНОСТЬ ДАННЫХ
Целостность информации — данные не изменяются при
передаче, хранении или отображении.
Целостность базы данных (database integrity) или
согласованность, или корректность и непротиворечивость — соответствие имеющейся в БД информации её внутренней логике, структуре и явно заданным правилам. Каждое правило, налагающее некоторое ограничение на возможное состояние базы данных, называется ограничением целостности (integrity constraint).
Целостность БД не гарантирует достоверности содержащейся в ней информации, но обеспечивает правдоподобность этой информации, отвергая заведомо невероятные, невозможные значения.
Ссылочная целостность - исключение ошибки связей между первичным и вторичным ключом. Примеры нарушений целостности:
существование записей-сирот (дочерних записей, не имеющих связи с родительскими записями);
существование одинаковых первичных ключей.
Слайд 4
Сетевые протоколы
TCP/IP
LU6.2
SPX/IPX
OSI
DECnet
Другие
Независимость от платформ
Оконные менеджеры
MS Windows
X Motif
Macintosh
Другие
Оборудование
Compaq
Sun
HP
IBM
Mac
Другие
NCR
Pyramid
Sequent
Sun
Intel
Операционные системы
OS/390
TRU64
Solaris
AIX
HP
Unix
NT
Linux
Другие
Слайд 5
Независимость от архитектуры
Слайд 6
Поддержка стандартов
Комитеты
ANSI X3H2
X3H2.1 RDA
SQL Access Group
OMG
Стандарты баз данных
FIPS
127-2
ANSI X3-135.1992
Стандарты защиты данных:
NCSC TDI C2, B1
ITSEC F-C2/E3, F-B1/E3
Сетевые
стандарты
OSI
DNSIX (MaxSix)
Межоперабельность
IDAPI, ODBC
TSIG
X/Open
DCE
DDE
Слайд 7
История PostgreSQL
Свободно распространяемая объектно-реляционная СУБД.
1977-1985гг. Ingres -
«тренировочный» проект создания классической реляционной системы управления базами данных.
Разрабатывался под руководством М. Стоунбрейкера в Калифорнийском университете в Беркли
1986-1994гг. Postgres = Post Ingres – команда Стоунбрейкера разрабатывали новую СУБД, при создании которой использовались многие ранее сделанные наработки. Были введены процедуры, правила, пользовательские типы и многие другие компоненты.
1995г – по наст. вр. PostgreSQL - разработка разделилась: Стоунбрейкер - создание коммерческой СУБД Illustra (потом Informix), а его студенты - разработка Postgres95, в которой язык запросов POSTQUEL — наследие Ingres — был заменен на SQL. Разработка Postgres95 была выведена за пределы университета и передана команде энтузиастов. С этого момента СУБД получила имя, под которым она известна и развивается в текущий момент — PostgreSQL.
Слайд 8
СУБД PostgreSQL
наиболее развитая СУБД с открыты кодом;
надежность и
устойчивость при больших нагрузках;
кросс-платформенность: работает в широком диапазоне диалектов
UNIX (Linux, FreeBSD, Solaris и т.д.), а также на платформе Microsoft Windows;
высокий уровень соответствия стандартам;
существует множество интерфейсов и библиотек взаимодействия для других языков программирования: Java (JDBC), ODBC, Perl, Python, Ruby, C, C++, PHP, Lisp, Scheme и Qt;
расширяемость;
быстродействие;
поддержка баз данных практически неограниченного размера.
Слайд 9
Архитектура PostgreSQL
Архитектура разбита на 3 основные подсистемы:
Front End
- клиентская часть системы.
Серверная часть - серверные процессы и
контролирующий процесс Postmaster, отвечающий за взаимодействие с клиентами.
Back End - включающий хранилище данных и средства управления хранилищем.
Слайд 10
Серверная часть
Обработка запроса :
Парсер принимает запрос и проверяет
его синтаксис. В результате формируется дерево разбора или в
случае неверного синтаксиса генерируется ошибка.
Служба контроля трафика. Простые запросы исполняются, а сложные передаются компоновщику.
Компоновщик принимает дерево разбора запроса и преобразует его в альтернативную вспомогательную форму.
Планировщик определяет наиболее оптимальный способ выполнения сложного SQL-запроса и передаёт управление модулю исполнения.
Модуль исполнения выполняет запрос.
Слайд 11
Средства управления хранилищем
доступ к данным
управление хранилищем
системные утилиты
Слайд 12
Средства управления хранилищем
Взаимодействие с хранилищем:
Службы доступа -- связь
между процессами Postgres и физическим диском. Они обеспечивает семафоры
и блокировки файлов, а также отвечают за индексирование, сканирование, поиск, компиляцию и возвращение запрошенных данных.
Образец базы данных создаётся с помощью загрузочного модуля при первом запуске СУБД.
Управление хранилищем включает несколько подсистем:
Модуль сбора статистики - информация о доступе к таблицам и индексам, вызовах серверных функций и командах, выполненных модулем исполнения.
Сборщик мусора Auto-Vacuum —автоматическое освобождение неиспользуемой памяти в таблицах.
Фоновый процесс записи логов – журналирование произведённых операций и информация для резервного восстановления системы в случае сбоя.
Системные утилиты предоставляет некоторые общие функции для процессов серверной части.
Слайд 13
История ORACLE
Коммерческая объектно-реляционная универсальная СУБД.
1979 — Oracle v2
первая коммерческая система управления реляционными базами данных на основе
языка запросов SQL, не поддерживала транзакции, но реализовывала основную функциональность SQL. Первая версия была написана на ассемблере, работала на системе PDP-11 под управлением ОС RSX-11, используя 128 кб ОП.
1983 — v3 (на Си); функции COMMIT и ROLLBACK для реализации транзакций. Первая СУБД, работающей одновременно на мейнфреймах, миникомпьютерах и ПК. Поддержка платформ была расширена (DEC, VAX/VMS + Unix).
1984 — v4; средства управления параллельным выполнением операций, такие как многоверсионное согласованное чтение и другие необходимые для параллельных вычислений возможности.
1985 — v5, одна из первых СУБД, работающих в клиент-серверных средах. Появляется поддержка распределённых запросов, кластеров таблиц .
1988 — v6, поддержка блокировок на уровне строк и средств «горячего» резервирования. Появляется поддержка встроенного языка PL/SQL . С 6.2 - поддержка средств оперативной обработки транзакций (OLTP).
1992 — v7, с поддержкой ссылочной целостности, хранимых процедур и триггеров.
1996 — v7.3, управление данными любых типов — текстами, видеоматериалами, картами, аудиозаписями или графическими изображениями.
Слайд 14
История ORACLE
1997 — v8.0: поддержка средств объектно-ориентированной разработки, Oracle
становится объектно-реляционной СУБД.
1998 — v8i, «i» в названии обозначает «Internet».
8.1.5 - встроенная в СУБД виртуальная машина Java (JVM). Поддерживает XML (8.1.6) и содержит некоторые новшества, связанные с созданием хранилищ данных.
2001 — v9i. Cредства прямой обработки XML-документов, технология Oracle RAC (Real Application Clusters), как замена Oracle Parallel Server (OPS); механизм создания репликаций; скроллируемый курсор для программ на Си иC++; встроенная в СУБД поддержка OLAP и Data Mining; переименование столбцов и ограничений целостности;
2004 — v10g; «g» в названии обозначает «grid» («сеть»), символизируя поддержку грид-вычислений.
2007 — v11g. Возможность создания в базе данных резидентного пула соединений (DRCP), позволяющего поддерживать пул из постоянных соединений с базой данных (например для веб-серверов Apache, IIS, приложений на PHP, Perl и т. п.).
2009 — v11g: введена принципиально новая для Oracle возможность «горячего», без остановки сервера, внесения изменений в метаданные и бизнес-логику на PL/SQL. Это сделано с помощью механизма одновременной поддержки нескольких версий схемы и логики, именуемых editions.
2013 — v12c, поддержка подключаемых баз данных обеспечивающая свойства мультиарендности и живой миграции баз данных, суффикс «c» в названии обозначает англ. cloud (облако).
Слайд 15
Файлы. Имеется пять видов файлов, образующих базу данных
и поддерживающих экземпляр ‑ файлы параметров, сообщений, данных, временных
данных и журналов повторного выполнения.
Структуры памяти, в частности системная глобальная область (System Global Area — SGA), входящие в SGA Java-пул, разделяемый пул и большой пул, а также PGA (Program Global Area) и UGA (User Global Area).
Физические процессы или потоки. Три типа процессов, образующих экземпляр: серверные процессы, фоновые процессы и подчиненные процессы.
Компоненты архитектуры Oracle
База данных — набор физических файлов операционной системы;
Экземпляр — набор процессов Oracle и область SGA
SGA — область памяти, содержащая внутренние структуры данных, доступ к которым необходим всем процессам для кэширования данных с диска, кэширования данных повторного выполнения перед записью на диск, хранения планов выполнения разобранных операторов SQL и т.д.
Слайд 16
Пользовательский
процесс
Серверный
процесс
PGA
База данных и instance (экземпляр)
Экземпляр
SGA
Разделяемый пул
DBWR
LGWR
База данных
Слайд 17
Файлы СУБД
В состав базы данных и экземпляра входит
шесть типов файлов.
С экземпляром связаны файлы параметров (1).
По этим файлам экземпляр при запуске определяет свои характеристики, например размер структур в памяти и местонахождение управляющих файлов.
Базу данных образуют следующие файлы:
файлы данных (2). Собственно данные (в этих файлах хранятся таблицы, индексы и все остальные сегменты);
файлы журнала повторного выполнения (3). Журналы транзакций;
управляющие файлы (4). Определяют местонахождение файлов данных и содержат другую необходимую информацию о состоянии базы данных;
временные файлы(5). Используются при сортировке больших объемов данных и для хранения временных объектов;
файлы паролей (6). Используются для аутентификации пользователей, выполняющих администрирование удаленно, по сети.
Слайд 18
Взаимосвязь структур хранения и процессов
Слайд 19
Серверные процессы
Типовые процессы:
ckpt - процесс отвечающий за то,
чтобы все изменения данных в памяти были записаны на
диск;
pmon - обеспечивает наблюдение за пользовательскими процессами и высвобождение ресурсов по их завершении;
smon - обеспечивает дефрагментацию места в БД;
reco - отвечает за распределенные транзакции;
dbwr - отвечает за сохранение измененных данных на диск;
lgwr - отвечает за запись в redo log файлы;
arc - отвечает за архивирование redo log файлов
Процесс, обеспечивающий подключение по сети: listener
В Oracle 11g, 12c процессов, поддерживающих экземпляр базы данных, больше.
Слайд 20
ЖУРНАЛИРОВАНИЕ И ROLLBACK
DB Block Buffers
Log Buffer
System Global Area
Rollback
Redo
Redo
Log Files
Журналы используются только для восстановления БД (redo).
Rollback отделены
от Log.
Транзакции могут использовать больше одного журнала.
Rollback хранятся в Rollback Segments (Undo Tablespace).
Rollback Segments используются для Undo (отката) и Multi-Version Read Consistency.
DB
Log
Log
User
Слайд 21
СТРУКТУРА ХРАНИМЫХ ДАННЫХ
Единица хранения данных в БД
– хранимая запись.
Хранимая запись состоит из двух частей:
служебная
часть. Используется для идентификации записи, задания её типа, хранения признака логического удаления, для кодирования значений элементов записи, для установления структурных ассоциаций между записями и проч. Никакие пользовательские программы не имеют доступа к служебной части хранимой записи.
информационная часть. Содержит значения элементов данных.
Поля хранимой записи могут иметь фиксированную или переменную длину. Хранение полей переменной длины осуществляется одним из двух способов: размещение полей через разделитель или хранение размера значения поля. Наличие полей переменной длины позволяет не хранить незначащие символы и снижает затраты памяти на хранение данных; но при этом увеличивается время на извлечение записи.
Слайд 22
СТРУКТУРА ХРАНИМЫХ ДАННЫХ
Каждой хранимой записи БД система
присваивает внутренний идентификатор, называемый по стандарту CODASYL ключом базы
данных (КБД).
В Oracle используется термин идентификатор строки, RowID.
Значение КБД формируется системой при размещении записи и содержит информацию, позволяющую однозначно определить место размещения записи (преобразовать значение КБД в адрес записи).
Примеры:
1) Формат DBF: 1 таблица – 1 файл, записи фиксированной длины – в качестве КБД выступает последовательный номер записи в файле (относительная адресация).
2) СУБД Oracle – совокупность номера экстента, блока и номера строки в блоке (относительная адресация).
3) Абсолютный адрес в памяти (СУБД Adabas).
Слайд 23
УПРАВЛЕНИЕ ПРОСТРАНСТВОМ ПАМЯТИ
Для обеспечения более эффективного управления ресурсами
и/или для технологического удобства всё пространство памяти БД обычно
разделяется на части (области, сегменты и др.).
Области разбиваются на пронумерованные страницы (блоки) фиксированного размера. В большинстве систем обработку данных на уровне страниц ведёт операционная система (ОС), а обработку записей внутри страницы обеспечивает только СУБД.
Страницы представляются в среде ОС блоками внешней памяти или секторами, доступ к которым осуществляется за одно обращение. Некоторые СУБД позволяют управлять размером страницы (блока) для базы данных.
В каждой области памяти, как правило, хранятся данные одного объекта БД (одной таблицы).
Сведения о месте расположения данных таблицы (ссылка на область хранения) СУБД хранит в словаре-справочнике данных (ССД).
Слайд 24
Способы управления свободным пространством памяти на страницах:
ведение списков
свободных участков;
динамическая реорганизация страниц.
При динамической реорганизации страниц записи БД
плотно размещаются вслед за заголовком страницы, а после них расположен свободный участок. Смещение начала свободного участка хранится в заголовке страницы.
Достоинство такого подхода – отсутствие фрагментации. Недостатки:
Адрес записи может быть определён с точностью до адреса страницы, т.к. внутри страницы запись может перемещаться.
Поиск места размещения новой записи может занять много времени. Система будет читать страницы одну за другой до тех пор, пока не найдёт странницу, на которой достаточно места для размещения новой записи.
УПРАВЛЕНИЕ ПРОСТРАНСТВОМ ПАМЯТИ
Слайд 25
Ведение списков свободных участков.
Здесь можно рассмотреть два
варианта:
Ссылка на первый свободный участок на странице хранится в
заголовке страницы, и каждый свободный участок хранит ссылку на следующий (или признак конца списка). Каждый освобождаемый участок включается в список свободных участков на странице.
Списки свободных участков реализуются в виде отдельных структур. Эти структуры также хранятся на отдельных инвентарных страницах. Каждая инвентарная страница относится к области (или группе страниц) памяти и содержит информацию о свободных участках в этой области. Список ведётся как стек, очередь или упорядоченный список. В последнем случае упорядочение осуществляется по размеру свободного участка, что позволяет при размещении новой записи выбирать для неё наиболее подходящий по размеру участок.
УПРАВЛЕНИЕ ПРОСТРАНСТВОМ ПАМЯТИ
Слайд 26
ВИДЫ АДРЕСАЦИИ ХРАНИМЫХ ЗАПИСЕЙ:
Прямая адресация предусматривает указание непосредственного
местоположения записи в пространстве памяти (например, в системе ADABAS).
Недостатки: большой размер адреса; прямая адресация не позволяет перемещать записи в памяти без изменения КБД, что ведёт к фрагментации памяти.
Косвенная адресация. В качестве КБД выступает не сам "адрес записи", а адрес места хранения "адреса записи".
Относительная адресация. Общий принцип относительной адресации заключается в том, что адрес отсчитывается от начала той области памяти, которую занимают данные объекта БД. Если память разбита на страницы (блоки), то адресом может выступать номер страницы (блока) и номер записи на странице (или смещение от начала страницы). В случае относительной адресации перемещение записи приведёт к изменению КБД и необходимости корректировки индексов, если они есть.
Слайд 27
ПРИМЕР КОСВЕННОЙ АДРЕСАЦИИ
Часть адресного пространства страницы выделяется под
индекс страницы. Число статей (слотов) в нём одинаково для
всех страниц. В качестве КБД записи выступает совокупность номера нужной страницы и номера требуемого слота в индексе этой страницы (значения N, i). В i‑м слоте на N-й странице хранится собственно адрес записи (смещение от начала страницы).
Слайд 28
ОСНОВНЫЕ ФИЗИЧЕСКИЕ СТРУКТУРЫ ORACLE
TABLESPACE
SEGMENT
EXTENT
BLOCK
Файлы – это файлы операционной
системы, выделенные для хранения базы данных.
Табличная область (TABLESPACE, табличное
пространство) – область памяти, предназначенная для хранения всех объектов БД. Табличная область имеет имя и занимает один или более файлов операционной системы. Создается командой CREATE TABLESPACE.
Сегмент (SEGMENT) – область памяти, занимаемая данными одного объекта БД. Имя совпадает с именем объекта.
Экстент (EXTENT) – непрерывная область памяти, относящаяся к одному сегменту.
Блок (BLOCK) – область памяти, которая считывается и записывается на диск за одно физическое чтение.
db_block_size – размер блока
Слайд 29
ФОРМАТ БЛОКА ДАННЫХ ORACLE
Заголовок (общий и переменный)
содержит общую информацию блока - адрес блока и тип
сегмента (сегмент данных, сегмент индекса или сегмент отката).
Оглавление таблиц - часть блока с информацией о том, какие таблицы имеют строки в этом блоке.
Оглавление строк - эта часть блока содержит информацию о действительных строках в блоке (включая адреса каждой порции строки в области данных строк).
После того, как в оглавлении строк распределено пространство, это пространство не освобождается при удалении строки. Это пространство используется повторно лишь тогда, когда в блок вставляются новые строки.
Данные строк - эта порция блока содержит данные таблицы или индекса.
Свободное пространство в блоке используется для вставки новых строк и для обновлений строк, требующих дополнительного пространства.