From relational to multidimensional
This post kicks off a series of posts covering OLAP and datawarehouses. There’s always been a lot of talk about cubes, dimensions, and business intelligence but I never got the chance to work with it, until now. We had several “Lunch & Learn” sessions about it but the presentation was really dry and confusing. I hope these posts can serve as the basis for any upcoming professional development sessions I might deliver.
Let’s start with the high-level, bird’s eye view of the goals of OLAP and datawarehousing. Unlike with traditional Online Transaction Processing (OLTP) or relational databases, the goal of Online Analytical Processing, OLAP, is data analysis. Where OLTP is interested in making modifications fast and effective, OLAP is interested in making retrieval and aggregation fast.
Typically, with OLAP your items of interest will be historical records of sales, units sold, prices, or some other numeric data which can be summarized. For the analysis, you are able to browse the data using various perspectives, such as by geography, time, customers, etc. That is the main objective of using multidimensional databases: browsing historical data using different perspectives or views to find trends.
Let’s get more concrete, what does a typical OLAP project consist of? Once your organization decides that it would like to be able to analyze it’s business from data inside it’s databases you define what information is important for this purpose. You will start with your transactional data from (several) existing relational databases. From the various data sources, you have to design a datawarehouse, a very specialized relational database that is de-normalized and typically follows a “star” schema. You add OLAP to the equation through an OLAP server (such as SQL Server Analysis Services) and create a cube. With both these pieces in place, you load your datawarehouse, load and process your cube, and can finally browse the information and make more money!