Другие - САО РАН

advertisement
Основы баз данных
Лекция 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)
• Перестройка индекса на лету
• Индекс от функции
Download