
- •Курс лекцій з дисципліни «розподілені системи баз даних і знань» для студентів 5 курсу спеціальності 8.05010104 “системи штучного інтелекту” денної форми навчання
- •Оглавление
- •1. Лекция: Архитектура и принципы распределенного подхода. Требования и критерии построения информационных систем на базе распределенных баз данных (рбд)
- •2. Лекция: Многомерное представление данных. Общая схема организации хранилища данных. Характеристики, типы и основные отличия технологий olap и oltp. Схемы звезда и снежинка. Агрегирование
- •Olap и oltp. Характеристики и основные отличия
- •Правила Кодда для olap систем
- •Основные элементы и операции olap
- •Типы olap. Преимущества и недостатки
- •Моделирование многомерных кубов на реляционной модели данных
- •Основные понятия сетевой терминологии
- •Проектирование сетей рабочей группы (инженерный подход)
- •Тонкий коаксильный кабель (диаметр до 5 мм)
- •Толстый коаксиальный кабель (диаметр до 10 мм)
- •Кабель с витыми парами
- •Оптоволоконный кабель
- •Средства управления лвс
- •Способы и средства увеличения пропускной способности лвс
- •Защита информации и повышение безопасности работы в лвс
- •4. Лекция: Логическая модель рбд. Бизнес-логика файл-серверной, клиент-серверной и n-уровневой архитектуры Логическая модель рбд
- •Файл-сервер
- •Клиент-сервер с бизнес-логикой на клиенте
- •Клиент-сервер с бизнес-логикой на сервере
- •Базовые технологии. Сравнение на понятийном уровне
- •Понятие о технологии corba
- •Объектная архитектура распределенных систем. Понятие о технологии ejb
- •Объектная архитектура распределенных систем. Понятие о технологии .Net
- •Объектные модели corba и com. Основные различия
- •Идентификация объектов corba и com в сети. Основные различия
- •Языки описания интерфейсов corba и com. Основные свойства
- •Основные встроенные объектные службы corba и com
- •6. Лекция: Распределенные субд. Архитектура ms sql Server 2005 и oracle Server 10g
- •Процессы oracle. Отличия между shared и dedicated экземплярами
- •Табличные пространства. Структура табличных пространств. Типы табличных пространств Словарь данных (словарь данных Oracle)
- •Сегменты отката undo (rollback)
- •Временные (temporary)
- •7. Лекция: Понятие транзакции. Неявные и явные транзакции. Уровни изолированности транзакций в ms sql Server 2005 и oracle 10g. Понятие блокировок. Основные типы блокировок
- •Уровни изолированности транзакций, отличия реализации Oracle от других субд
- •Особенности реализации транзакций в Oracle и ms Sql Server Общие операторы управления транзакциями
- •Понятие блокировок. Основные типы блокировок
- •Взаимоблокировки
- •8. Лекция: Репликация данных. Виды и свойства репликации. Сравнение механизмов репликации в ms sql Server 2005 и oracle Server 10g
- •Протоколы на базе первичной копии, подразумевающие репликацию данных
- •Протокол первичного архивирования с удаленной записью
- •Протокол первичного архивирования с локальной записью
- •Пример решения задач поиска и смены владельца первичной копии
- •Алгоритм поиска первичной копии
- •Алгоритм смены владельца первичной копии
- •Протоколы реплицируемой записи
- •Активная репликация
- •Протоколы кворума
- •Замечания по поводу реализации свободной непротиворечивости
- •Задача получения новой непротиворечивой реплики
- •Алгоритм, иллюстрирующий 1-ый подход
- •Алгоритм получения глобального состояния системы
- •Алгоритм, иллюстрирующий 2-ой подход
- •Сравнение механизмов репликации в ms sql Server 2005 и oracle Server 10g
- •Методы разрешения конфликтов уникальности
- •Методы разрешения конфликтов удаления
- •Методы разрешения конфликтов обновления Приоритет узла (Site priority в Oracle и ms SqlServer)
- •Сложение(Additive в Oracle и ms SqlServer)
- •Усреднение(Average в Oracle и ms SqlServer)
- •Последняя временная метка(Latest Timestamp в Oracle, datetime (Earlier Wins) в ms SqlServer)
- •Первая временная метка(Earliest Timestamp в Oracle, datetime (LaterWins) в ms SqlServer)
- •9. Лекция: Внутренний язык субд. Сравнительные характеристики t-sql и pl/sql Введение
- •Основные характеристики pl/sql и t-sql
- •Именованные блоки
- •Управляющие конструкции
- •Неявное использование переменной цикла
- •Динамическое изменение границ
- •Использование меток
- •Основные объекты. Хранимые процедуры и функции
- •Основные объекты. Триггеры
- •10. Лекция: Хранимые процедуры и функции. Типы параметров, синтаксис описания формальных параметров
- •Параметры
- •Возврат результатов
- •Создание процедур
- •Создание функций
- •Вызов процедур и функций
- •Передача параметров. Атрибут nocopy
- •Модули pl/sql
- •Просмотр объектов и компиляция
- •Перекомпиляция процедур и функций
- •Скрипт для перекомпиляции процедур и функций
- •11. Лекция: Триггеры. Основные понятия. Типы триггеров. Общая схема активизации триггеров
- •Триггеры sql Server Создание триггеров
- •Синтаксис команды создания триггера creat trigger
- •Удаление триггеров
- •Триггеры Oracle Подготовка примера
- •Создание триггера
- •Типы триггеров и порядок их выполнения
- •Использование предикатов inserting, ... И new, old
- •Изменяющиеся таблицы
- •12. Лекция: Оптимизация выполнения запросов Выполнение запросов в Oracle. Общая схема и взаимодействие с клиентским приложением и машиной pl/sql
- •Оптимизатор. Его назначение. Этапы работы оптимизатора
- •Режимы работы оптимизатора по стоимости. Установка режимов. Параметры, влияющие на работу оптимизатора
- •Статистика. Назначение, способы формирования
- •Сбор статистики с помощью analyze
- •Сбор статистики с помощью пакета dbms_stats
- •Статистика по таблицам
- •Статистика по индексам
- •Статистика по столбцам
- •Пути доступа к данным Подготовка данных
- •Полное сканирование таблицы. Преимущества, недостатки
- •Классические индексы
- •Доступ к таблицам по индексам
- •Функциональные индексы
- •Битовые индексы
- •Индекс-организованные таблицы
- •Принципы построения запросов для эффективного использования индексов
- •Материализованные представления
- •Создание объектов
- •Информация по материализованным представлениям
- •Оценка требуемого размера
- •Способы построения
- •Частота обновления
- •Способ обновления
Материализованные представления
Как известно, представление (view) — это запрос на выборку, хранящийся на сервере, как отдельный объект. Так как, результат этого запроса можно рассматривать в качестве таблицы, представление допускается использовать в других запросах, также как любую обычную таблицу. Материализованное представление хранится на сервере в виде таблицы, которая автоматически обновляется при изменении данных, имеющих отношение к этому представлению. При выполнении запроса, основанного на материализованном представлении, используются не исходные таблицы и запрос, на котором основано представление, а данные, которые хранятся в этом представлении. За счет этого скорость выполнения запросов может быть повышена на порядки. Основным недостатком материализованного представления является то, что для его использования требуется дополнительная дисковое пространство и его необходимо синхронизировать с основными данными.
Создание объектов
drop table h1;
drop table h2;
create table h1(n number primary key, s varchar2(100) null, n1 number null, s1 varchar2(100));
create table h2(n number primary key, s varchar2(100) null, n1 number null, s1 varchar2(100));
insert into h1(n, s, n1, s1) select object_id, object_name, object_id, owner from all_objects;
insert into h2(n, s, n1, s1) select object_id, object_name, object_id, owner from all_objects;
analyze table h1 compute statistics for table for all columns for all indexes;
analyze table h2 compute statistics for table for all columns for all indexes;
create view v1 as select h1.n, h1.s, h2.s1, h2.n1 from h1 inner join h2 on h1.n = h2.n and h1.s = h2.s;
select * from v1 where n = 10 and s = '23423';
grant create materialized view to bor;
grant query rewrite to bor;
create materialized view v2 as select h1.n, h1.s, h2.s1, h2.n1 from h1 inner join h2 on h1.n = h2.n and h1.s = h2.s;
select * from v2 where n = 10 and s = '23423';
create index iv on v2(n);
select * from v2 where n = 10 and s = '23423';
Листинг 12.6. (html, txt)
Информация по материализованным представлениям
select * from user_mviews;
select * from user_views;
select * from user_segments where segment_name in
('V1', 'V2');
create materialized view v3 as select h1.s1 s1,
count(h1.n1) n1 from h1 group by s1 having count(*) > 1;
select h1.s1 s1, count(h1.n1) n1
from h1 group by s1 having count(*) > 1;
select s1, n1 from v3;
Оценка требуемого размера
variable v_rows number
variable v_bytes number
exec DBMS_MVIEW.ESTIMATE_MVIEW_SIZE
(1, 'select h1.s1 s1, count(h1.n1) n1 from h1 group by s1 having count(*)
> 1', :v_rows, :v_bytes);
print :v_rows :v_bytes
Способы построения
Существует два способа формирования представления - непосредственно при его создании или отложенное, по явной команде.
drop materialized view v3;
create materialized view v3 build immediate as select h1.s1 s1,
count(h1.n1) n1 from h1 group by s1 having count(*) > 1;
create materialized view v3 build deferred as select h1.s1 s1,
count(h1.n1) n1 from h1 group by s1 having count(*) > 1;
select * from v3;
exec dbms_mview.refresh('V3');
select * from v3;
Частота обновления
Материализованное представление может синхронизироваться с исходными данными или автоматически на момент завершения транзакции или по явной команде синхронизации. Возможна синхронизация по расписанию.
drop materialized view v3;
create materialized view v3 build immediate refresh complete on commit as select h1.s1 s1, count(h1.n1) n1 from h1 group by s1;
insert into h1(n, s, n1, s1) values(-1, 'aaa', -1, 'aaa');
insert into h1(n, s, n1, s1) values(-2, 'aaa', -2, 'aaa');
select * from v3;
commit;
select * from v3;
drop materialized view v3;
create materialized view v3 build immediate refresh complete on commit as select h1.s1 s1, count(h1.n1) n1 from h1 group by s1 having count(*) > 1;
create materialized view v3 build immediate refresh complete on demand as select h1.s1 s1, count(h1.n1) n1 from h1 group by s1 having count(*) > 1;
insert into h1(n, s, n1, s1) values(-3, 'bbb', -3, 'bbb');
insert into h1(n, s, n1, s1) values(-4, 'bbb', -4, 'bbb');
commit;
exec dbms_mview.refresh('V3', 'F' /* ? C */);
drop materialized view v3;
create materialized view v3 build immediate refresh complete start with '17-MAY-2004' next sysdate+1 as select h1.s1 s1, count(h1.n1) n1 from h1 group by s1 having count(*) > 1;
@?/rdbms/admin/utlxmv.sql
set linesize 200
column statement_id format a15
column mvowner format a5
column mvname format a10
column statement_id format a3
column related_text format a10
column msgtxt format a60
exec dbms_mview.explain_mview('v3', '111');
select * from mv_capabilities_table;
exec dbms_mview.explain_mview('select h1.s1 s1, count(h1.n1) n1 from h1 group by s1', '222');
select * from mv_capabilities_table where statement_id = 222;
Листинг 12.7. (html, txt)