Oracle 11g OLAP

33
Oracle OLAP Андрей Пивоваров Oracle CIS

Transcript of Oracle 11g OLAP

Page 1: Oracle 11g OLAP

Oracle OLAP

Андрей Пивоваров

Oracle CIS

Page 2: Oracle 11g OLAP

Что такое Oracle OLAP?

• Многомерная СУБД, встроенная в

СУБД Oracle

• Основное назначение – анализ

данных

• Построена на основе

Oracle Express Server

• Данные хранятся в т.н.

Аналитических пространствах

(Analytical Workspaces)

Page 3: Oracle 11g OLAP

Структура типичной OLTP системы

Page 4: Oracle 11g OLAP

Почему популярен Excel?

Page 5: Oracle 11g OLAP

Куб OLAP

ВремяВремяВремяВремя

ПродуктыПродуктыПродуктыПродукты

РегионыРегионыРегионыРегионы

ПрибыльПрибыльПрибыльПрибыль

АгрегацияАгрегацияАгрегацияАгрегация

Распределение

Распределение

Распределение

Распределение

ПрогнозПрогнозПрогнозПрогноз

РостРостРостРост прибылиприбылиприбылиприбыли

Прибыль за год

ПрибыльПрибыльПрибыльПрибыль

ДоляДоляДоляДоля прибылиприбылиприбылиприбыли

ЕдиницаЕдиницаЕдиницаЕдиница

ТипТипТипТип продуктапродуктапродуктапродукта

ВсегоВсегоВсегоВсего попопопо продуктампродуктампродуктампродуктам

МесяцМесяцМесяцМесяц КварталКварталКварталКвартал ГодГодГодГод

Page 6: Oracle 11g OLAP

Отличительные особенности OLAP

• Работа не только с детальными данными, но иагрегатами

• При этом разработчик приложений не думает о том, какрассчитывать агрегаты

• Обычные БД хранят только существующие данные, OLAP легко позволяет узнать, что данных нет.

• Работа с множеством иерархий, в том числе и Parent-Child

• Возможность записывать факт в произвольное местокуба

• Часто используется в финансовых системах, когда агрегатне равен сумме детальных данных

Page 7: Oracle 11g OLAP

Краткая история 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

Page 8: Oracle 11g 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 для использования кубов в качестве материализованныхпредставлений.

Page 9: Oracle 11g OLAP

Терминология OLAP

• Measure (Показатель). Обычно хранят численные

значения, такие как объем продаж, цена и т.д.

• Бывают хранимые и вычисляемые

• Dimension (Измерение). Разрезы, по которым разбиты

факты. Например, Время, Номенклатура, География и

т.д.

• Hierarchy (Иерархия). Задают соотношения между

элементами измерения, структуру изменения.

(Год->Квартал->Месяц->День)

• DML – внутренний язык Oracle OLAP. Аналог – PL/SQL

для Oracle.

Page 10: Oracle 11g OLAP

Типы иерархий

Director

VP Admin

Analyst

Senior Director

VP

President

День

Месяц

Квартал

Год

Уровневые Родитель-потомок(parent-child)

Director

Admin

Page 11: Oracle 11g OLAP

Расчет иерархий

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%

А это всего лишь одномерный случай!

Page 12: Oracle 11g OLAP

Разреженность

• Потенциальный объем куба равен произведению количества

элементов всех измерений

• В моем примере 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%

• В реальных проектах потенциальный объем может достигать

сотен триллионов ячеек, а заполненность - долей процентов.

Page 13: Oracle 11g OLAP

Разреженность

• Разреженность – одна из причин, по которой нельзя

точно просчитать объем куба, который он будет

занимать на диске.

• В зависимости от типа хранения кубов и даже

последовательности измерений – объем может сильно

меняться

• Для борьбы с большими объемами в OLAP

используются несколько типов хранения и обсчета

агрегатов, а также секционирование.

Page 14: Oracle 11g OLAP

Что помнить при работе с OLAP

• Oracle OLAP – другая СУБД, со своими принципами иподходами к оптимизации.

• Частая жалоба – люди, не имеющие опыта с OLAP сталкиваются с тем, что все не работает «быстро» сразу

• Существуют миф, что если запросы на огромномобъеме данных работают медленно – данные нужнопереложить в OLAP и все будет работать быстро.

• OLAP опция динамично развивается, поэтому лучшеиспользовать как можно более позднюю версию ипатчи.

• Olap 10g сильно отличается от OLAP 9i, а OLAP 11g отличается от OLAP 10g

Page 15: Oracle 11g OLAP

Доступ с помощью любых инструментов

Реляционая таблица Многомерный куб

Oracle Database 11g

Реляционные View

ДругиеBusiness

Objects

CognosOracle BI

EE

Ускорение для реляционных приложений и отчетных средств

Page 16: Oracle 11g OLAP

Analytic Workspace Manager

“Enterprise Manager” для OLAP

Некоторые вещи без AWM сделать крайне сложно

Page 17: Oracle 11g OLAP

Способы работы с данными в OLAP

• OLAP DML – самый низкоуровневый и самый гибкий способ

работы с OLAP

• Это работа с движком Express

• Через OLAP Worksheet (вызывается из AWM) или через пакет

DBMS_AW

• Следует использовать с осторожностью, когда дело касается,

объектов связанных с метаданными

• Настройка вычисляемых показателей в AWM (OLAP API)

• Большое количество преднастроенных шаблонов. Синтаксис

напоминает аналитические функции SQL

• SQL

• Вывод результатов вычислений DML

Page 18: Oracle 11g OLAP

Сравнение 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

Page 19: Oracle 11g OLAP

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.

Page 20: Oracle 11g OLAP

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.

Page 21: Oracle 11g OLAP

Обработка SQL

ПРИЛОЖЕНИЕ

SQL ‘ENGINE’

SELECT

Данные

Возврат данных

через OCI или JDBC

CUBE

Фильтрация

Фильтрация,

агрегация,вычисления

CUBE_TABLE

SELECT Данные (записи)

SQL функции,фильтры и

объединения с таблицами

Основная обработка идетв кубе

SQL заканчиваетобработку запроса

Возврат минимумазаписей из куба

Page 22: Oracle 11g OLAP

Cube and Dimension Views

• Названия объектов

• Факты: cube_VIEW

• Измерения: dimension_VIEW

• Иерархии: dimension_hierarchy_VIEW

• Словарные view

• user_cube_views

• user_cube_dim_views

• user_cube_hierarchy_views

Page 23: Oracle 11g OLAP

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

Page 24: Oracle 11g OLAP

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

Агрегаты по годам

Агрегаты по кварталам

Итого по продуктам и др.измерениям

Page 25: Oracle 11g OLAP

Вычисления в OLAP Option

�Allocations

�Models

�Forecasts

�User defined

assignments

��Custom

Measures

��Aggregation

OLAP DMLAWMOLAP APICalculation

Type

Page 26: Oracle 11g OLAP

Особенности работы с OLAP

• Так как данные уже агрегированны, то вместо SUM() GROUP BY

в SQL нужно использовать указание на конкретную ячейку куба,

где лежит агрегат

• Как следствие, в инструментах типа BI EE в метаданных нужно

описать правила вычисления уровней иерархий.

• В SQL желательно указывать значения по всем измерениям,

иначе может получиться, что куб будет возвращать

комбинаторное количество строк результата

• Если вы используете Cube Organized MV, то в SQL ничего

менять не нужно, так как обращение в SQL идет к исходной

таблице, а не к кубу.

Page 27: Oracle 11g OLAP

Материализованные представления

Объемы продаж

по Западному и

Восточному

регионам за

последние 3

месяца ?

x

(30 GB)

Продажи

(детальные

данные)

ПродажиПродажи

((детальныедетальные

данныеданные))

• Хранение суммарныхданных

• Использованиематериализованныхпредставлений приавтоматическойоптимизации запросов

• Средства модификациизапросов

• Различные методыобновления (полное, частичное иотложенное)

(2 GB)

Продажи порегионампо месяцам

Продажи порегионампо месяцам

Page 28: Oracle 11g OLAP

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

Page 29: Oracle 11g OLAP

11g Cube-Organized Materialized Views

Cube MV

Cube OrganizedCube Organized

MV MV показываетпоказывает

агрегированныеагрегированные

данныеданные

Tables

ДетальныеДетальные данныеданные вв

обычныхобычных таблицахтаблицах

SQLSQL запросзапрос

АгрегированныеАгрегированные

данныеданные вв кубекубе

СУБДСУБД обновляетобновляет

данныеданные

QueryQuery

RewriteRewrite

• Детальные данные в

реляционных таблицах

• Приложение генерирует

SQL запрос

• Агрегированные данные в

OLAP кубе

• Доступ к агрегированным

данным в кубе –

автоматический, через

query rewrite

• Приложение не меняется,

но запросы работают

быстрее

Page 30: Oracle 11g OLAP

Преимущества Oracle OLAP

• OLAP сервер интегрирован в базу

• Можно использовать как вычислительный сервер, когда на

SQL сложно написать нужные запросы

• Упрощение написания запросов. Чем сложнее запрос,

тем более очевидны преимущества OLAP

• Позволяет во многих случаях значительно уменьшить

время отработки запроса.

• В 11g интегрирован с Materialized Views, что позволяет

использовать его в «обычных» хранилищах данных

Page 31: Oracle 11g OLAP

С чего начать?

• Многое из того, что описано в этой презентации, применимотолько к 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

Page 32: Oracle 11g OLAP
Page 33: Oracle 11g OLAP