Académique Documents
Professionnel Documents
Culture Documents
2
Introduction
➔ Les documents sont caractérisés par l’existence d’une structure, et
on parlera donc de documents structurés.
➔ Cette structure peut aller du très simple au très compliqué, ce qui
permet de représenter de manière autonome des informations
arbitrairement complexes.
3
Introduction
➔ Nous abordons une question très importante dans le cadre de la mise en
œuvre d’une grande base de données constituée de documents:
comment modéliser ces documents pour satisfaire les besoins de
l’application? Et plus précisément:
◆ quelle est la structure de ces documents?
◆ quelles sont les contraintes qui portent sur le contenu des documents?
➔ Cette question est bien connue dans le contexte des bases de données
relationnelles. Pour les bases NoSQL, il n’existe pas de méthodologie
équivalente.
◆ il n’existe pas de modèle normalisé,
◆ la modélisation doit s’adapter aux caractéristiques de chaque système.
4
Introduction
5
Rappel : Conception d’une base
relationnelle - Ce qu’il faut retenir
➔ Un objectif de normalisation qui vise à éviter à la fois toute
redondance et toute perte d’information;
◆ la redondance est évitée en découpant les données avec une granularité
fine, et en les stockant indépendamment les unes des autres;
◆ la perte d’information est évitée en utilisant un système de référencement
basé sur les clés primaires et clés étrangères.
➔ Les données sont contraintes par un schéma qui impose des règles
sur le contenu de la base
6
Rappel : Conception d’une base
relationnelle - Ce qu’il faut retenir
➔ Il n’y a aucune hiérarchie dans la représentation des entités:
une entité comme Pays, qui peut être considérée comme secondaire, a droit à sa
table dédiée, tout comme l’entité Film qui peut être considérée comme essentielle;
on ne pré-suppose pas en relationnel, l’importance respective des entités
représentées;
➔ La distribution des données dans plusieurs tables est compensée par la
capacité de SQL à effectuer des jointures qui exploitent le plus souvent le
système de référencement (clé primaire, clé étrangère) pour associer des
lignes stockées séparément.
➔ Plusieurs écritures transactionnelles peuvent être nécessaires pour créer
une seule entité.
7
Exemple 1
8
Dénormalisation du schéma
➔ Des données fréquemment interrogées conjointement.
◆ Par exemple, les requêtes demandent fréquemment le lieu d’habitation
d’une,personne. De fait, la jointure devient coûteuse.
◆ Cette information étant peu mise à jour, cela pose peu de problèmes.
◆ Résultat : l’entité ‘Habitation’ et l’association ‘habite’ sont intégrés à l’entité
Personne. Habitation devient un document imbriqué à l’intérieur de Personne,
représenté par : “{habite}”
➔ Toutes les données d’une entité sont indépendantes.
Prenons l’exemple des domaines d’expertise d’une personne, ils sont indépendants des
domaines d’une autre personne. De fait, rapatrier les données de cette entité n’impacte
aucune autre instance de Personne. Ainsi, la liste des domaines est importé dans
Personne et représenté par : “[domaines]”
9
Dénormalisation du schéma
➔ Une association avec des relations 1-n des deux côtés.
◆ C’est plus délicat pour l’entité Etablissement. Une personne peut avoir plusieurs
emplois et un employeur, plusieurs employés.
◆ Une imbrication de l’employeur dans Personne peut avoir de gros impacts sur les
mises à jour (tous les employés à mettre à jour !).
◆ Il est donc peu recommandé d’effectuer une fusion complète. Pour cela, seule
l’association est imbriquée sous forme d’une liste de documents, intégrant les attributs
(qualité et date), ainsi qu’une référence vers l’employeur. Ainsi : “[{emploie+ref}]”
➔ Même taux de mises à jour.
◆ Dans le cas des emplois d’une personne, là également nous pourrions effectuer une
fusion de l’association “emploie”.
◆ En effet, le taux de mises à jour des emplois est équivalent à celui de la Personne, de
fait, sans incidence sur les problèmes de cohérence de données. 10
Exemple 1 : Dénormalisation du
schéma
12
Exemple 2 - schéma E/A
13
Exemple 2 : schéma de la BDR
14
Exemple 2 : Modélisation par
des documents structurés
1. Proposez une modélisation par des documents structurés
permettant de stocker les données dans le base de données
MongoDB en privilégiant l'accès aux films.
2. Même question en privilégiant l'accès aux acteur
15
Exemple 2 :
document structuré
Dans une modélisation relationnelle, nous avons dû séparer
les films et les artistes dans deux tables distinctes, et lier
chaque film à son metteur en scène par une clé étrangère.
16
Exemple 2 : Avantages de la
modélidation choisie
Ce rassemblement offre des avantages forts dans une perspective de
performance pour des collections à très grande échelle.
➔ Plus besoin de jointure: il est inutile de faire des jointures pour reconstituer
l’information puisqu’elle n’est plus dispersée, comme en relationnel, dans
plusieurs tables.
➔ Plus besoin de transaction (?): une écriture (du document) suffit; pour créer
toutes les données du film « Pulp fiction » ci-dessus, il faudrait écrire 1 fois
dans la table Film, 3 fois dans la table Artiste; 3 fois dans la table Role.
➔ De même, une lecture suffit pour récupérer l’ensemble des informations.
17
Exemple 2 : Avantages de la
modélidation choisie
➔ Adaptation à la distribution. Si les documents sont autonomes, il est très
facile des les déplacer pour les répartir au mieux dans un système
distribué; l’absence de lien avec d’autres documents donne la possibilité
d’organiser librement la collection.
➔ De plus, les transactions et les jointures sont deux mécanismes assez
compliqués à mettre en œuvre dans un environnement distribué.
➔ Ne pas avoir à les implanter simplifie considérablement la création de
systèmes NoSQL, d’où la prolifération à laquelle nous assistons.
18
Exemple 2 : Inconvénients de la
modélidation choisie
En observant bien le document Film, on réalise rapidement qu’il introduit cependant deux
problèmes importants.
➔ Hiérarchisation des accès: la représentation des films et des artistes n’est pas
symétrique; les films apparaissent près de la racine des documents, les artistes sont
enfouis dans les profondeurs; l’accès aux films est donc privilégié (on ne peut pas
accéder aux artistes sans passer par eux) ce qui peut ou non convenir à l’application.
➔ Perte d’autonomie des entités. Il n’est plus possible de représenter les informations sur
un metteur en scène si on ne connaît pas au moins un film; inversement, en supprimant un
film (e.g., Pulp Fiction), on risque de supprimer définitivement les données sur un artiste
(e.g., Tarantino).
➔ Redondance: la même information doit être représentée plusieurs fois, ce qui est tout à
fait fâcheux. Quentin Tarantino est représenté deux fois, et en fait il sera représenté autant
de fois qu’il a tourné de films (ou fait l’acteur quelque part).
19
Exemple 2 : Inconvénients de la
modélidation choisie
➔ La contrepartie d’un document autonome contenant toutes les informations qui lui sont
liées est l’absence de partage de sous-parties potentiellement communes à plusieurs
documents (ici, les artistes). On aboutit donc à une redondance qui mène
immanquablement à des incohérences diverses.
➔ On privilégie, en modélisant les données comme des documents, une certaine
perspective de la base de données (ici, les films), ce qui n’est pas le cas en relationnel
où toutes les informations sont au même niveau. Avec cette représentation des films par
exemple, comment connaître tous les films tournés par Tarantino? Il n’y a pas vraiment
d’autre solution que de lire tous les documents, c’est compliqué et surtout coûteux.
Ce sont des inconvénients majeurs, qui risquent à terme de rendre la base de données
inexploitable. Il faut bien les prendre en compte avant de se lancer dans l’aventure du
NoSQL.
20
Conclusion
21