OLAP betyder On-Line Analytical Processing, och är en teknologi som är gjord för att ge snabba svarstider på frågor och analyser, genom att lagra data så att det går snabbt att läsa en stor mängd data som på något sätt hör ihop. Denna lagringstruktur brukar kallas för kub, eftersom det enkelt beskriver hur faktatabellen integreras med dimensionerna.
Enligt geometrin har en kub har alltid tre dimensioner, så en del föredrar att använda termen hyperkub istället, då en OLAP-kub kan ha allt från en till, oftast, betydligt fler dimensioner.
Varje element i en dimension kan summeras genom att använda en hierarki. Exempelvis kan den månadsvisa försäljningen summeras på årsbasis genom att använda hierarkin månad-år.
Den allra viktigaste mekanismen i en OLAP-kub är aggregat. Aggregat är förräknade summor. Det totala antalet möjliga aggregat får man genom att multiplicera storleken på respektive dimension med varandra, och det blir snabbt ett oerhört stort tal. Det innebär att man måste optimera antalet aggregat, genom att bara använda de viktigaste hierarkierna.
Problemet att välja vilka aggregat som skall användas kallas även för 'problemet med val av vy' (view selection problem). Målet är främst att minimera den genomsnittliga tiden för OLAP-frågor, men även minimera tiden det tar att uppdatera dem, utan att riskera att överskrida ett maximalt lagringsutrymme. Ofta används bitmap-index för att minimera svarstiderna.
Det finns flera olika typer av OLAP-kuber:
Den stora nackdelen med OLAP-kuber är att data måste dubbellagras. Det innebär dels att det tar tid att kopiera och bygga kuben, och dels att det finns risk för olika versioner av samma data.
Den första produkten som gjorde OLAP-liknande frågor var IRI's (Information Resources Incorporated) Express, som släpptes redan 1970 (och köptes av Oracle 1995). Men det tog lång tid innan termen skapades.
1985 myntade E.F. Codd begreppet OLTP (On-line Transaction Processing) och föreslog 12 villkor som definerade en OLTP-databas. Hans definition accepterades generellt och blev standard för databaser som hanterar operativa transaktioner på daglig basis.
1993 myntade Codd begreppet OLAP för databaser avsedda för beslutsstöd och föreslog återigen 12 villkor som skulle definiera en OLAP-databas. Den här gången fick hans definition inte något generellt stöd, men namnet slog igenom. Anledningen till att hans förslag inte accepterades var att villkoren var hårt knutna till OLAP-verktyget Essbase från Arbor Software, senare Hyperion, som han skrev förslaget åt.
Det är egentligen inget riktigt bra namn, eftersom det mest är skapat för att särskilja det från den klassiska OLTP-databasen. Nigel Pendse har föreslagit det mer beskrivande namnet Fast Analysis of Shared Multidimensional Information, eller FASMI, men det lär inte slå igenom.
Under nittiotalet släpptes det sedan ett flertal kommersiella OLAP-produkter. Först var Arbor Software 1992, som köptes av Hyperion 1998, som köptes av Oracle 2007. 1998 släppte Microsoft OLAP Services, senare Analysis Services, som tack vare ett mycket konkurrenskraftigt pris och en bra produkt blev marknadsledande.
Microsoft introducerade MDX (Multi Dimensional eXpressions) 1997 som sitt frågespråk för OLAP-kuber. 2001 kom Microsoft och Hyperion överens om att standardisera MDX som frågespråk i forumet XML for Analysis eller XMLA. Sedan dess har MDX fått ett brett stöd från marknadens OLAP-leverantörer, och är idag de facto standard som frågespråk för OLAP-kuber.
En snabb översikt av MDX: MDX Primer
källa: en.wikipedia.org/wiki/OLAP_cube
läs mer: xmla.org
Senast uppdaterat 20 januari 2009 av Christer Tärning