La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Les SGBDs Supports de Décisions

Présentations similaires


Présentation au sujet: "Les SGBDs Supports de Décisions"— Transcription de la présentation:

1 Les SGBDs Supports de Décisions
Witold Litwin

2 Besoin Utilisation massive de fonctions agrégats Exemples
celles de SQL autres dans le langage hôte Exemples La moyenne de ventes Le commercial du jour La corrélation entre certaines attributs

3 Problèmes nouveaux Parcours fréquent de tous les tuples
d'une grande table d'une collection de tables à joindre L'opération peut prendre beaucoup de temps quel que soit l'optimisation de chemins d'accès Des requêtes peuvent être impossible à formuler en SQL seul Classement par rang selon les valeurs de T.a Corrélation entre T.a et T.b ? Les attributs les plus corrélés ?

4 Solutions Nouvelles fonctions de SQL Nouveaux concepts
Fonctions agrégats Rank, Rollup, Cube, Covariance, Correlation… Fonctions scalaires Nouveaux concepts Donnée multidimensionnelle Espaces des agrégations Espace des influences Espace des variations

5 Solutions Nouvelles techniques d'implémentation
Calcul parallèle et scalable Prè-calcul partiel ou total de requêtes Échantillonnage Séparation de calculs en plusieurs bases et systèmes

6 Solutions Les SGBD "traditionnels" sont dès lors souvent appelés
Nouveau types de SGBD Entrepôts de Données Data Warehousing Fouille de Données Data Mining (DM) Analyse en ligne Online Analytical Processing (OLAP) Les SGBD "traditionnels" sont dès lors souvent appelés Online Transaction Processing (OTPS) Systems Les nouveaux constituent les Systèmes de Support de Décisions Decision Support Systems

7 Principaux produits Informix DB2 Oracle Express
Basé sur l'achat de Red Brick DB2 SGBD Data Warehouse Center SQL Server Data Analysis Services OLAP Services renommés pour SQL Server 2000 Oracle Express

8 OLAP traditionnel Prix de produit 123 Espace des Données Support de Decisions

9 OLAP traditionnel Prix de produit 123 Vente par produit et par mois Espace (OLAP) des Agrégations Espace des Données Support de Decisions

10 OLAP traditionnel Prix de produit 123 Vente par produit et par mois Espace (OLAP) Des Agrégations Espace des Données Espace Des Influences (Data Mining) Facteurs d'influence des ventes à Paris Support de Decisions

11 OLAP traditionnel Prix de produit 123 Vente par produit et par mois Espace (OLAP) des Agrégations Espace des Données Espace des Influences (Data Mining) Facteurs d'influence des ventes à Paris Support de Decisions Espace des Variations Changement de ventes depuis 3 mois

12 Espaces de Données Concepts
Relations Ensembles Agrégations Arithmétique Influences Logique et Stats. Variations Calcul différentiel

13 Technologie BDs parallèles, distribuées, scalables
Jointures pré-calculées intégrité référentielle Vues matérialisées Algorithmes statistiques Algorithmes décisionnels revus pour l'application aux BDs Systèmes multibases Entrepôts de données Data warehousing

14 Vue matérialisée T sum prod 30 p1 50 p2 27 p3 create materialized view T (sum, prod) as select sum(montant) prod from Ventes groupby produit ; Les requêtes sont reformulées contre la vue d'une manière transparente pour l'usager select * from T where prod = 'p1' ;

15 Vue matérialisée Problème général Algorithme de MAJ T
sum prod 30 p1 50 p2 27 p3 Problème général Cohérence entre la vue et ses tables de base Algorithme de MAJ pour toute nouvelle vente de Produit p add le montant à T.sum where prod = p ;

16 Vue matérialisée La cohérence peut être implantée par Exercise
des déclencheurs des procédures stockées (stored procedures) Exercise Que faire pour la requête select avg (montant) prod from Ventes groupby produit Note : plusieurs solutions existent

17 Problème de scalabilité
On peut difficilement maintenir un grand nombre de vues matérialisées il faudrait executer des dizaines de déclencheurs et ne pas handicaper les perf. OLTP et comment faire pour les avortements et la concurrence ?

18 Axes de solutions Systèmes multiordinateurs
Cohérence souple (ang. loose) entre les tables de bases et les vues matérialisées la somme de ventes peut être % inexacte pendant 10 sec., de temps en temps, sans que le DBA se fasse gronder nécessité dans les systèmes mobiles Les MAJ sont propagées en asynchrone après le Commit

19 Les statistiques Correlations Regressions Nuées Dynamiques
DFs notamment (correlation = 1) Regressions Nuées Dynamiques Diday Analyse factorielle & multi-dimensionnelle en général Benzecri Aide au diagnostic Bayes

20 OLAP / Data Mining OLAP Data Mining Cette dichotomie est floue
Les agrégations demandées sont connues On peut formuler les requêtes SQL ou SQL imbriqué Data Mining on ne sais pas a priori quoi demander quelles sont les corrélations parmi les attributs de Ventes ? Cette dichotomie est floue

21 Data Mining dans un espace des influences
Le résultat peut être attendu sous forme d'un graphique (business graphics)

22 Data Mining dans un espace des influences
Le résultat peut être attendu sous forme d'un graphique (business graphics) 2-D

23 Data Mining dans un espace des influences
Le résultat peut être attendu sous forme d'un graphique (business graphics) 3-D

24 Data Mining dans un espace des influences
Le résultat peut être attendu sous forme d'une règle logique if customer.age < 25 and power > '9 CH' and status = 'bachelor' then prob (accid.# / year > 1) = 0.99 ;

25 Data Mining dans un espace des influences
Ceci conduit au problèmes d'inférence de règles la logique BDs actives BD de connaissances BDs déductives

26 Mesures dans un espace des variations
On observe les variations selon des dimensions variation de cours de bourse depuis une semaine, une année, 1 Janv variation de ventes (ang. lift) selon la campagne de promotion selon la saison etc Précalcul de variations est encore plus couteux que celui de facteurs statiques surtout de variations temporelles

27 Mesures dans un espace des variations

28 Data Mining dans un espace des influences
On attend deux types de résultats distincts l'état de l'existant découverte, explication, confirmation l'analyse de la tendance prédictions Lex deux aspects sont encore en état de recherche ou, au mieux, en développent avancé

29 Schéma en Étoile Table de faits Tables de dimensions
En général très grande Tables de dimensions En général très petites Liens clé primaire / clé étrangère

30 Architecture d'entrepôt de données IBM

31 Fonctions Agrégat pour OLAP DB2
CountBig Pour le nombre de tuples > 2**31 Covariance entre des attributs ou des expressions de valeur Correlation Regression functions 10 fonctions Les paramètres de la droite de régression entre des attributs ou des expressions de valeur Rank, Dense_Rank Rank en présence de duplicata : 1,2,2,4,4,6… Dense_Rank en présence de duplicata : 1,2,2,3,3,4…

32 Covariance Alors COVARIANCE(expression1, expression2) est:
Soit avgexp1 le résultat de AVG(expression1) et soit avgexp2 le résultat de AVG(expression2), Alors COVARIANCE(expression1, expression2) est: AVG( (expression1 - avgexp1) * (expression2 - avgexp2 ) SELECT COVARIANCE(SALARY, BONUS) FROM EMPLOYEE WHERE WORKDEPT = 'A00'

33 Correlation Définition : COVARIANCE(expression1,expression2)/
(STDDEV(expression1)*STDDEV(expression2)) SELECT CORRELATION(SALARY, BONUS) FROM EMPLOYEE WHERE WORKDEPT = 'A00'

34 Fonctions Agrégat pour OLAP DB2
Fonctions spécifiques à DB2 Data Warehouse Center: Analyse de la variance (ANOVA) Distributions de Fisher-F Valeur P Sous-totaux par période de temps Test de Chi-carré Statistique T pour n paires de valeurs et à partir du coeff. de corrélation r T = r * ((n – 2 ) / (1 - r 2 ))0.5 T  0 indique une corrélation entre les attributs

35 Fonctions Agrégat pour OLAP Teradata
RANK CSUM (Cumulative (Running) Sums) MAVG and MSUM MDIFF (Moving Difference) QUANTILE QUALIFY SAMPLE

36 SELECT EmployeeName, (HireDate - DATE) AS ServiceDays,
RANK ( ServiceDays ) as Seniority FROM Employee ORDER BY EmployeeName; EmployeeName Service Days Seniority Robyn Baker Nick Garrison Kyle McVicker Eva O’Malley Norma Powers

37 Item SalesDate CumulativeSales InstantCOW 01/01/1999 972.99
SELECT Item, SalesDate, CSUM(Revenue,Item,SalesDate) as CumulativeSales FROM (SELECT Item, SalesDate, Sum( Sales ) as Revenue FROM DailySales WHERE StoreId=5 AND SalesDate Between ‘1/1/1999’ and ‘1/31/1999’ GROUP BY Item, SalesDate) AS ItemSales ORDER BY SalesDate ; Item SalesDate CumulativeSales InstantCOW /01/ InstantCOW /02/ InstantCOW /03/ InstantCOW /04/

38 SELECT MarketDay,ClosingPrice, MAVG(ClosingPrice,50,MarketDay) as XYZAverage
FROM MarketDailyClosing WHERE Ticker = ‘XYZ’ ORDERBY MarketDay; MarketDay ClosingPrice XYZAverage 12/27/ / /2 12/28/ / /16 12/29/ / /2 12/30/ /

39 MarketWeek WeekVolume XYZVolumeDiff
SELECT MarketWeek, WeekVolume, MDIFF (WeekVolume,1,MarketWeek)asXYZVolumeDiff FROM (SELECT MarketWeek, SUM(Volume) as WeekVolume FROM MarketDailyClosing WHERE Ticker = ‘XYZ’ GROUP BY MarketWeek) ORDERBY MarketWeek; MarketWeek WeekVolume XYZVolumeDiff 11/29/ ? 12/06/ 12/13/ 12/20/ 12/27/

40 SELECT Item, Profit, QUANTILE( 10, Profit ) as Decile
FROM (SELECTItem,Sum(Sales)—(Count(Sales)*ItemCost) asProfit FROM DailySales, Items WHERE DailySales.Item = Items.Item GROUP BY Item) AS ItemProfit; Item Profit Decile High Tops Low Tops Running Casual Xtrain

41 Item Profit Percentile
SELECT Item, Profit, QUANTILE( 100, Profit ) AS Percentile FROM (SELECT Item,Sum(Sales) — (Count(Sales)* Items.ItemCost) as Profit FROM DailySales, Items WHERE DailySales.Item = Items.Item GROUP BY Item) AS ItemProfit QUALIFY Percentile = 99; Item Profit Percentile Fat Free Ice Cream Sugar Free Ice Cream Fake Chocolate Ice Cream Fat/Sugar Free Ice Cream Fake Ice Cream

42 customer_id age income marital_status ... SAMPLEID
SELECT customer_id, age, income, marital_status, …, SAMPLEID FROM customer_table SAMPLE 0.6, 0.25, 0.15 customer_id age income marital_status SAMPLEID

43 ROLLUP (DB2 & SQL-Server)
Groupements multiples (super-groupes) selon une dimension l ’ordre des attributs dans la clause a l ’importance les attributs sont progressivement « oublies » de droite à gauche Remplace plusieurs requêtes GROUP BY SELECT p#, sum (qty) as tot-qty from S,SP, P WHERE SP. P# = P.P# AND SP. S# = S.S# GROUP BY ROLLUP (P#, S.CITY, COLOR) HAVING tot-qty > 100 ; Problèmes avec des nulls que l’on verra plus tard

44 ----------- ----------- --------------- -----------
SELECT WEEK(SALES_DATE) AS WEEK, DAYOFWEEK(SALES_DATE) AS DAY_WEEK, SALES_PERSON, SUM(SALES) AS UNITS_SOLD FROM SALES WHERE WEEK(SALES_DATE) = 13 GROUP BY ROLLUP ( WEEK(SALES_DATE), DAYOFWEEK(SALES_DATE), SALES_PERSON ) ORDER BY WEEK, DAY_WEEK, SALES_PERSON WEEK DAY_WEEK SALES_PERSON UNITS_SOLD GOUNOT LEE LUCCHESSI GOUNOT LEE LUCCHESSI

45 CUBE (DB2 & SQL-Server) Groupements multiples selon toutes les dimensions l ’ordre des attributs dans la clause n ’a pas d ’importance les attributs sont progressivement « oublies » de droite à gauche Remplace plusieurs requêtes GROUP BY SELECT p#, sum (qty) as tot-qty from S,SP, P WHERE SP. P# = P.P# AND SP. S# = S.S# GROUP BY CUBE (P#, S.CITY, COLOR) HAVING tot-qty > 100 ; Problèmes avec des nuls que l’on verra plus tard Opération bien plus chère que Rollup 2N requêtes générées au lieu de N, pour N attributs

46 CUBE (DB2 & SQL-Server) SELECT WEEK(SALES_DATE) AS WEEK,
DAYOFWEEK(SALES_DATE) AS DAY_WEEK, SALES_PERSON, SUM(SALES) AS UNITS_SOLD FROM SALES WHERE WEEK(SALES_DATE) = 13 GROUP BY CUBE ( WEEK(SALES_DATE), DAYOFWEEK(SALES_DATE), SALES_PERSON ) ORDER BY WEEK, DAY_WEEK, SALES_PERSON

47 WEEK DAY_WEEK SALES_PERSON UNITS_SOLD
GOUNOT LEE LUCCHESSI GOUNOT LEE LUCCHESSI GOUNOT LEE LUCCHESSI GOUNOT LEE LUCCHESSI GOUNOT LEE LUCCHESSI GOUNOT LEE LUCCHESSI

48 GROUPING SETS On indique explicitement les groupes entre (..)
le groupe () est constitué de toute la table SELECT p#, sum (qty) as tot-qty from S,SP, P WHERE SP. P# = P.P# AND SP. S# = S.S# GROUP BY GROUPING SETS ((P#, S.CITY, COLOR), (P#, COLOR), ()) HAVING tot-qty > 100 ; Problèmes avec des nuls que l’on verra plus tard

49 GROUPING SETS SELECT SALES_PERSON, MONTH(SALES_DATE) AS MONTH,
SUM(SALES) AS UNITS_SOLD FROM SALES GROUP BY GROUPING SETS ( (SALES_PERSON, MONTH(SALES_DATE)), () ) ORDER BY SALES_PERSON, MONTH

50 GROUPING SETS SALES_PERSON MONTH UNITS_SOLD
GOUNOT GOUNOT GOUNOT LEE LEE LEE LUCCHESSI LUCCHESSI LUCCHESSI

51 GROUPING SETS & ROLLUP SELECT WEEK(SALES_DATE) AS WEEK,
DAYOFWEEK(SALES_DATE) AS DAY_WEEK, MONTH(SALES_DATE) AS MONTH, REGION, SUM(SALES) AS UNITS_SOLD FROM SALES GROUP BY GROUPING SETS ( ROLLUP( WEEK(SALES_DATE), DAYOFWEEK(SALES_DATE) ), ROLLUP( MONTH(SALES_DATE), REGION ) ) ORDER BY WEEK, DAY_WEEK, MONTH, REGION

52 WEEK DAY_WEEK MONTH REGION UNITS_SOLD
Manitoba Ontario-North Ontario-South Quebec Manitoba Ontario-North Ontario-South Quebec Manitoba Ontario-South Quebec

53 Rollup, Cube, Grouping Sets sous MsAccess
Il y en a pas On peut simuler ces manipulations en utilisant GROUP BY UNION ALL ORDER BY Peut être laborieux pour le CUBE

54 ROLLUP Remarquez le « null as city»

55 ROLLUP

56 ROLLUP Une solution pour l ambiguïté de certains nuls ? Et le CUBE ?

57 Fonctions scalaires S ’appliquent aux valeurs individuelles
d ’attributs d agrégations SQL Il y a plusieurs catégories mathématiques financières chaînes de caractères …. Varient entre les dialectes MsAccess possède UCASE, pas DB2 DB2 possède LOG10, pas MsAccess

58 Fonctions scalaires Peuvent s’imbriquer contrairement aux agrégats SQL
SELECT log((sum([qty]^2)^(1/2))) as exemple FROM SP group by [p#] having int(log(sum([qty]))) = 5 exemple

59 Tabulations Croisées (Crosstab queries)
Présentent les résultat sous forme habituelle de feuilles de calculs Les agrégats SUM, AVG.. de GROUP BY et les valeurs individuelles en même temps Impossible avec SQL standard Transforment les valeurs d'attributs en attributs Par exemple les valeurs de P# trouvés pour un même S# deviennent les attributs P1, P2,... les valeurs de P1, P2.. sont les QTY (par ex.) correspondants

60 Tabulations Croisées TRANSFORM Sum(SP.Qty)
SELECT SP.[S#], Sum(SP.Qty) AS [Row Summary] FROM SP GROUP BY SP.[S#] PIVOT SP.[p#]; Nouvelles colonnes

61 Tabulations Croisées S# Total Qty p1 p2 p3 p4 p5 p6 s s s s L'intitulé Total Qty est mis par défaut par MsAccess

62 Tabulations Croisées La fonction agrégat dans la clause TRANSFORM est obligatoire bien que SUM(QTY) = AVG(QTY) = QTY mais, COUNT(QTY) = 1 On peut générer une expression de valeur TRANSFORM SUM(0.5*QTY) AS [Q2] SELECT Sum(SP.[Q2]) AS [Qte tot. dans 1 mois], Avg(P.[Q2]) AS [Qte moy. dans 1 mois] FROM SP GROUP BY SP.[S#] PIVOT SP.[p#];

63 Tabulations Croisées On peut utiliser la clause WHERE
WHERE P# IN ('P1', 'P2') Alors les fonctions ne calculent les agrégats que sur P1 et P2. On peut aussi restreindre la tabulation seulement PIVOT SP.[p#] IN ('P1', P2') Mais, cette clause n'affecte pas les calculs des agrégats Peut-on appliquer la clause ORDER BY ? Si oui, quel serait l’effet sur les valeurs pivotées ? Peut-on ordonner par rapport à une fonction agrégat ? Comme on a fait pour les requêtes à GROUP BY ? Peut-on appliquer la clause HAVING ?

64 Clauses COMPUTE & FOR BROWSE (SQL Server 6.5 et 7)
expression générale de sélection: SELECT [DISTINCT] attribut(s) FROM table(s) [WHERE condition] [GROUP BY [ROLLUP | CUBE] field(s) ] [HAVING condition ] [ORDER BY attribute(s)] [COMPUTE row-agg (colonne), [row-agg (colonne)]... BY (colonne), [(colonne)]...] [FOR BROWSE] Clause FOR BROWSE permet une MAJ de données dynamiquement visualisées

65 Compute select title, type, price, advance from titles where ytd_sales is not null order by type desc compute AVG(price), SUM(advance) by type compute SUM(price), SUM(advance) go title type price advance fifty years... trad_cook Onions.. trad_cook Sushi... trad_cook avg sum title type price advance Computer... psychology psychology avg sum sum sum

66 Fermeture transitive (DB2)
Considère la table COURS (CNOM, PNOM, NMIN) contenant les cours et leur pré-requis avec les notes minimales pour l ’admission en cours ex. (BDs, Str-Ph, 15) Tout PNOM est une clé étrangère avec CNOM comme clé primaire ailleurs dans COURS Un cours peut avoir plusieurs pré-requis Trouver les noms de tous les pré-requis de cours CNAME = ‘ BDs ’ y compris les pré-requis de pré-requis etc. C ’est le calcul de la fermeture transitive Impossible encore sous MsAccess, SQL Server =< 6.5, Oracle, Informix… Possible sous DB2, à partir de V 5.0

67 Fermeture transitive (DB2)
WITH PRQ (CNOM, PNOM) AS ((SELECT CNOM, PNOM FROM COURS WHERE CNOM = ‘ BDs ’) UNION ALL (SELECT C.CNOM, C.PNOM FROM PRQ AS P, COURS AS C WHERE C.CNOM = P.PNOM)) SELECT DISTINCT PNOM FROM PRQ La requête récursive s exécute tant que la sélection dans PRQ avec PRQ courant n’est pas vide. Requête initiale Requête récursive Requête finale

68 Fermeture transitive (DB2)
Requête initiale (préreq. de BDs COURS 1ere exécution de la Requête récursive (préreq. de BDs) 2eme exécution de la Requête récursive (préreq. de préreq. de BDs) 3eme exéc. de la RR (préreq. de préreq. de préreq. de BDs) etc.

69 Fermeture transitive (DB2)
CNOM PNOM NMIN BDs StPh 15 BDs LPrg 12 StPh InfG 13 InfG Math 11 Lprg InfG 12 CNOM PNOM BDs StPh Bds Lprg

70 Fermeture transitive (DB2)
CNOM PNOM NMIN BDs StPh 15 BDs LPrg 12 StPh InfG 13 InfG Math 11 Lprg InfG 12 CNOM PNOM BDs StPh Bds Lprg StPh InfG Lprg InfG

71 Fermeture transitive (DB2)
CNOM PNOM NMIN BDs StPh 15 BDs LPrg 12 StPh InfG 13 InfG Math 11 Lprg InfG 12 CNOM PNOM BDs StPh Bds Lprg StPh InfG Lprg InfG InfG Math InfG Math

72 Fermeture transitive (DB2)
CNOM PNOM NMIN BDs StPh 15 BDs LPrg 12 StPh InfG 13 InfG Math 11 Lprg InfG 12 CNOM PNOM BDs StPh Bds Lprg StPh InfG Lprg InfG InfG Math InfG Math PNOM StPh InfG Math

73 Fermeture Transitive Oracle
Clause Connect By Calcul d'un arbre généalogique "Oracle 8i The Complete Reference" Loney, K., Koch, G., Osborne, 2000

74 Fermeture Transitive Oracle
Clause Connect By

75

76 Fermeture transitive Trouver aussi les notes minimales nécessaires
Autres applications Tous les subordonnées d ’un chef EMPL (E#, ENOM, CHEF) Toutes les composantes PMIN de pièces composées COMP (PMAJ#, PMIN#) Tous les descendants / ascendants d ’une personne Toutes les participations d ’une entreprise Limite d’application Pas de cycles entre les attributs sélectionnes pour que l ’on a la fermeture transitive (point fixe) ex. pas de participations réciproques

77 Fermeture transitive MsAccess
Il faut simuler par CREATE TABLE PRQ avec la création de clé primaire Insert into PRQ .. select … from COURS... Insert into PRQ .. select … from PRQ, COURS… exécuté interactivement ou par programme jusqu'à ce que le point fixe est atteint Select … FROM PRQ… A compléter par vos soins

78 Conclusion Un champs nouveau
encore grandement ouvert à la recherche La connexion logique avec le domaine des SGBD n'est pas toujours claire Un point de vue sur cette connexion On prend un champs classique d'analyse de donnés et on s'intéresse aux performances pour une grande quantité de données Aux extensions correspondantes de SQL

79 FIN


Télécharger ppt "Les SGBDs Supports de Décisions"

Présentations similaires


Annonces Google