Précisions sur le traitement de requêtes réparties
- exercice vu en TD (poly ou annales juin 2002)
Réponses à diverses questions d'étudiants:
- Q1: l'exercice 3 extrait de l'examen du 13 juin 2002. J'ai trouvé une différence entre mes notes de TD et les réponses que vous donnez dans le corrigé:
- Réponse: Les différences dépendent de la façon de traiter une projection. Les 2 solutions sont correctes.
- Q2: Dans la question 4 de l'exercice 1: vous donnez 150 000 tio alors que en TD nous n'avions que 100 000 tio car nous ne prenions pas en compte la création de la relation temporaire.
- Réponse : Le corrigé suppose que la projection (sur l'attribut de jointure) crée une relation temporaire. En TD nous avons considéré qu'on peut transmettre directement la résultat de la projection vers l'autre site, sans nécessité de créer une relation temporaire.
- Q3 : dans la question 5: En TD, pour créer T1 nous nous sommes servi de l'hypothèse de départ qui est que les directeurs représentent 1% des employés, alors que dans le corrigé on ne s'en sert qu'au moment de la réduction sur le site 2.
- Réponse : Le corrigé effectue une projection sans éliminer les doubles. En TD nous avons éliminé les doubles pendant la projection (en considérant que le surcoût nécessaire pour l'élimination des doubles est négligeable).
- Q4 : Dans le plan 5 nous faisons une projection Service à Berlin: T1. Puis, envoi de la projection de Berlin à Naples et ici vous dites que la cardinalité de T1 est de 1% des employés ce qui nous donne 500 pages à transmettre. Je ne comprends pas pourquoi la cardinalité n'est que de 1% des employés.
Réponse : En TD, on projette sur l'attribut #D (directeur) de la relation Service et on elimine les doubles.
- T1 = select distinct #D from Service.
- Il y a 1% * 20M = 200K directeurs distincts. card(T1) = 200K
- La taille d'un tuple de T1 est de 10 octets. Donc le nombre de pages est :
- page(T1) = card(T1) * 10/4000 = 200K *10/4000 = 500 pages