Вопросы и задания по OLAP и хранилищам данных
OLAP
- OLAP и хранилища данных. Назначение. Основные характеристики.
- OLAP и OLTP системы. Характеристики и основные отличия.
- Правила Кодда для OLAP систем.
- Многомерное представление данных как основной способ логического представления данных. Назначение, классы задач, преимущества и недостатки в сравнении с реляционной моделью. Срезы многомерных кубов и их визуальное представление.
- Типы OLAP. Преимущества и недостатки.
- Многомерный OLAP - MOLAP. Основные преимущества. Представление данных. Основные операции над данными. Преимущества и недостатки.
- Реляционный OLAP - ROLAP. Основные преимущества. Представление данных. Основные операции над данными. Преимущества и недостатки.
- Гибридный OLAP - HOLAP. Основные преимущества. Представление данных. Основные операции над данными. Преимущества и недостатки.
- Общая схема организации хранилища данных.
- Структура хранилища данных в ORACLE. CWM модель и ROLAP
- Структура хранилища данных в ORACLE. CWM модель и MOLAP
- Моделирование многомерных кубов на реляционной модели данных. Схема звезда. Преимущества и недостатки.
- Моделирование многомерных кубов на реляционной модели данных. Схема снежинка. Преимущества и недостатки.
- Моделирование многомерных кубов на реляционной модели данных. Подходы к хранению агрегатов.
- Технологии Oracle для организации хранилищ данных. Материализованные VIEW
- Технологии Oracle для организации хранилищ данных. Секционированные таблицы
Расширения SQL для OLAP
- Расширения SQL для организации OLAP запросов. Обзор.
- ROLLUP - расширение к GROUP BY.
- CUBE - расширение к GROUP BY.
- GROUPING SETS - расширение к GROUP BY.
- Составные столбцы в GROUP BY.
- Конкатенация групп в GROUP BY.
- Вспомогательные функции - GROUPING, GROUPING_ID, GROUP_ID
- "Оконные" агрегирующие функции в SQL. Синтаксис, отличие от классических функций агрегирования, основные возможности.
- Конструкция MODEL. Синтаксис, варианты использования
Задачи
Группа 1
Краткое описание предметной области.
Продажа билетов на авиарейсы.
Сущности - номер рейса, время рейса, класс билета, аэропорт вылета, аэропорт прибытия.
Характеристики аэропорта - название, город, страна
- Требуется построить OLAP схему с нормализованными измерениями.
- Требуется построить OLAP схему с ненормализованными измерениями.
- Требуется построить OLAP схему с нормализованными измерениями и хранением агрегатов (1-2 для примера) в отдельных таблицах.
Группа 2
Есть таблицы:
- товар(номер, название)
- покупатель(номер, имя)
- продажа(номер_товар, номер_покупатель, дата, кол-во проданного товара, цена за единицу товара)
- Построить запрос, выбирающий покупателя из числа купивших максимальное кол-во телевизоров, который заплатил за них самую дешевую цену. Указать необходимые индексы для оптимального выполнения запроса.
- Построить запрос, выбирающий товар, не купленный за последний месяц ни одним покупателем. Указать необходимые индексы для оптимального выполнения запроса.
- Построить запрос, выбирающий общее количество денег, потраченное каждым первым покупателем года. Указать необходимые индексы для оптимального выполнения запроса.
Группа 3
Есть таблица test(i number, j number, s varchar2(100))
На таблице созданы индексы:
i1(i, j)i2(i)
i3(j)
i4(i, s)
i5(j, s)
i6(s, i)
i7(s, j)
Необходимо указать, какие индексы могут быть использованы в следующих запросах
- select * from test where i > 10 and j < 100
- select * from test where i = 10
- select * from test where j between 10 and 20 and s like '%data'
- select * from test where i is null and j > 100 and j < 300
- select * from test where i is null
- select * from test where j-100 = 50
- select * from test where j*2 > 50
- select * from test where s = '%data'
- select * from test where s like '%data' and i = 30
- select * from test where s like 'data%' and i*j = 30
- select * from test where i*j = 30
- select * from test where to_char(i) = '111'
- select * from test where to_char(i) = '111' and to_number(s) > 0
- select * from test where to_number(s) > 0
- select * from test where i = to_number('123')
- select * from test where s = to_char(sysdate)
- select * from test where i is null or j > 100 and j < 300
- select * from test where s like '%data' or i = 30
- select * from test where s like 'data%' or i*j = 30
- select * from test where s like 'data%' order by i, j
- select * from test where s like '%data%' order by j
- select * from test where i*j = 10 order by i
Группа 4
Eсть таблица student(id number not null primary key, family varchar2(100), grp number check (grp between 1 and 10))
В таблице содержатся данные о студентах 8 факультета 1-6 курсов.
Необходимо создать индексы нужного типа для эффективного выполнения запросов
- select * from student where id > 100
- select * from student where id = and grp = 3
- select * from student where family like 'ИВАНОВ%'
- select * from student where family like '%ОВА'
- select * from student where family like 'ИВАНОВ%' and grp in (1, 6)
- select * from student where family like '%ОВА' and grp in (1, 6)
- select * from student where family = 'ИВАНОВ' and grp = 1
- select * from student where id = 12 and grp = 4
- select * from student where grp = 4
- select * from student where grp > 0
- select * from student where family = 'ИВАНОВ' and grp = 4
- select * from student where id between 1 and 30 and grp = 4