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

Implémentation des SGBD

Présentations similaires


Présentation au sujet: "Implémentation des SGBD"— Transcription de la présentation:

1 Implémentation des SGBD
Stockage des données, indexation

2 FALSE 00000000. Représenter : Entier (court) : 2 octets
ex: 35 par Réel : n bits pour la mantisse, m pour l ’exposant. Caractère : plusieurs possibilités. ASCII : A a etc…. Booléen : TRUE , FALSE

3 Représenter : type spécifique (énuméré)
ex: rouge = 1, vert = 2, bleu = 3…. Date ex: YYYYMMDD (pourquoi pas YYMMDD ?) Chaine de caractères : terminé par nul. Ex: donné avec longueur. Ex: longueur fixée. Ensembles de bits. Ex: c h a t 4 c h a t long bits

4 Record (enregistrement)
Stockage: données codées suivant un format fixe (ex. 2 octets pour un caractère) ou variable (longueur précisée dans ce cas). Données Record (enregistrement) Blocs Fichiers Memoire

5 Record (enregistrement) - Collection de données (de champs) de types prédéfinis.
Ex : record employe, champs : nom, salaire, type-de-job,... Plusieurs choix pour les formats (i.e. organisation interne) et longueurs d’enregistrement: format fixe vs. format variable longueur fixe vs.longueur variable

6 Format d ’enregistrement fixe - caractéristiques
Un schéma (de record) contient les informations suivantes: nombre de champs, type de chaque champs, ordre des champs dans le record, signification de chaque champ. Exemple: format et longueur fixe - record employe (1) E#, entier 2 octets (2) E.name, char(10). Schema (3) Dept, code sur 2 octets 55 s m i t h 02

7 Format et longueur de record variables
Utile pour des enregistrements hétérogènes (champs qui se répètent, grande différence de taille entre deux valeurs possibles d ’un même champs…) Exemple 1: - info. sur les enfants d ’un employé (long. de chaque champs fixe). 5 octets 3 Tom Sally (enf 1) Ted (enf 2)

8 Exemple 2: liens vers les films d ’un acteur (nombre variable de champs de taille fixes ou variables). Autres info. d ’en-tète longueur du record Vers adresse (champs variable) Vers pointeur de films numéro de tuple (champs fixe ex. sur 3 octets) Eastwood 21 Californie Pointeurs vers films

9 Remarques sur exemple précédent :
Il faut maintenir un pointeur vers le début de chaque champs de taille variable (à partir du deuxième). Les records peuvent contenir à la fois des données mais aussi des adresses (vers mémoire centrale, secondaire ?) on a besoin de connaître la longueur totale du record.

10 Caractéristique des records - en-tète
En plus des données, les records doivent contenir un certain nombre d ’informations stockés en en-tète: Sur le schéma de la relation à laquelle le record appartient (prend la forme d ’un pointeur vers un zone où le SGBD stocke le schéma. Sur la longueur totale du record (surtout pour les records de taille potentiellement variable) Sur la date de la dernière modification ou lecture du record (timestamps).

11 Rassembler les records en bloc
Les records sont assemblés par bloc. Le nombre de record par bloc dépend à la fois de la taille des records et de celle d ’un bloc (toujours la même). Chaque bloc sera de la forme suivante : L ’en-tète de bloc comprend: liens (offset) vers le début de chaque record du bloc un identificateur de bloc information sur la relation auquel appartiennet les records du bloc liens vers d ’autres blocs (cf. indexation) timestamps : temps du dernier accès ou modification …….. Bloc n Bloc 2 Bloc 1 En-tète espace perdu

12 Adresses de blocs Chaque objet (record, bloc) possède deux types d ’adresse : son adresse dans l ’espace d ’adressage du SGBD (i.e. une façon de le localiser dans la mémoire secondaire) une adresse (plus petite) en mémoire virtuelle ou centrale. On a besoin d ’une table pour traduire les adresses (table de translation). Quand un bloc est chargé en mémoire centrale les pointeurs des autres blocs vers lui doivent être mis à jour (« swizzled ») ainsi que certains de ses propres pointeurs.

13 « Swizzling » : conversion de l ’adressage lors de chargement (ou déchargement) en mémoire.
Mémoire Disque block 1 block 1 Rec A block 2 block 2 Rec A

14 Remarques Grands records et BLOBs (Binary Large Objects)
Il peut arriver que les records soient de très grandes tailles et parfois beaucoup plus grand qu ’un bloc. En cas de record occupant une grande partie d ’un seul bloc, on peut décider d ’occuper l ’espace qui reste (trop petit pour un record entier) par une partie d ’un record et ajouter un pointeur vers le bloc contenant le reste du record. En cas de très gros record, occupant de nombreux bloc (cas du stockage de vidéo MPEG par exemple), on doit trouver des moyens de stockage permettant le chargement rapide en mémoire centrale de portions du record sans interruptions (stockage sur cylindres consécutifs et découpage du record sur plusieurs disques)

15 Index et B-arbres

16 Indexation Pour optimiser l ’exécution des requêtes, on a besoin d ’information sur la façon dont les données sont stockées. Examinons la requête : select * from employe where num=5050 Sans aucune information sur le stockage des tuples de la relation employe on est obligé de les parcourir tous pour trouver celui ou ceux qui satisfont la requête. Si on suppose qu ’ils sont indéxés suivant un ordre particulier (croissant, décroissant…), la recherche peut devenir plus aisée. Index : toute structure de données qui prend en entrée une propriété des records (ex. la valeur d ’un ou plusieurs champs) et renvoie « rapidement » les records satisfaisant cette propriété.

17 Indexation valeur Blocs contenant index les records records
Rem : des indexs peuvent être crée en SQL par la commande : create index. On va étudier une des structures les plus répandues d ’indexation : les B-arbres. Blocs contenant les records index records satisfaisant

18 Les B-arbres Exemple 87 122 151 180 31 1 6 25 46 102 111 125 160 175 201 noeud feuille

19 Structure d ’un nœud (non-feuille) : ordre 3
Les B-arbres sont des structures de données qui permettent l ’indexation des relations. Ils forment des arbres équilibrés (toutes les feuilles sont au même niveau). Structure d ’un nœud (non-feuille) : ordre 3 Structure d ’une feuille : 35 67 95 95  k k<35 35  k < 67 67  k < 95 45 63 89 vers feuille suivante k=45 k=63 k=89

20 Contraintes : ordre n : n clés et n+1 pointeurs
au niveau de chaque feuille : au moins (n+1)/2 pointeurs vers les données (et donc même nombre de clés.. au niveau de chaque nœud non-feuille :au moins (n+1)/2 pointeurs et (n+1)/2 -1 clés. racine : au moins un pointeur et une clé (pas d’autres contraintes)

21 Recherche dans un B-arbre
But : Trouver, le plus rapidement possible, un record dont la clé de recherche K est donnée. Par induction Au niveau d ’une feuille : inspecter les clés de la feuille. Si la clé n°i est égale à K, suivre le pointeur n°i Au niveau d ’un nœud (intérieur) : Si les clés de ce nœud sont suivre le pointeur n°i+1 si Rem : - On démarre la recherche à la racine. - Nombre d ’étapes proportionnel à la profondeur (et pas au nombre de clés). -> Gain important de temps par rapport à une recherche séquentielle.

22 Insertion dans un B-arbre
Cas simple : il y a de la place pour insérer (insertion de 83). 23 7 34 62 65 83 60 89

23 Insertion dans un B-arbre
Cas plus complexe : Il n ’y a pas de place (insertion de 15 à partir de l ’exemple précédent). 89 60 23 15 7 23 7 34 62 65 83

24 Insertion dans un B-arbre
Autre exemple : insertion de 160 (à compléter). 100 120 150 180 156 179 200

25 Insertion dans un B-arbre - Algorithme
1. On cherche la feuille N où insérer la nouvelle clé. S ’il y a de la place dans cette feuille, on ajoute la clé, sinon : 2. On sépare cette feuille en deux : N et M. Puis on répartit les éléments entre les nouvelles feuilles: les (n+1)/2 plus petits restent dans N et les (n+1)/2 plus grands dans M. On doit maintenant créer un lien d’un nœud intérieur vers M. C’est la plus petite clé atteignable par M qui va servir de séparation et qui être insérée au niveau au dessus dans l’arbre. On relance la procédure récursivement.

26 Suppression dans un B-arbre
Exemple : suppression de 65 . 23 7 34 62 65 83 60 89

27 Suppression dans un B-arbre
Exemple : suppression de 10 (à compléter). 25 10 20 30 40 1 3 25 26 10 14 20 22 30 37 40 45

28 Suppression dans un B-arbre
Exemple : suppression de 32 . 26 11 21 30 40 1 3 26 29 11 13 21 23 30 32 41 54

29 Suppression dans un B-arbre - Algorithme
1. On cherche la feuille N dans laquelle la clé K se trouve puis on supprime K. 2. Si le taux d ’occupation de la feuille est toujours satisfaisant (i.e. supérieur à (n+1)/2), on arrête. Sinon : - si un des voisins M de N, possede un pointeur de plus que le minimum, alors une des clés de M (la plus grande ou la plus petite suivant le cas), est envoyé vers N. - sinon, on peut fusionner N avec un de ses voisins (la somme de leur nombre total de pointeurs ne dépassant pas n). Dans les deux cas, le ou les niveaux au dessus dans l’arbre doivent être mis à jour pour refleter la nouvelle situation.


Télécharger ppt "Implémentation des SGBD"

Présentations similaires


Annonces Google