1 cours n°9 confidentialité et sécurité mise en œuvre d'un sgbd - performances marta rukoz...

36
1 Cours n°9 Confidentialité et sécurité Mise en œuvre d'un SGBD - Performances Marta Rukoz Université Paris X - Nanterre

Upload: internet

Post on 03-Apr-2015

104 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 1 Cours n°9 Confidentialité et sécurité Mise en œuvre d'un SGBD - Performances Marta Rukoz Université Paris X - Nanterre

1

Cours n°9 Confidentialité et sécurité

Mise en œuvre d'un SGBD - Performances

Marta Rukoz

Université Paris X - Nanterre

Page 2: 1 Cours n°9 Confidentialité et sécurité Mise en œuvre d'un SGBD - Performances Marta Rukoz Université Paris X - Nanterre

2

PlanI. La notion de vues :

Création - Destruction - Manipulation de vuesLe problème de la mise à jour des tables au travers des

vues

II. Le contrôle de l'accès à la base et aux donnéesPhilosophie généraleLes privilèges

Les instructions GRANT et REVOKELa clause WITH GRANT OPTION

III. PerformancesIntroductionIndexation de fichiersArbre-BHachageIndex bitmapIndexation dans Oracle

Page 3: 1 Cours n°9 Confidentialité et sécurité Mise en œuvre d'un SGBD - Performances Marta Rukoz Université Paris X - Nanterre

3

Création d´une vue

• Il existe deux catégories de tables : les table dérivées et les tables permanentes. Les vues sont des tables dérivées ou virtuelles .

• Création d'une vue (table virtuelle) :

CREATE VIEW nom_de_vue [(liste de colonnes)]AS table_expression[WITH [CASCADED | LOCAL] CHECK OPTION];

table_expression est une requête pouvant comporter des opérateurs ensemblistes. Absence de ORDER BY.

• La création d'une vue n'extrait aucune ligne de la base. Elle inscrit juste la définition de la vue dans les tables de la méta-base.

Page 4: 1 Cours n°9 Confidentialité et sécurité Mise en œuvre d'un SGBD - Performances Marta Rukoz Université Paris X - Nanterre

4

Création d´une vue (exemple)

CREATE VIEW etudiants_MIAGE

(numero, nom, prenom, date_de_naissance, filiere, année)

AS SELECT *

FROM etudiants

WHERE filiere = 'MIAGE' and année = 'licence';

Attributs de etudiants : num_etu, nom_etu, pre_etu, ddn, filiere, année

ou bienCREATE VIEW etudiants_MIAGE

AS SELECT *

FROM etudiants

WHERE filiere = 'MIAGE' and année = 'licence';

Page 5: 1 Cours n°9 Confidentialité et sécurité Mise en œuvre d'un SGBD - Performances Marta Rukoz Université Paris X - Nanterre

5

CREATE VIEW ca_clients (reference, chiffres_affaire)

AS SELECT num_cli, SUM(qte_lcd * pu_lcd)

FROM commande, ligne_commande

WHERE num_cd = cmd_lcd

GROUP BY num_cli;

équivalent à :CREATE VIEW ca_clients

AS SELECT num_cli AS reference,

SUM(qte_lcd * pu_lcd) AS chiffres_affaire

FROM commande, ligne_commande

WHERE num_cd = cmd_lcd

GROUP BY num_cli;

Création d´une vue (exemple)

Page 6: 1 Cours n°9 Confidentialité et sécurité Mise en œuvre d'un SGBD - Performances Marta Rukoz Université Paris X - Nanterre

6

La destruction d´une vue

DROP VIEW nom_de_vue [RESTRICT | CASCADE]

RESTRICT : si la vue intervient dans la définition d'une autre vue ou dans une contrainte d'intégrité, la commande sera rejetée.CASCADE : suppression de la vue et de toutes les vues ou contraintes où la vue intervient.

Page 7: 1 Cours n°9 Confidentialité et sécurité Mise en œuvre d'un SGBD - Performances Marta Rukoz Université Paris X - Nanterre

7

Manipulation de vues

• Dès qu'une vue est définie, on peut l'utiliser comme une table de base. On peut alors définir des requêtes de recherche.

SELECT * FROM etudiants_MIAGEWHERE nom LIKE 'D%';

SELECT * FROM etudiants WHERE filiere = 'MIAGE4 and annee = 'licence'AND nom_etu LIKE 'D%';

sera traduite en :

• Une vue est une fenêtre dynamique sur la base. Les modifications apportées sur la ou les tables sources sont automatiquement reportées au travers de la vue.

Page 8: 1 Cours n°9 Confidentialité et sécurité Mise en œuvre d'un SGBD - Performances Marta Rukoz Université Paris X - Nanterre

8

Raisons d'être des vues

• Une vue peut être utile pour masquer la complexité du schéma de la base de données

Faciliter l'accès à la base

Augmenter l'indépendance logique

• Objectif : augmenter l'indépendance de l'utilisateur vis-à-vis de l'organisation logique globale des données.

Création de vues correspondant à des tables utilisées dans des applications mais ne faisant pas partie du schéma logique de la base.

Page 9: 1 Cours n°9 Confidentialité et sécurité Mise en œuvre d'un SGBD - Performances Marta Rukoz Université Paris X - Nanterre

9

Raisons d'être des vues

• On peut vouloir effectuer un contrôle sur ce que font les utilisateurs en fonction du contexte

Préserver la confidentialité et personnalisation

Soit la table EMPLOYE = (numero, nom, prenom, adresse, num_service, salaire, performance)

Ex : on peut permettre à un utilisateur de ne visualiser QUE le tuple qui le concerne

CREATE VIEW information_me_concernantAS SELECT * FROM EMPLOYE WHERE nom = USER;puis :GRANT SELECT ON information_me_concernant TO PUBLIC;

Page 10: 1 Cours n°9 Confidentialité et sécurité Mise en œuvre d'un SGBD - Performances Marta Rukoz Université Paris X - Nanterre

10

Raisons d'être des vues

• On peut vouloir effectuer un contrôle sur les types de données auxquelles les utilisateurs ont accès

Préserver la confidentialité et personnalisation

Ex : on peut permettre à Mme Michu de lire les colonnes numero, nom, prenom, adresse, num_service et modifier le contenu des adresses ou numero de service

CREATE VIEW liste_des_employesAS SELECT numero, nom, prenom, adresse, num_service FROM EMPLOYE;puis :GRANT SELECT, UPDATE (adresse, num_service)ON liste_des_employés TO Michu;

Partie de ce document a été pris du cours SBD- Chantal Reynaud Université Paris Nanterre

Page 11: 1 Cours n°9 Confidentialité et sécurité Mise en œuvre d'un SGBD - Performances Marta Rukoz Université Paris X - Nanterre

11

Raisons d'être des vues

• On peut vouloir effectuer un contrôle sur les types de données auxquelles les utilisateurs ont accès et également un contrôle fonction des valeurs prises par certains attributs

Préserver la confidentialité et personnalisation

Ex : on ne permet pas à Mme Michu de lire les colonnes nom, prenom, adresse, des employés dont le salaire est supérieur à 11500 euros;

CREATE VIEW employes_richesAS SELECT numero, salaire, performance FROM EMPLOYE WHERE salaire > 11500;puis :GRANT SELECT ON employés_riches TO Michu;

Page 12: 1 Cours n°9 Confidentialité et sécurité Mise en œuvre d'un SGBD - Performances Marta Rukoz Université Paris X - Nanterre

12

Raisons d'être des vues

• A défaut de contraintes centralisées dans le dictionnaire, le concept de vue peut pallier cette lacune.

Permettre d'introduire des contraintes d'intégrité

Ex : CREATE VIEW lignes_commandes_validéesAS SELECT * FROM lig_cmd

WHERE lcd_qte >= 0AND lcd_liv >= 0 AND lcd_liv <= lcd_qteAND lcd_pu >= 0.8 *

(SELECT art_pv FROM articlesWHERE art_num = lcd_art)

AND lcd_cmd IN(SELECT cmd_num FROM commandes)

WITH CHECK OPTION.

Grâce à CHECK OPTION, le système vérifie la validité des données introduites ou modifiées par rapport aux critères spécifiées dans la vue.

Page 13: 1 Cours n°9 Confidentialité et sécurité Mise en œuvre d'un SGBD - Performances Marta Rukoz Université Paris X - Nanterre

13

Le problème de la mise à jour des tables au travers des vues

• La vue est une projection sans la colonne de la clé primaire : IMPOSSIBLE

• La vue est une projection incluant la colonne de la clé primaire : POSSIBLE, SAUF SI des colonnes non présentes dans la vue ne peuvent être à NULL et n'ont pas de valeurs par défaut.

• L'expression définissant la vue fait intervenir une fonction de calcul ou une fonction de groupe : IMPOSSIBLE

• La vue est définie à partir de plusieurs tables : PAS TOUJOURS POSSIBLE

Quelques cas posant problème

Page 14: 1 Cours n°9 Confidentialité et sécurité Mise en œuvre d'un SGBD - Performances Marta Rukoz Université Paris X - Nanterre

14

Le problème de la mise à jour des tables au travers des vues

• La définition d'une vue ne peut pas contenir les mots réservés JOIN, UNION, INTERSECT, EXCEPT. La vue doit être définie à partir d'une seule table source.

• La clause SELECT ne doit pas contenir de DISTINCT

• La clause SELECT ne doit pas contenir de références aux colonnes de la table source (pas de SUM, COUNT)

• La clause FROM contient exactement une table ou une vue modifiable

• La clause WHERE ne peut pas contenir une sous-question telle que la clause FROM de la requête imbriquée possède une référence à la même table que celle de la clause FROM du niveau englobant.

• La définition d'une vue ne doit pas contenir de GROUP BY ou de HAVING

Règles à respecter pour qu'une vue soit modifiable

Une vue qui ne satisfait pas ces conditions est en lecture seule.

Page 15: 1 Cours n°9 Confidentialité et sécurité Mise en œuvre d'un SGBD - Performances Marta Rukoz Université Paris X - Nanterre

15

Le problème de la mise à jour des tables au travers des vues

Possibilités d'Oracle

CREATE [FORCE | NO FORCE] VIEW nom_vue [(liste_colonnes)]AS expression_de_selection[WITH READ ONLY][WITH CHECK OPTION CONSTRAINT nom_contrainte];

FORCE : pour créer la vue même si les tables de base n'existent pas encore ou que l'on n'a pas les privilèges nécessaires.

WITH READ ONLY : interdit les mises à jour sur les vues.

Pour Oracle, les modifications dans une vue sont possibles si elles ne comportent pas de : DISTINCT, fonctions de calcul (AVG, COUNT, UNION, ALL, INTERSECT, MINUS), GROUP BY, HAVING, CONNECT BY.

Page 16: 1 Cours n°9 Confidentialité et sécurité Mise en œuvre d'un SGBD - Performances Marta Rukoz Université Paris X - Nanterre

16

• Oracle permet à plusieurs utilisateurs de travailler en toute sécurité sur la même base. Chaque donnée peut être confidentielle et accessible à un seul utilisateur, ou partageable entre plusieurs utilisateurs.

• Un utilisateur ne peut effectuer une opération quelconque que s'il détient le privilège approprié pour réaliser cette opération.

• Le créateur d'une table en est le propriétaire. Pour qu'un utilisateur puisse accéder à une table, il doit recevoir, du propriétaire de la table, les droits nécessaires pour l'exécution des manipulations envisagées.

• GRANT et REVOKE permettent de distribuer et retirer ces privilèges.

• L'opérateur USER désigne l'utilisateur courant et peut être utilisé dans toute requête.

Le contrôle de l'accès à la base et aux données : Philosophie générale

Page 17: 1 Cours n°9 Confidentialité et sécurité Mise en œuvre d'un SGBD - Performances Marta Rukoz Université Paris X - Nanterre

17

Les privilèges• SELECT : privilège donnant accès à toutes les colonnes d'une table.

• INSERT, INSERT(colonnes) : permet l'insertion dans toutes les colonnes d'une table.

• UPDATE, UPDATE(colonnes) : permet la modification de toutes les colonnes d'une table.

• DELETE : permet la suppression des lignes d'une table.

• REFERENCES, REFERENCES(colonnes) : permet d'utiliser toutes les colonnes d'une table dans une contrainte d'intégrité.

• USAGE : privilège nécessaire à l'utilisation d'un domaine.

• etc.

Dans Oracle, existe la notion de rôle qui réunit un ensemble de privilèges sous un nom logique

Rôle standard DroitsCONNECT Se connecter, créer des tables, des vues, des synonymes, ..RESOURCE créer des objets plus complexesDBA administration

Page 18: 1 Cours n°9 Confidentialité et sécurité Mise en œuvre d'un SGBD - Performances Marta Rukoz Université Paris X - Nanterre

18

Les instructions GRANT et REVOKE

• L'instruction GRANT permet à un utilisateur de distribuer des privilèges à d'autres :

GRANT liste_privilèges ON nom_objet TO {nom_utilisateur, nom_rôle, PUBLIC};

GRANT UPDATE, SELECT ON magasins TO Yvan;GRANT UPDATE(att1, att2) ON nom_table TO pierre, paul;GRANT INSERT(col1, col2, col3) ON nom_table TO edouard;GRANT SELECT ON fournisseurs TO PUBLIC;

Exemples :

• L'instruction REVOKE permet de retirer des privilèges.

Exemple : REVOKE UPDATE ON magasins FROM Yvan;

REVOKE liste_privilèges ON nom_objet FROM {nom_utilisateur, nom_rôle, PUBLIC};

Page 19: 1 Cours n°9 Confidentialité et sécurité Mise en œuvre d'un SGBD - Performances Marta Rukoz Université Paris X - Nanterre

19

La clause WITH GRANT OPTION

• Par défaut, ceux qui reçoivent un privilège ne peuvent le céder à d'autres sauf si l'option WITH GRANT OPTION est spécifiée

•Cette facilité se retire de la façon suivante :

REVOKE GRANT OPTION FOR SELECT ON clients FROM ferdinand;

Page 20: 1 Cours n°9 Confidentialité et sécurité Mise en œuvre d'un SGBD - Performances Marta Rukoz Université Paris X - Nanterre

20

Performances : Introduction

• La norme SQL ne spécifie rien quant à la manière d'assurer des performances suffisantes dans les applications. Le contrôle des performances est du ressort de l'administrateur des structures de données , il échappe totalement à l'utilisateur.

• Tous les SGBD proposent de construire et maintenir des index sur les données.

• Un index sur une table est semblable à l'index à la fin d'un livre. Il permet de répondre aux requêtes beaucoup plus rapidement en créant des chemins d'accès aux enregistrements beaucoup plus directs.

• Un index est formé de clés qui permettent ensuite de lire directement les données correspondantes.

• La présence d'index n'est pas du tout nécessaire pour manipuler les informations d'une base de données en SQL. Les requêtes SQL sont transparentes au fait qu'il existe ou non un index.

Page 21: 1 Cours n°9 Confidentialité et sécurité Mise en œuvre d'un SGBD - Performances Marta Rukoz Université Paris X - Nanterre

21

Indexation de fichiersTable à indexer

Titre Année …Vertigo 1958 …Brazil 1984 …

Twin Peaks 1990 …Underground 1995 …Easy Rider 1969 …Psychose 1960 …Greystoke 1984 …

Shining 1980 …Annie Hall 1977 …

Jurassic Park 1992 …Metropolis 1926 …Manhattan 1979 …

Reservoir Dogs 1992 …Impitoyable 1992 …Casablanca 1995 …

Page 22: 1 Cours n°9 Confidentialité et sécurité Mise en œuvre d'un SGBD - Performances Marta Rukoz Université Paris X - Nanterre

22

Indexation de fichiersIndex non dense

Annie Hall Greystoke Metropolis Smoke

Annie Hall 1977 …Brazil 1984 …

Casablanca 1942 …Easy Rider 1969 …

Greystoke 1984 …Jurassic Park 1992 …Impitoyable 1992 …Manhattan 1979 …

Metropolis 1926 …Psychose 1960 …

Reservoir Dogs 1992 …Shining 1980 …

Smoke 1995 …Twin Peaks 1990 …

Underground 1995 …Vertigo 1958 …

Index

L'index ne comprend qu'un enregistrement par bloc. Il est trié. On peut donc y accéder par dichotomie.- Très efficace pour les recherches- Problèmes : maintien de l'ordre suite à des insertions, destructions, maintien de la correspondance avec l'index.

Page 23: 1 Cours n°9 Confidentialité et sécurité Mise en œuvre d'un SGBD - Performances Marta Rukoz Université Paris X - Nanterre

23

Indexation de fichiersIndex dense

Annie Hall 1977 …Brazil 1984 …

Casablanca 1942 …Easy Rider 1969 …

Greystoke 1984 …Jurassic Park 1992 …Impitoyable 1992 …Manhattan 1979 …

Metropolis 1926 …Psychose 1960 …

Reservoir Dogs 1992 …Shining 1980 …

Smoke 1995 …Twin Peaks 1990 …

Underground 1995 …Vertigo 1958 …

1926194219581960196919771979198019841984199019921992199219951995

Page 24: 1 Cours n°9 Confidentialité et sécurité Mise en œuvre d'un SGBD - Performances Marta Rukoz Université Paris X - Nanterre

24

Indexation de fichiersIndex multi-niveaux

Annie Hall 1977 …Brazil 1984 …

Casablanca 1942 …Easy Rider 1969 …

Greystoke 1984 …Jurassic Park 1992 …Impitoyable 1992 …Manhattan 1979 …

Metropolis 1926 …Psychose 1960 …

Reservoir Dogs 1992 …Shining 1980 …

Smoke 1995 …Twin Peaks 1990 …

Underground 1995 …Vertigo 1958 …

1926194219581960

1969197719791980

1984198419901992

1992199219951995

1926196919841992

Page 25: 1 Cours n°9 Confidentialité et sécurité Mise en œuvre d'un SGBD - Performances Marta Rukoz Université Paris X - Nanterre

25

Arbre-B

Annie Hall Greystoke Metropolis Smoke

Annie HallBrazil

CasablancaEasy Rider

GreystokeJurassic ParkImpitoyableManhattan

MetropolisPsychose

Reservoir DogsShining

SmokeTwin Peaks

UndergroundVertigo

Vertigo 1958 Brazil 1984 Twin Peaks 1990 Underground 1995 Easy Rider 1960 Psychose 1960

Greystoke 1984 Shining 1980 Annie Hall 1977 Jurassic Park 1992 Metropolis 1926

Manhattan 1979 Reservoir Dogs 1992 Impitoyable 1992 Casablanca 1942 Smoke 1995

INDEX

DONNEES

Page 26: 1 Cours n°9 Confidentialité et sécurité Mise en œuvre d'un SGBD - Performances Marta Rukoz Université Paris X - Nanterre

26

Hachage : Principes de base

• Le SGBD applique une fonction mathématique, appelée fonction de hachage, sur une clé. Le résultat est un numéro de bloc ou adresse. Le tuple correspondant à la clé est stocké dans ce bloc. En théorie, cette technique permet d'accéder à un tuple en une entrée-sortie.

• Problèmes : l'application de la fonction de hachage à deux clés différentes donnant le même résultat. • Solutions : chaînage des collisions ou application d'une fonction secondaire.

•La répartition des tuples dans les blocs est d'autant meilleure que le nombre de clés différentes est élevé. Le hachage à partir d'une colonne contenant beaucoup de valeurs NULL est déconseillé.

Page 27: 1 Cours n°9 Confidentialité et sécurité Mise en œuvre d'un SGBD - Performances Marta Rukoz Université Paris X - Nanterre

27

Hachage (Exemple)

Jurassic Park 1992Twin Peaks 1990Easy Rider 1969

Annie Hall 1977Underground 1995Psychose 1960

Brazil 1984Vertigo 1958Greystoke 1984

Manhattan 1979Metropolis 1926Casablanca 1942Reservoir Dogs 1992

Impitoyable 1992Shining 1980Smoke 1995

01234

Entrées

Blocs

Répertoire

Page 28: 1 Cours n°9 Confidentialité et sécurité Mise en œuvre d'un SGBD - Performances Marta Rukoz Université Paris X - Nanterre

28

Hachage : Recherche - Mise à jour

• Recherche :

Si le répertoire tient en mémoire principale, on peut effectuer une recherche en ne lisant qu'un bloc.

Avantages : cette structure n'occupe aucun espace disque, il permet des recherches par clé par accès direct (calculé) au bloc susceptible de contenir l'enregistrement.

Impossible d'optimiser les recherches par intervalle car l'organisation des enregistrements ne s'appuie pas sur l'ordre des clés.

• Mise à jour :

Mal adapté. L'espace alloué risque d'être insuffisant s'il y a des insertions. On chaîne alors les blocs.

Page 29: 1 Cours n°9 Confidentialité et sécurité Mise en œuvre d'un SGBD - Performances Marta Rukoz Université Paris X - Nanterre

29

Index bitmap

Titre Genre1 Vertigo Suspense2 Brazil Science-fiction3 Twin Peaks Fantastique4 Underground Drame5 Easy Rider Drame6 Psychose Drame7 Greystoke Aventures8 Shining Fantastique9 Annie Hall Comédie

10 Jurassic Park Science-fiction11 Metropolis Science-fiction12 Manhattan Comédie13 Reservoir Dogs Policier14 Impitoyable Western15 Casablanca Drame16 Smoke Comédie

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16Drame 0 0 0 1 1 1 0 0 0 0 0 0 0 0 1 0Science-fiction 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0Comédie 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1

Un index bitmap considère toutes les valeurs possibles pour un attribut. Pour chaque valeur, on stocke un tableau de bits (dit bitmap) avec autant de bits qu'il y a de lignes dans la table.

Très utile pour les colonnes qui ne possèdent que quelques valeurs distinctes.

Page 30: 1 Cours n°9 Confidentialité et sécurité Mise en œuvre d'un SGBD - Performances Marta Rukoz Université Paris X - Nanterre

30

Comparaison• Les arbres-B sont très souples et offrent des recherches rapides en fonction d'une valeur de la clé ou d'une plage de valeurs. En général, on crée un tel index pour les colonnes ayant un très grand nombre de valeurs différentes ou qui interviennent dans des critères de recherche ou de jointure. C'est ainsi qu'en pratique, on en définit toujours pour les clés primaires et étrangères.

• Les index hachés permettent en une seule E/S de retrouver un tuple dont on donne la valeur de la clé.

• Les index à matrices binaires (bitmap) peuvent être utiles pour les requêtes de comptage en fonction de critères portant sur plusieurs colonnes comportant que peu de valeurs différentes. En pratique, ces index sont utilisés pour de grandes tables. La maintenance d'un index représente toujours une surcharge de travail pour le SGBD. Dès lors, on évite de créer des index sur les colonnes fortement modifiées.

Page 31: 1 Cours n°9 Confidentialité et sécurité Mise en œuvre d'un SGBD - Performances Marta Rukoz Université Paris X - Nanterre

31

Indexation dans Oracle• Oracle propose plusieurs techniques d'indexation : arbres-B, arbres-B+ (par défaut), tables de hachage. Oracle maintient automatiquement les index, de manière transparente pour l'utilisateur.

• Par défaut, un arbre-B+ est créé sur la clé primaire de chaque table.

• Si l'utilisateur effectue des recherches sur des critères qui ne font pas partie de la clé, les recherches peuvent être optimisées en créant un nouvel index.

CREATE [UNIQUE] INDEX nom_indexON nom_table (nom_colonne [ASC | DESC] [, nom_colonne …];

UNIQUE : une seule valeur de champ de clé

Exemples :

CREATE INDEX nomcli_ind ON client(nomcli);CREATE INDEX com_ind ON commandes (datecom DESC, numcli ASC);

Page 32: 1 Cours n°9 Confidentialité et sécurité Mise en œuvre d'un SGBD - Performances Marta Rukoz Université Paris X - Nanterre

32

Indexation dans Oracle• Pour créer une table en arbre-B, il faut l'indiquer à la création :

CREATE TABLE nom_table(Att1 typeAtt1,…PRIMARY KEY (Att1),ORGANIZATION INDEX);

• Tables de hachage :

CREATE CLUSTER HashFilms (id INTEGER)SIZE 500HASHKEYS 500;

CREATE TABLE Film (idFilm INTEGER, …) CLUSTER HashFilms (idFilm);

Page 33: 1 Cours n°9 Confidentialité et sécurité Mise en œuvre d'un SGBD - Performances Marta Rukoz Université Paris X - Nanterre

33

Règles à respecter

• Ne pas créer d'index pour des tables de moins de 200-300 lignes, l'accès séquentiel est plus rapide.

• Ne pas créer d'index sur une colonne qui ne possède que quelques valeurs différentes.

• Indexer les colonnes qui interviennent souvent dans les clauses WHERE et ORDER BY

• Indexer les colonnes de jointure.

Page 34: 1 Cours n°9 Confidentialité et sécurité Mise en œuvre d'un SGBD - Performances Marta Rukoz Université Paris X - Nanterre

34

Page 35: 1 Cours n°9 Confidentialité et sécurité Mise en œuvre d'un SGBD - Performances Marta Rukoz Université Paris X - Nanterre

35

B+ Tree

Apunt. 1 Clave1 Apunt. 2 Clave2 .... Apunt. n-1 Claven-1 Apunt n

Registros con claves menores a Clave1 Registros con clave

mayores o igual a Clave1 y menores o iguales a Clave2

Registros con clave mayores a Claven-1

Estructura jerárquica, donde cada nodo:

El grado de un B+ tree (n) es el numero máximo de nodos hijos que posee cada nodo

Page 36: 1 Cours n°9 Confidentialité et sécurité Mise en œuvre d'un SGBD - Performances Marta Rukoz Université Paris X - Nanterre

36

B Tree

En B+ trees algunas claves son repetidas en muchos nodos

B tree es similar a B+ tree pero sin repetición de clave

Ap11 Ap12 Clave1 Ap21 Ap22 Clave2 .... Claven Apn

Registros con claves menores que Clave1

Registros con clave mayores a Clave1 y menores a Clave2

Registros con clave Clave n

Al registro con clave1