Bonjour,


Voici un exercice que je fais pour m'entrainer sur le stockage des bases de données. Seulement je n'ai aucune correction. Voici l'énoncé suivit de mes réponses. Pouvez-vous me dire où j'ai faux, cela m'aiderait beaucoup.

On suppose qu’une taille de bloc de 1024 octets est utilisé pour stocker des enregistrements d’une taille variable. Chaque bloc contient parie entête (header) fixe de 24 octets qui contient le nombre total d’enregistrements du bloc. De plus l’entête contient un pointeur de 4 octets pour chaque enregistrements du bloc. La taille de chaque enregistrement n’est pas stockée explicitement puisque ces tailles peuvent être calculées depuis les pointeurs.

a. Combien d’enregistrements d’une taille de 50 octets peuvent être complètement (sans répartition des enregistrements, no-spanning en anglais) avec un tel type de bloc ?

b. On souhaite stocker complètement 20 enregistrements (tous de la même taille) dans un bloc. Quelle est la taille maximum des enregistrements ?

c. On considère un autre type de bloc qui est adapté à des enregistrements dont la taille est fixe. La taille d’un bloc est toujours de 1024 octets, l’entête reste également de 24 octets et stocke la taille commune des enregistrements du bloc. Combien d’enregistrements d’une taille de 50 octets peuvent être stockés dans ce type de bloc ?

d. Dans cette question, on permet les enregistrements répartis (spanning en anglais). Les enregistrements sont de taille fixe mais puisqu’il est possible d’avoir des fragments d’enregistrement, il nous faut ajouter un entête de 5 octet à chaque fragment (complet ou pas) pour stocker sa taille (et d’autres informations). Le bloc est toujours de 1024 octets et l’entête de bloc de 24 octets. On considère 2 blocs et on veut stocker 3 enregistrements de 600 octets. Le système alloue autant d’enregistrements qu’il peut dans le premier bloc et utilise ensuite l’espace du second bloc. Une fois que les 3 enregistrements ont été stockés, combien d’espace de stockage non utilisé reste-t-il dans le premier bloc ? Dans le second bloc ?
Voici mes réponses:


a) Bfr = parti inf(1024/50) = 20 enregistrements par bloc si on enlève pas l’entête. Donc :
Bloc-entête = 1024 – (24+4*20) = 920 octets
Bfr = parti inf(920/50) = 18 enregistrements

b) On a 920/t = 20
t = 920/20 = 46 octets

c) Bfr = parti inf(1000/50) = 20 enregistrements par bloc

d) Dans le premier bloc il y a 0 octet non utilisé car (bloc-entête = 1000 octets et enregistrements*3 = 1800 octets)

Dans le deuxième bloc on a donc :
2000 – 1800 – (5* nb_fragments) espace non utilisé.

Seulement je ne sais pas du tout quoi mettre pour nb_fragments.



Merci par avance pour votre aide.