Oracle 11g OLAP
Transcript of Oracle 11g OLAP
Oracle OLAP
Андрей Пивоваров
Oracle CIS
Что такое Oracle OLAP?
• Многомерная СУБД, встроенная в
СУБД Oracle
• Основное назначение – анализ
данных
• Построена на основе
Oracle Express Server
• Данные хранятся в т.н.
Аналитических пространствах
(Analytical Workspaces)
Структура типичной OLTP системы
Почему популярен Excel?
Куб OLAP
ВремяВремяВремяВремя
ПродуктыПродуктыПродуктыПродукты
РегионыРегионыРегионыРегионы
ПрибыльПрибыльПрибыльПрибыль
АгрегацияАгрегацияАгрегацияАгрегация
Распределение
Распределение
Распределение
Распределение
ПрогнозПрогнозПрогнозПрогноз
РостРостРостРост прибылиприбылиприбылиприбыли
Прибыль за год
ПрибыльПрибыльПрибыльПрибыль
ДоляДоляДоляДоля прибылиприбылиприбылиприбыли
ЕдиницаЕдиницаЕдиницаЕдиница
ТипТипТипТип продуктапродуктапродуктапродукта
ВсегоВсегоВсегоВсего попопопо продуктампродуктампродуктампродуктам
МесяцМесяцМесяцМесяц КварталКварталКварталКвартал ГодГодГодГод
Отличительные особенности OLAP
• Работа не только с детальными данными, но иагрегатами
• При этом разработчик приложений не думает о том, какрассчитывать агрегаты
• Обычные БД хранят только существующие данные, OLAP легко позволяет узнать, что данных нет.
• Работа с множеством иерархий, в том числе и Parent-Child
• Возможность записывать факт в произвольное местокуба
• Часто используется в финансовых системах, когда агрегатне равен сумме детальных данных
Краткая история Oracle OLAP (1/2)
• 1967 – Leonard M. Lodish и John D.C. Little основалиManagement Decision Systems (MDS)
• 1977 – Software Development Laboratories (SDL), предшественник Oracle. Основатели Larry Ellison, Bob Miner и Ed Oates.
• 1979 – Выпущена Oracle Version 2 (RDBMS)
• 1983 – MDS начинает переписывать Express на C сAED.
• 1985 – Information Resources, Inc. (IRI) приобретаетMDS. Express полностью переписан на C
• 1993 – E.F. Codd придумал термин OLAP и E.F. Codd, S.B. Codd и C.T. Salley опубликовали работу“Providing OLAP to User-Analysts: An IT Mandate”где сформулировали 12 принципов OLAP
Краткая история Oracle OLAP (2/2)
• 1995 – Oracle приобретает Express у IRI
• 1998-2000 – Oracle продолжает развитие Express и в концедевяностых начинается работа по интеграции Express в ядроOracle
• 2002 – Oracle 9.2.0 – Express интегрирован в ядро Oracle и названOLAP option
• 2003 – Oracle 9.2.0.3 – OLAP option протестирована на 10,000 пользователях в Oracle 9i RAC
• 2004 – 10.1.0 – OLAP добавлены возможности доступа по SQL исекционирование
• 2004 – 10.1.0 – В OLAP option появляется новая запатентованнаятехнологния агрегирования и управления разреженнымиданными
• 2005 – 10.2.0 – первое терабайтное Аналитическое пространство
• 2007 – Выпущена Oracle Database 11g
• 2007 – 11.1 – OLAP option интергрирована с механизмом query rewrite для использования кубов в качестве материализованныхпредставлений.
Терминология OLAP
• Measure (Показатель). Обычно хранят численные
значения, такие как объем продаж, цена и т.д.
• Бывают хранимые и вычисляемые
• Dimension (Измерение). Разрезы, по которым разбиты
факты. Например, Время, Номенклатура, География и
т.д.
• Hierarchy (Иерархия). Задают соотношения между
элементами измерения, структуру изменения.
(Год->Квартал->Месяц->День)
• DML – внутренний язык Oracle OLAP. Аналог – PL/SQL
для Oracle.
Типы иерархий
Director
VP Admin
Analyst
Senior Director
VP
President
День
Месяц
Квартал
Год
Уровневые Родитель-потомок(parent-child)
Director
Admin
Расчет иерархий
569
184 182 203
44
6 38
98 42
43 55 14 28
15 79
12 3 74 5
75 46
11 64 27 19
82
4 78
88
1 87
Количество фактов – 18
Количество ячеек всего – 31
В этом случае, после агрегации объем увеличивается на 72%
А это всего лишь одномерный случай!
Разреженность
• Потенциальный объем куба равен произведению количества
элементов всех измерений
• В моем примере 4 измерения
(15х190х71х120 = 24 282 000)
• Количество фактов, загружаемых в куб – 654 117
• 2.7% от 24 282 000
• Количество заполненных ячеек после агрегации – 4 896 002
• 20% от 24 282 000 и в 7,5 раз больше чем 654 117
• Куб разрежен (пуст) на 80%
• В реальных проектах потенциальный объем может достигать
сотен триллионов ячеек, а заполненность - долей процентов.
Разреженность
• Разреженность – одна из причин, по которой нельзя
точно просчитать объем куба, который он будет
занимать на диске.
• В зависимости от типа хранения кубов и даже
последовательности измерений – объем может сильно
меняться
• Для борьбы с большими объемами в OLAP
используются несколько типов хранения и обсчета
агрегатов, а также секционирование.
Что помнить при работе с OLAP
• Oracle OLAP – другая СУБД, со своими принципами иподходами к оптимизации.
• Частая жалоба – люди, не имеющие опыта с OLAP сталкиваются с тем, что все не работает «быстро» сразу
• Существуют миф, что если запросы на огромномобъеме данных работают медленно – данные нужнопереложить в OLAP и все будет работать быстро.
• OLAP опция динамично развивается, поэтому лучшеиспользовать как можно более позднюю версию ипатчи.
• Olap 10g сильно отличается от OLAP 9i, а OLAP 11g отличается от OLAP 10g
Доступ с помощью любых инструментов
Реляционая таблица Многомерный куб
Oracle Database 11g
Реляционные View
ДругиеBusiness
Objects
CognosOracle BI
EE
Ускорение для реляционных приложений и отчетных средств
Analytic Workspace Manager
“Enterprise Manager” для OLAP
Некоторые вещи без AWM сделать крайне сложно
Способы работы с данными в OLAP
• OLAP DML – самый низкоуровневый и самый гибкий способ
работы с OLAP
• Это работа с движком Express
• Через OLAP Worksheet (вызывается из AWM) или через пакет
DBMS_AW
• Следует использовать с осторожностью, когда дело касается,
объектов связанных с метаданными
• Настройка вычисляемых показателей в AWM (OLAP API)
• Большое количество преднастроенных шаблонов. Синтаксис
напоминает аналитические функции SQL
• SQL
• Вывод результатов вычислений DML
Сравнение OLAP DML и SQL
limit geography to ‘NW'
limit time to 'OCT2008'
limit product to dollars gt 100000
Найти товары, по которым за период Октябрь 2008 были
продажи на сумму более 100 000 в регионе Северо-ЗападЗадача
OLAP
DML
Select p.prod_name, g.geog_name, t.time_name,
f.sales
from fact f, proddim p, geogdim g, timedim t
where f.prod_id = p.prod_id and f.geog_id =
g.geog_id
and t.time_id = f.time_id and g.geog_id = ‘NW'
and t.time_id = 'OCT2008' and sales > 100000
SQL
JAN04 FEB04 MAR04 APR04 MAY04 JUN04 JUL04 AUG04 SEP04 OCT04 NOV04 DEC04 JAN05 FEB05 MAR05 APR05 MAY05 JUN05 JUL05 AUG05 SEP05 OCT05 NOV05 DEC05
Q1-04 Q2-04 Q3-04 Q4-04 Q1-05 Q2-05 Q3-05 Q4-05
Q1-04 Q1-04
SUM(sales) OVER HIERARCHY (global.time.calendar_year BETWEEN UNBOUNDED
PRECEDING AND CURRENT MEMBER WITHIN ANCESTOR AT LEVEL
global.time.calendar_year)
Cumulative Total(or AVG, MIN, MAX)
Cumulative total (sum) of Sales in the Time dimension and Calendar Year hierarchy within ancestor at level calendar year. Total from beginning member to current member.
JAN04 FEB04 MAR04 APR04 MAY04 JUN04 JUL04 AUG04 SEP04 OCT04 NOV04 DEC04 JAN05 FEB05 MAR05 APR05 MAY05 JUN05 JUL05 AUG05 SEP05 OCT05 NOV05 DEC05
Q1-04 Q2-04 Q3-04 Q4-04 Q1-05 Q2-05 Q3-05 Q4-05
Q1-04 Q1-04
LAG_VARIANCE_PERCENT(global.units_cube.sales,1) OVER HIERARCHY
(global.time.calendar_year BY ANCESTOR AT LEVEL global.time.year POSITION
FROM BEGINNING)
Percent Difference From Parallel
Period
Percent difference from parallel period for Sales in the Time dimension and Calendar Year hierarchy 1Year ago based on position from the beginning of Year.
Обработка SQL
ПРИЛОЖЕНИЕ
SQL ‘ENGINE’
SELECT
Данные
Возврат данных
через OCI или JDBC
CUBE
Фильтрация
Фильтрация,
агрегация,вычисления
CUBE_TABLE
SELECT Данные (записи)
SQL функции,фильтры и
объединения с таблицами
Основная обработка идетв кубе
SQL заканчиваетобработку запроса
Возврат минимумазаписей из куба
Cube and Dimension Views
• Названия объектов
• Факты: cube_VIEW
• Измерения: dimension_VIEW
• Иерархии: dimension_hierarchy_VIEW
• Словарные view
• user_cube_views
• user_cube_dim_views
• user_cube_hierarchy_views
11g Cube Fact View
DESC units_cube_view;
Name Null Type ------------------------- -------- --------------TIME VARCHAR2(100) CHANNEL VARCHAR2(100) CUSTOMER VARCHAR2(100) PRODUCT VARCHAR2(100)UNITS NUMBER SALES NUMBER COST NUMBERSALES_PRIOR_PERIOD NUMBERSALES_DIFF_PRIOR_PERIOD NUMBERSALES_PCT_DIFF_PRIOR_PERIOD NUMBER
Keys
Stored facts
Calculated facts
11g Cube Fact ViewSELECT time,product,customer,channel,units
FROM units_cube_viewWHERE rownum < 15;
TIME PRODUCT CUSTOMER CHANNEL UNITS--------- ------- -------- ------- ----------TOTAL TOTAL TOTAL TOTAL 4000968CY1999 TOTAL TOTAL TOTAL 330425CY2003 TOTAL TOTAL TOTAL 534069CY1998 TOTAL TOTAL TOTAL 253816CY2005 TOTAL TOTAL TOTAL 565718CY2006 TOTAL TOTAL TOTAL 584929CY2004 TOTAL TOTAL TOTAL 587419CY2000 TOTAL TOTAL TOTAL 364233CY2002 TOTAL TOTAL TOTAL 364965CY2001 TOTAL TOTAL TOTAL 415394CY2000.Q1 TOTAL TOTAL TOTAL 88484CY2001.Q2 TOTAL TOTAL TOTAL 97346CY2001.Q3 TOTAL TOTAL TOTAL 105704CY2005.Q3 TOTAL TOTAL TOTAL 138953
Агрегаты по годам
Агрегаты по кварталам
Итого по продуктам и др.измерениям
Вычисления в OLAP Option
�Allocations
�Models
�Forecasts
�User defined
assignments
��Custom
Measures
��Aggregation
OLAP DMLAWMOLAP APICalculation
Type
Особенности работы с OLAP
• Так как данные уже агрегированны, то вместо SUM() GROUP BY
в SQL нужно использовать указание на конкретную ячейку куба,
где лежит агрегат
• Как следствие, в инструментах типа BI EE в метаданных нужно
описать правила вычисления уровней иерархий.
• В SQL желательно указывать значения по всем измерениям,
иначе может получиться, что куб будет возвращать
комбинаторное количество строк результата
• Если вы используете Cube Organized MV, то в SQL ничего
менять не нужно, так как обращение в SQL идет к исходной
таблице, а не к кубу.
Материализованные представления
Объемы продаж
по Западному и
Восточному
регионам за
последние 3
месяца ?
x
(30 GB)
Продажи
(детальные
данные)
ПродажиПродажи
((детальныедетальные
данныеданные))
• Хранение суммарныхданных
• Использованиематериализованныхпредставлений приавтоматическойоптимизации запросов
• Средства модификациизапросов
• Различные методыобновления (полное, частичное иотложенное)
(2 GB)
Продажи порегионампо месяцам
Продажи порегионампо месяцам
Materialized Views
• Создание MV при
нерегламентированных
запросах - проблема
• Пользователи хотят ровный
отклик
• Появление большого количества
MVEXPENSE_DETAIL
day_iditem_idemp_idexpense_amountpotential_fraud_cost
EXPENSE_YDT
year_iddistrict_idexpense_amountpotential_fraud_cost
Year, Region
EXPENSE_MDT
year_iddistrict_idexpense_amountpotential_fraud_cost
Month, District
EXPENSE_MEC
month_idcategory_idemp_idexpense_amountpotential_fraud_cost
Month, Employee, Category
EXPENSE_YEC
year_idcategory_idemp_idexpense_amountpotential_fraud_cost
Year, Employee, Category
EXPENSE_YRC
year_idcategory_idregion_idexpense_amountpotential_fraud_cost
Year, Region, Category
EXPENSE_QDI
qtr_iditem_iddistrict_idexpense_amountpotential_fraud_cost
Qtr, District, Item
EXPENSE_XXX
XXX_idXXX_idXXX_idexpense_amountpotential_fraud_cost
Org Lvl, Time Lvl, Cat Lvl
EXPENSE_XXX
XXX_idXXX_idXXX_idexpense_amountpotential_fraud_cost
EXPENSE_XXX
XXX_idXXX_idXXX_idexpense_amountpotential_fraud_cost
EXPENSE_XXX
XXX_idXXX_idXXX_idexpense_amountpotential_fraud_cost
EXPENSE_YRT
year_idtotal_category_idregion_idexpense_amountpotential_fraud_cost
Year, District
11g Cube-Organized Materialized Views
Cube MV
Cube OrganizedCube Organized
MV MV показываетпоказывает
агрегированныеагрегированные
данныеданные
Tables
ДетальныеДетальные данныеданные вв
обычныхобычных таблицахтаблицах
SQLSQL запросзапрос
АгрегированныеАгрегированные
данныеданные вв кубекубе
СУБДСУБД обновляетобновляет
данныеданные
QueryQuery
RewriteRewrite
• Детальные данные в
реляционных таблицах
• Приложение генерирует
SQL запрос
• Агрегированные данные в
OLAP кубе
• Доступ к агрегированным
данным в кубе –
автоматический, через
query rewrite
• Приложение не меняется,
но запросы работают
быстрее
Преимущества Oracle OLAP
• OLAP сервер интегрирован в базу
• Можно использовать как вычислительный сервер, когда на
SQL сложно написать нужные запросы
• Упрощение написания запросов. Чем сложнее запрос,
тем более очевидны преимущества OLAP
• Позволяет во многих случаях значительно уменьшить
время отработки запроса.
• В 11g интегрирован с Materialized Views, что позволяет
использовать его в «обычных» хранилищах данных
С чего начать?
• Многое из того, что описано в этой презентации, применимотолько к OLAP 11g.
• Установите Oracle 11g. Проверьте, чтобы была установленаOLAP опция
• Установите патчсет 11.1.0.7 или OLAP Patch “B” #6992921(или OLAP Patch “A” #6459753, для платформ, где нет патча “B”)
• Скачайте и установите Analytic Workspace Manager (AWM), желательно 11.1.0.7A c OTN или металинка
• Скачайте и установите демо-пример GLOBAL с OTN
• Можно изучить Oracle By Example.
• http://www.oracle.com/technology/products/bi/olap/collateral/olap_certification.html