CSI3130- Database II 1
Data Warehousing and Decision
Support
Chapter 25 CSI3130- Database II 2Overview
Why data warehousing and decision support Data warehousing and the so‐called star schema MOLAP versus ROLAP OLAP, ROLLUP AND CUBE queries Design issues: Finding answers quickly Denormalization Indexing Aggregation Top N Queries Using Views Typical architecture CSI3130- Database II 3Introduction
Increasingly, organizations are analyzing current and historical data to identify useful patterns and support business strategies. Emphasis is on complex, interactive, exploratory analysis of very large datasets created by integrating data from across all parts of an enterprise; data is fairly static. Contrast such On‐Line Analytic Processing (OLAP) with traditional On‐line Transaction Processing (OLTP): mostly long queries, instead of short update Xacts. CSI3130- Database II 4Three Complementary Trends
Data Warehousing: Consolidate data from many sources in one large repository. Loading, periodic synchronization of replicas. Semantic integration. OLAP: Complex SQL queries and views. Queries based on spreadsheet‐style operations and “multidimensional” view of data. Interactive and “online” queries. Data Mining: Exploratory search for interesting trends and anomalies. (Another lecture!)Data Warehousing
Integrated data spanning long time periods, often augmented with summary information. Several gigabytes to terabytes common. Interactive response times expected for complex queries; ad‐hoc updates uncommon. EXTERNAL DATA SOURCES EXTRACT TRANSFORM LOAD REFRESH DATA WAREHOUSE Metadata Repository SUPPORTS OLAP DATA MININGAn Example:
The Store (e.g. Staples)
Sells office equipment, including stationary (pens, erasers, pencils), folders, paper, notice boards, etc. Business has 50 large stores spread over Ontario and Quebec. Stores are divided into 4 regions, namely North, South, West and East. Each store has about 20,000 different products on the shelves, each with an unique bar code. Bar codes are scanned at the point of sales (POS) Products are distributed to stores by an Agent who is identified by Name. GOAL: Determine “how well business is doing”.CSI3130- Database II 7 Successful data warehousing: Summarised High‐Quality Information CSI3130- Database II 8
Dimensions of “Sales”
CSI3130- Database II 9Dimensions of Sales
Product: Product-key, BC-description, BC-number, package-size, brand, sub-category, category, department, weight, package-type, weight-unit, case, units-per-shipping-case, shelf-width, shelf-height, shelf-dept, … Location: Store-key, Store-name, Store-number, Store-city,
Store-province, Store-region, Store-phone, Store-fax, floor-plan-type, first-opened-date, last-remodel-date, store_m2, …
Time: time-key, day-of-week, day-number-in-month, day-number-year, week-number, month, month-number, quarter, fiscal-period, holiday-flag, weekend-flag, last-day-of-month-flag, season, event Agent: Agent-key, first-name, last-name, age, gender,
duration-of-employment, … CSI3130- Database II 10
Dimensions of Sales
Location Agent Store-key Agent-key … Sales FACT … Store-key Agent-key Time-key Product-keyTime dollar-sales Product
Time-key units-sales Product-key
… dollar-cost … customer-count CSI3130- Database II 11
Database sizing for the data warehouse
Time dimension: last 2 years x 365 days = 730 days Location dimension: 50 stores, reporting sales every day Product dimension: 20,000 products in each store, of which 3,000 sell each day in a given store Agent dimension: a minimum of 5 agents on each day Number of base Sales fact records = 730x50x3,000x5 = 45,007,500 records! Number of key fields = 4; Number of fact fields = 4; Total fields = 8 Base Sales fact table = 45 million x 8 fields x 4 bytes = 14GB Database size: Sales fact + other tables ??? 20GB++ CSI3130- Database II 12Warehousing Issues
Semantic Integration: When getting data from multiple sources, must eliminate mismatches, e.g., different currencies, schemas. Heterogeneous Sources: Must access data from a variety of source formats and repositories. Replication capabilities can be exploited here. Load, Refresh, Purge: Must load data, periodically refresh it, and purge too‐old data. Metadata Management:Must keep track of source, loading time, and other information for all data in the warehouse.CSI3130- Database II 13
Multidimensional
Data Model
Collection of numeric measures,which
depend on a set of dimensions.
E.g., measure Sales, dimensions Product
(key: pid), Location(locid), and Time
(timeid). 8 10 10 30 20 50 25 8 15 1 2 3 timeid pid 11 12 13 11 1 1 25 11 2 1 8 11 3 1 15 12 1 1 30 12 2 1 20 12 3 1 50 13 1 1 8 13 2 1 10 13 3 1 10 11 1 2 35
pid timeid locid sales
locid Slice locid=1 is shown: CSI3130- Database II 14
MOLAP vs ROLAP
Multidimensional data can be stored physically in a (disk‐resident, persistent) array; called MOLAP systems. Alternatively, can store as a relation;called ROLAPsystems.
The main relation, which relates dimensions to a
measure, is called the fact table. Each dimension
can have additional attributes and an associated dimension table. E.g., Products(pid, pname, category, price) Fact tables are much larger than dimensional tables. CSI3130- Database II 15
Dimension Hierarchies
For each dimension, the set of values can be organized in a hierarchy:PRODUCT TIME LOCATION
category week month state pname date city
year
quarter country
CSI3130- Database II 16
OLAP Queries
Influenced by SQL and by spreadsheets.
A common operation is to aggregatea measure
over one or more dimensions. Find total sales. Find total sales for each city, or for each state. Find top five products ranked by total sales. Roll‐up:Aggregating at different levels of a dimension hierarchy. E.g., Given total sales by city, we can roll‐up to get sales by state.
OLAP Queries
Drill‐down: The inverse of roll‐up. E.g., Given total sales by state, can drill‐down to get total sales by city. E.g., Can also drill‐down on different dimension to get total sales by product for each state. Pivoting:Aggregation on selected dimensions. E.g., Pivoting on Location and Time yields this cross‐tabulation: 63 81 144 38 107 145 75 35 110 WI CA Total 1995 1996 1997 176 223 339 TotalSlicing and Dicing: Equality and range selections on one or more dimensions.
Comparison with SQL Queries
The cross‐tabulation obtained by pivoting can also be
computed using a collection of SQLqueries:
SELECT SUM(S.sales)
FROM Sales S, Times T, Locations L
WHERE S.timeid=T.timeidAND S.timeid=L.timeid
GROUP BYT.year, L.state
SELECT SUM(S.sales)
FROM Sales S, Times T
WHERE S.timeid=T.timeid
GROUP BYT.year
SELECT SUM(S.sales)
FROM Sales S, Location L
WHERE S.timeid=L.timeid
CSI3130- Database II 19
The CUBE Operator
Generalizing the previous example, if there are k dimensions, we have 2^k possible SQL GROUP BY queries that can be generated through pivoting on a subset of dimensions. CUBE pid, locid, timeid BY SUM Sales Equivalent to rolling up Sales on all eight subsets of the set {pid, locid, timeid}; each roll‐up corresponds to an SQL query of the form:SELECT SUM(S.sales)
FROM Sales S
GROUP BY grouping-list
Lots of work on optimizing the CUBE operator!
CSI3130- Database II 20
Design Issues
Fact table in BCNF; dimension tables un‐normalized. Dimension tables are small; updates/inserts/deletes are rare. So, anomalies less important than query performance. This kind of schema is very common in OLAP applications,and is called a star schema; computing the join of all
these relations is called a star join. price category pname
pid locid city state country
sales locid timeid pid holiday_flag week date
timeid month quarter year
(Fact table) SALES TIMES PRODUCTS LOCATIONS CSI3130- Database II 21
Implementation Issues: Indexes
New indexing techniques: Bitmap indexes, Join indexes, array representations, compression, precomputation of aggregations, etc. E.g., Bitmap index:10
10
01
10
112 Joe M 3 115 Ram M 5 119 Sue F 5 112 Woo M 400100
00001
00001
00010
sex custid name sex rating rating Bit-vector:1 bit for each possible value. Many queries can be answered using bit-vector ops! M F CSI3130- Database II 22
Join Indexes
Consider the join of Sales, Products, Times, and Locations, possibly with additional selection conditions (e.g., country=“USA”). A join indexcan be constructed to speed up such joins. The
index contains [s,p,t,l]if there are tuples (with sid) sin Sales,
pin Products, tin Times and lin Locations that satisfy the join (and selection) conditions.
Problem:Number of join indexes can grow rapidly.
A variation addresses this problem: For each column with an additional selection (e.g., country), build an index with [c,s]
in it if a dimension table tuple with value cin the selection column joins with a Sales tuple with sids; if indexes are bitmaps, called bitmapped join index.
CSI3130- Database II 23
Bitmapped Join Index
Consider a query with conditions price=10 and country=“USA”. Suppose tuple (with sid) s in Sales joins with a tuple p with price=10 and a tuple l with country =“USA”. There are two join indexes; one containing [10,s] and the other [USA,s]. Intersecting these indexes tells us which tuples in Sales are in the join and satisfy the given selection. price category pname
pid locid city state country
sales locid timeid pid holiday_fla g week dat e timei
d month quarter year
(Fact table) SALES TIMES PRODUCTS LOCATIONS CSI3130- Database II 24
Data Warehousing and Decision
Support
Chapter 25CSI3130- Database II 25
Overview
Why data warehousing and decision support Data warehousing and the so‐called star schema MOLAP versus ROLAP OLAP, ROLLUP AND CUBE queries Design issues: Finding answers quickly Denormalization Indexing Aggregation Top N Queries Using Views Typical architecture CSI3130- Database II 26Querying Sequences in SQL
Trend analysis is difficult to do in SQL‐92 or earlier: Find the % change in monthly sales Find the top 5 product by total sales Find the trailing n‐day moving average of sales The first two queries can be expressed with difficulty, but the third cannot even be expressed in SQL‐92 if n is a parameter of the query. The WINDOWclause in SQL:1999+ allows us to write such queries over a table viewed as a sequence (implicitly, based on user‐specified sort keys) Note: SQL 2008 defines more flexible windowing functions (to be implemented…) CSI3130- Database II 27
The WINDOW Clause
Let the result of the FROM and WHERE clauses be “Temp”. (Conceptually) Temp is partitioned according to the PARTITION BYclause. Similar to GROUP BY, but the answer has one row for each row in a partition, not one
row per partition!
Each partition is sorted according to the ORDERBY clause.
For each row in a partition, the WINDOW clause creates a “window” of nearby (preceding or succeeding) tuples. Can be value‐based, as in example, using RANGE Can be based on number of rows to include in the window, using ROWS clause The aggregate function is evaluated for each row in the partition using the corresponding window. New aggregate functions that are useful with windowing include RANK (position of a row within its partition) and its variants DENSE_RANK, PERCENT_RANK, CUME_DIST. SELECT L.state, T.month, AVG(S.sales) OVER WAS movavg
FROM Sales S, Times T, Locations L WHERE S.timeid=T.timeid AND S.locid=L.locid
WINDOW W AS (PARTITION BY L.state ORDER BY T.month
RANGE BETWEEN INTERVAL `1’ MONTH PRECEDING
AND INTERVAL `1’ MONTH FOLLOWING)
CSI3130- Database II 28
Top N Queries
If you want to find the 10 (or so) cheapest cars, it would be nice if the DB could avoid computing the costs of all cars before sorting to determine the 10 cheapest. Idea:Guess at a cost csuch that the 10 cheapest all
cost less than c, and that not too many more cost less. Then add the selection cost<cand evaluate the query. •If the guess is right, great, we avoid computation for cars that cost more than c. •If the guess is wrong, need to reset the selection and recompute the original query.
Top N Queries
SELECT P.pid, P.pname, S.sales
FROMSales S, Products P
WHERES.pid=P.pidAND S.locid=1 ANDS.timeid=3 ORDER BYS.salesDESC
OPTIMIZE FOR10 ROWS
OPTIMIZE FOR construct is not in SQL:1999!
Cut‐off value c is chosen by optimizer.
SELECT P.pid, P.pname, S.sales
FROMSales S, Products P
WHERES.pid=P.pidAND S.locid=1 ANDS.timeid=3
AND S.sales > c
ORDER BYS.salesDESC
Online Aggregation
Consider an aggregate query, e.g., finding the average sales by province. Can we provide the user with some information before the exact average is computed for all states?
Can show the current “running average” for each province as the computation proceeds.
Even better, if we use statisticaltechniques and sampletuples to aggregate instead of simply scanning the aggregated table, we can provide bounds such as “the average for Ontario is 2000102 with 95% probability”.
CSI3130- Database II 31
Views and Decision Support
Materialized views pre‐computed Issues Synchronization Incremental maintenance policy needed • Lazy • Periodic • Forced Multi‐nationals… CSI3130- Database II 32How do you
implement a data warehouse?
Technical Architecture Design Technical Architecture Design Product Selection & Installation Product Selection & Installation End-User Application Specification End-User Application Specification End-User Application Development End-User Application DevelopmentThe Business Dimensional Lifecycle (Kimball et. Al., 2008) Project Planning Project Planning Business Requirement Definition Business Requirement Definition Deployment Deployment Maintenance and Growth Maintenance and Growth Project Management Project Management Dimensional Modeling Dimensional
Modeling PhysicalDesign Physical Design Data Staging Design & Development Data Staging Design & Development CSI3130- Database II 33