Databaser, efterår 2002 Information Integration Troels Andreasen Datalogiafdelingen, hus 42.1 Roskilde Universitetscenter Universitetsvej 1 Postboks 260 4000 Roskilde Telefon: 4674 2000 Fax: 4674 3072 www.dat.ruc.dk
"Information Integration" Tre former for "Information Integration" "Federated Databases" "Mediated Databases" "Data Warehouse" (kun denne form ser vi nærmere på) "Federated Databases" uafhængige databaser der understøtter indbyrdes forbindelser (f.eks. Oracle SQL-net) forbindelser skal "programmeres" enkeltvist "Mediated Databases" integration i form af en virtuel base fremtræder for brugere som en enkelt fysisk database "wrapper" definerer hver kildedatabase overfor "mediator" Troels Andreasen 2
"Data Warehouse" / Data-Varehus Hyppigste form for information integration: kopier kilde-db's ind i en en enkelt fælles DB og prøv at holde den løbende opdateret Almindelig metode til løbende opdatering periodevis rekonstruktion Troels Andreasen 3
OLTP Versus OLAP OLTP Fleste database operationer er af typen OLTP ("on-line transaction processing"). Simple forespørgsler og hyppige opdateringer på et lille udvalg af tupler f.eks. billetreservation, bankposteringer, kasseregistrering, webhandel,... OLAP Af tiltagende vigtighed er OLAP ("on-line analytic processing") Få, men komplekse og tidskrævende operationer (læsning) Opdateringer er sjældne eller svaret på en forespørgsel er brugbart selvom DB ej er up-to-date. Eksempler: Amazon analyserer købsmønster Dansk Supermarked analyserer salg for at optimere placeringen af varer Troels Andreasen 4
OLAP Generel arkitektur: Flere lokale databaser med primære data ("OLTP-data") Et varehus til Informations Integration og OLAP. warehouse Combiner Extractor Extractor Source 1 Source 1 Troels Andreasen 5
Stjerne skema Den hyppigste datamodel for et "varehus": Én central fakta-tabel Typisk insert-only med rekonstruktion eller periodevis opdatering f.eks salgs-data Et antal dimensions-tabeller Typisk næsten-statiske tabeller f.eks stamoplysninger om kunder, sælgere, varer, Dim7 Dim8 Dim1 Dim6 FAKTA Dim2 Dim5 Dim4 Dim3 Troels Andreasen 6
Stjerne skema, datamodel-skitse Normalt med mange-til-en fra FAKTA til dimension, altså en "stjerne" Dim7 Dim8 Dim1 Dim6 FAKTA Dim2 Dim5 Dim4 Dim3 Dim7 s7 Dim8 s8 Dim1 s1 svarer til ER-diagrammet: Dim6 s6 s5 FAKTA s4 s2 s3 Dim2 Dim5 Dim4 Dim3 Troels Andreasen 7
Eksempel: Datavarehus for salg af præparater Fakta-tabel Præperat-salg(præpid, salgsstedid, dato, pris) dimensions-attributter: præpid, salgsstedid, dato afhængige attributter: pris Dimensions-tabeller Præparat(præpid, Navn, Producent, Gruppe) Salgssted(salgsstedid, Navn, type, Gade, By) Salgssted Præparat s7 Salgssted s1 Præparat Præperat-salg dato Troels Andreasen 8
To måder at bygge Data-varehus på 1. ROLAP (Relationel OLAP): en relationel database tilpasset til stjerne-skemaer (bl.a. ved speciel indeksering) 2. MOLAP (Multidimensionel OLAP): En speciel model baseret på en (formél) data-cube Troels Andreasen 9
ROLAP Typiske forespørgsler begynder med en Stjerne-join : SELECT... FROM Præperat-salg, Præparat, Salgssted WHERE Præperat-salg.præpid=præparat.præpid AND Præperat-salg.salgsstedid=salgssted.salgsstedid; Typisk OLAP forespørgsel vil: Danne stjerne-join eller en del af denne. Filtrere interessante tupler baseret på fakta- og/eller dimensions-data. Gruppere på en eller flere dimensioner. Aggregere resultatet. Eksempel: For hver producent find det totale salg af produkter opdelt på byer". Troels Andreasen 10
Performance optimering i ROLAP Optimering i forhold til stor fakta-tabel bl.a. ved Materialiseret view Bitmap indeks Eksempel F.eks. kan følgende materialiseres så OLAP-forespørgsler imod salgssteder evalueres hurtigere: SELECT... FROM Præperat-salg, Salgssted WHERE Præperat-salg.salgsstedid=salgssted.salgsstedid; Troels Andreasen 11
MOLAP og Formel data kubus MOLAP "Multidimensional OLAP" Baseret på formel data kubus Formel data kubus ( formal data cube ) CUBE(F) for fakta-tabellen F nøgler fra dimensioner er akser i kubussen. f.eks tre dimensioner: præparat salgssted, tid afhængige attributter optræder i punkter i kubussen f.eks. pris MEN, kubussen indeholder også aggregeringer (normalt summation) langs hver dimension og hver kombination af dimensioner. f.eks. kubussen indeholder summeringer over salget pr. præparat Troels Andreasen 12
CUBE(Præperat-salg) Fakta-tabel Præperat-salg Præperat-salg(præpid, salgsstedid, dato, pris) dimensions-attributter: præpid, salgsstedid, dato afhængige attributter: pris CUBE(Præperat-salg): Salgssted Præparat dato Troels Andreasen 13
CUBE(Præperat-salg) Fakta-tabel Præperat-salg Præperat-salg(præpid, salgsstedid, dato, pris) dimensions-attributter: præpid, salgsstedid, dato afhængige attributter: pris CUBE(Præperat-salg) indeholder "aggregerings-tupler" på formen (med skemaerne): Præperat-salg( *, salgsstedid, dato, pris) Præperat-salg(præpid, *, dato, pris) Præperat-salg(præpid, salgsstedid, *, pris) Præperat-salg( *, *, dato, pris) Præperat-salg( *, salgsstedid, *, pris) Præperat-salg(præpid, *, *, pris) Præperat-salg( *, *, *, pris) eksempel på aggregerings-tupel: Præperat-salg( *, "Roskilde Apotek", "1-12-2002", 37.545,75) (svarende til det samlede salg (alle præparater) på Roskilde Apotek 1-12-2002) Troels Andreasen 14
"Operationer" på kubussen "Dicing" "udskæring i terninger" dvs. partitionering af kuben efter partitioner i dimensionerne "Slicing" "udskæring af skive": vælg en værdi langs en dimension, f.eks. Et bestemt præparat Drill-Down at de-aggregere, dvs. at bryde en aggregering op i dens dele f.eks givet at salgssted 17 sælger meget lidt, undersøg salgets fordeling på præparater Roll-Up aggregere (igen) langs en dimension. f.eks. (omvendt) givet salgsted 17 salg fordelt på præparater undersøg samlet salg Troels Andreasen 15
Performance optimering i MOLAP Bl.a (også) ved: Materialiseret view specielt (naturligvis) i form af aggregeringer i en eller flere dimensioner Troels Andreasen 16
Data Mining Komplekse forespørgsler der udtrækker regler for, eller mønstre" i, data F.eks: associations-regler eller hyppigt forekommende delmængder Handler bl.a. om statistik Troels Andreasen 17
Data Mining Indkøbskurv data Associations-regler: Når en kunde går igennem kassen kan vi lære om hvilke vare han/hun køber, f.eks. Øl og bleer. Giver data med skema kurv(kurvnr,vareid). Interessant i forbindelse med, f.eks. Placering af vare i butikker Udarbejdelse af kataloger/reklamer. Pris-sætning (hæv priser for sekundær -varer dem man kun køber fordi man ikke kunne lade være da man nu alligevel var i butikken) Troels Andreasen 18
Simpelt Problem: Find hyppige par af varer Støtte for mængde af varer {v 1,..., v n } antallet af kurve, der indeholder alle v 1,...,v n Givet en nedre grænse for "støtten" s, kunne vi spørge: Find par af varer, med støtte mindst s (der optræder sammen i mindst s indkøbskurve) SELECT k1.vareid, k2.vareid FROM kurv k1, kurv k2 WHERE k1.kurvnr=k2.kurvnr AND k1.vareid < k2.vareid GROUP BY k1.vareid, k2.vareid HAVING COUNT(*) >= s; Troels Andreasen 19
A-Priori algoritme Ovenstående forespørgsel er MEGET dyr for store mængder af data. A-priori algoritme benytter det oplagte forhold at Et par (i, j) kan ikke have støtte s med mindre i og j hver for sig har støtte s F.eks. kan benyttes mellemresultatet kurv1: INSERT INTO kurv1(kurvnr,vareid) SELECT * FROM kurv WHERE vareid IN ( SELECT vareid FROM kurv GROUP BY vareid HAVING COUNT(*) >= s ); Herefter kan forespørgslen køres på kurv1 i stedet for på kurv. Troels Andreasen 20
Association Støtte for mængde af varer {v 1,..., v n } antallet af kurve, der indeholder alle v 1,...,v n Association {v 1,..., v n } v konfidens sandsynlighed for at finde v i en kurv med {v 1,..., v n } interesse forskel imellem sandsynlighed for at finde v i vilkårlig kurv at finde v i en kurv med {v 1,..., v n } Troels Andreasen 21