3. La base de donnée
Nous avons choisi d’utiliser
une base de donnée Oracle avec notre moteur de recherche car :
- Oracle est optimisé pour de gros volume de données.
- Oracle offre l’utilisation de procédures stockées en pl/sql.
3.1. Modèle conceptuel
Voici le schéma conceptuel de la base de donnée utilisée
par notre moteur de recherche :
Il y a deux entités
dans le modèle conceptuel URI et MotCle qui, comme leur nom l’indique,
servent à stocker les données relatives aux URI et aux mots de
recherche.
Nous avons fait le choix d’introduire les champs id_uri et un id_mot en
tant que clef primaires des tables URI et MotCle car ces deux champs peuvent
être très volumineux. S’ils avaient été clef
primaire il y aurait pu y avoir une importante redondance d’informations
dans les tables UriMot et LinkOut.
La relation LinkOut est une relation père fils qui permet de pouvoir
dessiner un graphe du web. Enfin la relation UriMot fait le lien entre un mot
de recherche et une URI.
3.2.
Modèle physique
Le modèle conceptuel de donnée a abouti sur la base de donnée physique représentée ci-dessus.
Nous avons créer des d’index
sur les champs lib_mot de la table MotCle et lib_uri de la table URI pour accélérer
les requêtes. En effet la majorité des sélections sur les
tables MotCle et URI se font grâce à ces champs. Les index sur
les clefs primaires étant créé automatiquement par la base
de donnée Oracle il n’a pas été nécessaire
de créer explicitement ceux-ci.
Les identifiants id_uri, et id_mot sont généré par deux
séquences ce qui garanti que chaque clef primaire sera différente
des autres.
3.3. Procédures stockées
Nous avons choisis d’utiliser des procédures stockées dans
le but d’exécuter des traitements fréquemment utilisés
au niveau du noyau du SGBD plutôt que dans l’application java. De
plus la création d’une procédure stockée génère
le pseudo code qui est stocké dans la base, ce qui évite la recompilation
de la procédure à chaque appel. L’utilisation de procédures
stockées est donc plus rapide qu’une série de requête
faite à partir du module report.sql.
Les procédures stockées
utilisées par le Crawler sont :