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

1 Les SGBDs Supports de Décisions Witold Litwin 2 Besoin Utilisation massive de fonctions agrégats –celles de SQL –autres dans le langage hôte Exemples.

Présentations similaires


Présentation au sujet: "1 Les SGBDs Supports de Décisions Witold Litwin 2 Besoin Utilisation massive de fonctions agrégats –celles de SQL –autres dans le langage hôte Exemples."— Transcription de la présentation:

1

2 1 Les SGBDs Supports de Décisions Witold Litwin

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

4 3 Problèmes nouveaux ¶Parcours fréquent de tous les tuples –d'une grande table –d'une collection de tables à joindre aL'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 ?

5 4 Solutions Nouvelles fonctions de SQL –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

6 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

7 6 Solutions 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

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

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

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

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

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

13 12 Espaces de DonnéesConcepts RelationsEnsembles AgrégationsArithmétique InfluencesLogique et Stats. VariationsCalcul différentiel

14 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

15 14 Vue matérialisée 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' ; sumprod 30p1 50p2 27p3 T

16 15 Vue matérialisée 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 ; sumprod 30p1 50p2 27p3 T

17 16 Vue matérialisée La cohérence peut être implantée par –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

18 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 ?

19 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 0.05 % 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

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

21 20 OLAP / Data Mining OLAP –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

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

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

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

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

26 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

27 26 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 Mesures dans un espace des variations

28 27 Mesures dans un espace des variations

29 28 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é Data Mining dans un espace des influences

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

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

32 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 –entre des attributs ou des expressions de valeur 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…

33 32 Covariance 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'

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

35 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

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

37 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 OMalley Norma Powers

38 37 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/01/ InstantCOW 01/02/ InstantCOW 01/03/ InstantCOW 01/04/

39 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/ /8 86 1/16 12/29/ /4 86 1/2 12/30/ /2 87

40 39 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/ /13/ /20/ /27/

41 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

42 41 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

43 42 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

44 43 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 lon verra plus tard ROLLUP (DB2 & SQL-Server)

45 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

46 45 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 lon verra plus tard Opération bien plus chère que Rollup –2 N requêtes générées au lieu de N, pour N attributs CUBE (DB2 & SQL-Server)

47 46 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 CUBE (DB2 & SQL-Server)

48 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

49 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 lon verra plus tard

50 49 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 GROUPING SETS

51 50 SALES_PERSON MONTH UNITS_SOLD GOUNOT 3 35 GOUNOT 4 14 GOUNOT 12 1 LEE 3 60 LEE 4 25 LEE 12 6 LUCCHESSI 3 9 LUCCHESSI 4 4 LUCCHESSI GROUPING SETS

52 51 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 GROUPING SETS & ROLLUP

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

54 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

55 54 ROLLUP Remarquez le « null as city»

56 55 ROLLUP

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

58 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

59 58 Fonctions scalaires Peuvent simbriquer –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

60 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

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

62 61 S# Total Qty p1p2p3p4p5p6 s s s s L'intitulé Total Qty est mis par défaut par MsAccess Tabulations Croisées

63 62 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#]; Tabulations Croisées

64 63 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 leffet 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 ? Tabulations Croisées

65 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

66 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 typepriceadvance fifty years...trad_cook Onions..trad_cook Sushi...trad_cook avg 15.96sum title typepriceadvance Computer...psychology psychology avg 15.96sum sum sum 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 typepriceadvance fifty years...trad_cook Onions..trad_cook Sushi...trad_cook avg 15.96sum title typepriceadvance Computer...psychology psychology avg 15.96sum sum sum

67 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

68 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 nest pas vide. Requête initiale Requête récursive Requête finale

69 68 Fermeture transitive (DB2) Requête initiale (préreq. de BDs 1ere exécution de la Requête récursive (préreq. de BDs) COURS 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.

70 69 Fermeture transitive (DB2) CNOMPNOM BDsStPh BdsLprg CNOMPNOMNMIN BDsStPh15 BDsLPrg12 StPhInfG13 InfGMath11 LprgInfG12

71 70 Fermeture transitive (DB2) CNOMPNOM BDsStPh BdsLprg CNOMPNOMNMIN BDsStPh15 BDsLPrg12 StPhInfG13 InfGMath11 LprgInfG12 StPhInfG LprgInfG

72 71 Fermeture transitive (DB2) CNOMPNOM BDsStPh BdsLprg CNOMPNOMNMIN BDsStPh15 BDsLPrg12 StPhInfG13 InfGMath11 LprgInfG12 StPhInfG LprgInfG InfGMath

73 72 Fermeture transitive (DB2) CNOMPNOM BDsStPh BdsLprg CNOMPNOMNMIN BDsStPh15 BDsLPrg12 StPhInfG13 InfGMath11 LprgInfG12 StPhInfG LprgInfG InfGMath PNOM StPh InfG Math

74 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

75 74 Fermeture Transitive Oracle Clause Connect By

76 75

77 76 Fermeture transitive ?Trouver aussi les notes minimales nécessaires kAutres applications k Tous les subordonnées d un chef EMPL (E#, ENOM, CHEF) kToutes les composantes PMIN de pièces composées COMP (PMAJ#, PMIN#) kTous les descendants / ascendants d une personne k Toutes les participations d une entreprise kLimite dapplication k Pas de cycles entre les attributs sélectionnes kpour que l on a la fermeture transitive (point fixe) kex. pas de participations réciproques

78 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

79 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

80 79 FIN


Télécharger ppt "1 Les SGBDs Supports de Décisions Witold Litwin 2 Besoin Utilisation massive de fonctions agrégats –celles de SQL –autres dans le langage hôte Exemples."

Présentations similaires


Annonces Google