Основы баз данных Лекция 3. Основы архитектуры СУБД Oracle Желенкова Ольга Петровна, с.н.с. ОИ САО РАН, к.ф.-м.н. 14-18 апреля 2008 • СУБД Oracle • База данных и экземпляр базы данных, серверные процессы • Объекты и понятия БД • Структура базы данных Oracle • Типы данных • Программируемость • Триггеры, индексы Oracle занимает почти половину мирового рынка СУБД − − − − − − − − − Высокая надежность VLDB 8 экзабайт Высокая производительность Надежная система защиты Различные архитектуры клиент/сервер, 3х-уровневая, кластер, GRID Многосерверные архитектуры Многоплатформенность Все типы данных Различные приложения (OLTP-Online Transaction Processing, DSSDecision Support System, OLAP - Online Analytical Processing, Mining) − Управляемость (EM) Независимость от платформ Операционные системы Оконные менеджеры − MS Windows − X Motif − Macintosh − Character Mode − Block Mode − Другие Сетевые протоколы • • • • • • TCP/IP LU6.2 SPX/IPX OSI DECnet Другие Оборудование • • • • • • Compaq Sun HP IBM Mac Другие • • • • • • • • • • • • • OS/390 TRU64 Solaris AIX HP Unix NT Linux Другие NCR Pyramid Sequent Sun Intel Независимость от архитектуры Один Процессор Симметричная многопроцес-сорная архи-тектура (SMP) Слабо сцепленные Массивно процессоры (кластер) параллельный Можно использовать любые вычислительные архитектуры. компьютер (MPP) Соглашения по стандартам Стандарты баз данных • FIPS 127-2 • ANSI X3-135.1992 ORANGE BOOK TTE OF OF VVAA LLIID I CA D FF IC ON TIIO AAT CEE C RRTT I I ANSi SQL FIPS Комитеты • • • • Стандарты защиты данных Текущее состояние: • NCSC TDI C2, B1 • ITSEC F-C2/E3, F-B1/E3 ANSI X3H2 X3H2.1 RDA SQL Access Group OMG Сетевые стандарты • OSI • DNSIX (MaxSix) Межоперабельность • IDAPI, ODBC • TSIG • X/Open • DCE • DDE База данных и instance (экземпляр) Экземпляр SGA Серверный процесс Разделяемый пул PGA Пользовательский процесс DBWR Управляющие файлы Файл параметров Файл паролей LGWR Файлы журнала Файлы данных База данных Архив журнальных файлов Файлы операционной системы Существуют следующие основные группы файлов на диске, составляющие базу данных: 1. 2. 3. 4. 5. Файлы базы данных - *dbf Управляющие файлы - control file Журнальные файлы - redo & arch Файл настроек oracle - init.ora Файл паролей - orapw System Global Area и процессы Экземпляр SGA Кеш буферов БД SMON Разделяемый пул Библиотечный кеш Журнальный буфер DBWR PMON initU15.ora SQLPLUS> CONNECT / AS SYSDBA SQLPLUS> STARTUP PFILE=/DISK1/initU15.ora Кеш словря данных CKPT LGWR ARCH Типы структур хранения Серверные процессы • Типовые процессы ckpt - процесс отвечающий за то, чтобы все изменения данных в памяти были записаны на диск; pmon - обеспечивает наблюдение за пользовательскими процессами и высвобождение ресурсов по их завершении; smon - обеспечивает дефрагментацию места в БД; reco - отвечает за распределенные транзакции; dbw0 - отвечает за сохранение измененных данных на диск; lgwr - отвечает за запись в redo log файлы. arc - отвечает за архивирование redo log файлов Процесс обеспечивающий подключение по сети: LISTENER В Oracle 11g процессов, поддерживающих экземпляр базы данных, больше • Startup – стартует экземпляр • Shutdown – останавливает экземпляр − Immediate − Нельзя просто выключить Журналирование и Rollback System Global Area Журналы используются только для восстановления БД (redo) Rollback отделены от Log Транзакции могут использовать > 1 журнала Rollback хранятся в Rollback Segments (Undo Tablespace) Rollback Segments используются для Undo (отката) и Multi-Version Read Consistency DB Block Buffers Rollback Log Buffer Redo Log Log User DB Redo Log Files Структура базы данных База данных Табличное пространство Файл данных Сегмент Логическая Физическая Экстент Блок Oracle Блок ОС • В одной БД могут быть tablespaces с разными размерами блока • Схема и пользователь • Все объекты в схемах Объекты и понятия БД • Таблицы (partitions – секционирование таблиц) • Индексы • Индексные таблицы • Rollback сегменты • Временные сегменты • Сегменты LOB • Вложенные таблицы • View • Массивы • Пользовательские типы данных • Sequence • Материализованные view • Программные единицы (proc, func, pack) • Иерархии • Триггеры • Пользователи • Ограничения • Синонимы • Кластер • Database link • Dimension • Привилегии • Роли Типы данных Oracle Тип данных Пользовательский Скалярный CHAR(N), NCHAR(N) VARCHAR2(N), NVARCHAR2(N) NUMBER(P,S) DATE RAW(N) BLOB, CLOB, NCLOB, BFILE LONG, LONG RAW ROWID Встроенный Коллекция Ссылки VARRAY REF TABLE Массивы и встроенные таблицы • Массивы − Массивы с переменной длиной: VARRAY − Обеспечивают упорядоченные 1-to-many отношения − Набор скалярных величин − Доступны через PL/SQL • Встроенные таблицы (Nested Tables) − Обеспечивают неупорядоченные 1-to-many отношения − Набор скалярных величин − Доступ через SQL DML Типы данных для хранения больших объектов LONG, LONG RAW LOB Один столбец в таблице Несколько столбцов в таблице До 2 гигабайтов До 4 гигабайтов SELECT возвращает данные SELECT возвращает указатель Внутреннее хранение данных Внутреннее или внешнее хранение данных Нет поддержки объектов Поддержка объектных типов Последовательный доступ Произвольный доступ Новая функциональность для реализации объектных расширений • Определение новых способами • Возможность определения для новых типов: − Специального индексирования − “Перегрузки“ операций − Настройки оптимизатора − Сервисных функций Object Types Indexes Operators Optimizer Services Data Cartridge типов различными Три́ггер – хранимая процедура особого типа, которую пользователь не вызывает непосредственно, а исполнение которой обусловлено наступлением определенного события Триггер на уровне таблицы CREATE OR REPLACE TRIGGER tr2 AFTER UPDATE ON rayon BEGIN insert into info values ('table "rayon" has changed'); END; Триггер на уровне строки CREATE OR REPLACE TRIGGER tr1 AFTER UPDATE ON rayon FOR EACH ROW BEGIN insert into info values ('one string in table "rayon" has changed'); END; Ограничения целостности DEPT DEPTNO 35 Декларативный синтаксис Ссылочная целостность Каскадное удаление Enable/Disable Exception Reporting DNAME Accounting EMP EMPNO MGR DEPTNO PROJECT 5540 Smith 35 108392 7935 5892 8100 PROJ PROJNO BUDGET DEPTNO 462340 225000.00 54 942384 10000.00 35 402933 35000.00 28 108392 20509.00 50 Программируемость Implicit Operations Database Triggers Определенные точки срабатывания Enable/Disable Create or Replace Множество триггеров одного типа Доступ к “:old” & “:new” значениям Хранятся в откомпилированном виде Before Statement Before Row After Row After Statement Новые типы событий Trigger • Новые триггеры − − − − − − − − STARTUP SHUTDOWN SERVERERROR LOGON LOGOFF CREATE ALTER DROP • Новый уровень триггеров − База данных − Схема CREATE TRIGGER register_open ON DATABASE STARTUP BEGIN … dbms_aq.enqueue(...); … END; Программируемость Хранимые процедуры Пакеты Функции Полномасштабный язык Return Cursor Exception Handlers SQL3 Syntax Persistent Variables Overloading Encapsulation Dependency Tracking Wrappers Server Side File I/O PL/SQL и Java Cancel Ship Check Status Application Partitioning PL/SQL • Процедурный и непроцедурный язык • Циклы, ветвления, обработка ошибок и т д • Язык логики БД • Расширение языка SQL • Интерпретатор и компилятор • Инструмент SQL Developer Пример процедуры на PL/SQL / begin for i in 1 .. 10 loop insert into t values ( i ); if ( mod(i, 100) = 0) then commit; end if; end loop; end; Oracle : интегрированная виртуальная Java машина • Почему Java в БД ? - Производительность, масштабиру- Oracle Java VM JDK libraries, APIs Native Compiler Class Loader Shared memory RDBMS libraries емость, переносимость, управляемость, безопасность • The Oracle Java VM - Масштабируемость: 50 - 150K байт/ сессия vs 3-6M на JDK - Быстрее: скомпилированный код выполняется в 40 раз быстрее, чем интерпретируемый код - Интегрирован с SQL, PL/SQL - Стандартизация - 100% Java, JDK , standard API - Servlet , JSP , EJB , JNDI Enterprise Java Engine • Поддержка различных сервисов Java − JNDI, JTA, Java Security, SSL, JMS, RMI/IIOP, Persistence • Оптимизация производительности времени выполнения − Bytecode Accelerator (компиляция) • Web контейнеры − Servlet, Java Server Pages − Масштабируемый EJB контейнер (Entity EJB, XML descriptors) − JDBC 2.0 драйверы • Индекс — объект базы данных, создаваемый с целью повышения производительности выполнения запросов. Таблицы в базе данных могут иметь большое количество строк, которые хранятся в произвольном порядке, и их поиск по заданному значению путем последовательного просмотра таблицы строка за строкой может занимать много времени. Индекс формируется из значений одного или нескольких столбцов таблицы и указателей на соответствующие строки таблицы и, таким образом, позволяет находить нужную строку по заданному значению. Ускорение работы с использованием индексов достигается в первую очередь за счёт того, что индекс имеет структуру, оптимизированную под поиск например, балансированного дерева. Индексация Standard B-Tree Hash Cluster B-Tree Cluster Bit Mapped h(n) = [n /C] mod B 101101 011011 101100 110001 111101 001011 B-Tree индексы можно строить Online & in Parallel Hashing позволяет доступ к строке по хэш алгоритму Многотабличный кластер позволяет заранее соединить данные Bit Map индехы хороши для запросов к колонкам с низкой кардинальностью Индексы можно перестроить на базе существующих Индексы • Индексные таблицы • Пользовательские индексы (R*Tree) • Перестройка индекса на лету • Индекс от функции