WOW !! MUCH LOVE ! SO WORLD PEACE !
Fond bitcoin pour l'amélioration du site: 1memzGeKS7CB3ECNkzSn2qHwxU6NZoJ8o
  Dogecoin (tips/pourboires): DCLoo9Dd4qECqpMLurdgGnaoqbftj16Nvp


Home | Publier un mémoire | Une page au hasard

 > 

Base des données orientées-graphe: migration du relationnel vers le noSQL

( Télécharger le fichier original )
par Lubwele Kamingu
Université de Kinshasa - Licence (Bac + 5) 2014
  

Disponible en mode multipage

Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy

BASE DE DONNEES ORIENTEE-GRAPHE : MIGRATION DU RELATIONNEL VERS LE NOSQL

Mémoire présenté et défendu par

Gradi KAMINGU LUBWELE

(Gradué en Sciences)

en vue de l'obtention du Titre de Licencié en Sciences

Groupe : Informatique

Option : Informatique de Gestion

Directeur :

Pierre KAFUNDA KATALAY,

Professeur Associé, Université de Kinshasa,

Faculté des Sciences, Département de

Mathématiques et Informatique

Année académique : 2014 - 2015

Epigraphie

«Nul ne peut contester que le cosmos et ses

composantes forment un graphe.»

Gradi L.Kamingu

«N'ayez aucun style comme style,

n'ayez aucune limitation comme limitation.»

Bruce LEE

In memoriam

A ma Tante, MALOU EKAKOLA pour l'orientation efficace pour mon bien-être ; j'en suis reconnaissant de tous ses biens faits.

Gradi L.Kamingu

Remerciements

C'est pour nous un honneur et un réel plaisir de réaliser un tel travail. Son élaboration traduit, à sa juste valeur, le dévouement le plus soutenu et l'intérêt que nous lui avons accordé.

Sur ce, nous nous en voudrais si nous manquions de témoigner notre gratitude à tous ceux qui, par leur soutien tant financier, moral, intellectuel que spirituel ont contribués de près ou de loin à sa réalisation.

Nos sentiments de gratitude s'adressent de prime abord au Très haut, le Dieu Créateur de cieux et la terre, Générateur de souffle, la Bonté Absolue, l'Au-delà, l'Infini, l'Eternel, Celui qui nous fait compter parmi les vivants.

La réalisation de ce travail n'aurait pas été possible sans le soutien scientifique et la rigueur exprimée de notre directeur, le Professeur Pierre KAFUNDA KATALAY, qui malgré ses multiples occupations a accepté de diriger cet humble travail.

Nos remerciements s'adressent au Professeur Léonard MANYA NDJADI, celui qui nous a donné le goût de la théorie des graphes en particulier et la Recherche opérationnelle en général, et au Professeur Eugène MBUYI MUKENDI, qui a investi son temps pour nous donner le plaisir de travailler dans le domaine des bases de données, raison pour laquelle nous manquons même de tournure de rhétorique pour exprimer notre gratitude.

Que tous les professeurs, chefs des travaux et assistants du département des Mathématiques et Informatique trouvent ici nos sentiments de gratitude, qui nous ont transmis pendant cinq longues années les fondamentaux de la Science de l'Informaticien tout autour des mathématiques.

Plaise à Dieu de permettre que notre gratitude s'énonce à l'adresse d'Innocent KAMINGU et Lydie EKAKOLA, respectivement notre père et notre mère, à qui nous devons tout.

Nous noussentons dans le devoir de remercier Monsieur Koffi SANI, Ingénieur Concepteur en Informatique de l'Institut Africain d'Informatique à Libreville (Gabon).

Nous remercions également Glodi KAMINGU, L'or LUKELU, Pitsho EKOKOLA, Bébé EKAKOLA, Nesta KINENE, Sephora KINENE, Joëlle KINENE, Aninya NGE, Aminata AKWANI, Marguerite MUJINGA, Coen FUNDATELA, Trésor BADIBANGA, Christian NTUMBA, Patrick SHUNGU,Cédrick TOMBOLA,Jean-Paul TSASA, Moïse MBIKAYI et Josée NKIKUpour leur fraternité dont ils ont montré vis-à-vis de notre égard;

Nos reconnaissances s'adressent aussi à l'égard de Sarah BENDELO; elle qui nous a toujours inspirée et nous a offert son affection.

Nous dédions ce travail à l'avenir de Bethlehem Corp./SARL, notre chère entreprise.

Avant-propos

Le présent travail est le fruit de cinq années d'études universitaires. En plus de sa vertu de témoignage de nos cinq longues années, il nous couronne du titre de second cycle. Telle oeuvre, doit être lue avec grand intérêt, non seulement par les scientifiques, mais aussi par des professionnels.

La théorie des graphes est un domaine bien ancien des mathématiques discrètes, généralement rattachée à la Recherche opérationnelle et l'Informatique (surtout pour son importance en Algorithmique), qui trouva sa naissance par un article du mathématicien suisse Leonhard Euler, qu'il présenta à l'Académie de Saint-Pétersbourg en 1735 puis publié en 1741, qui traitait du problème des sept ponts de Königsberg. Bien qu'étant une théorie ancienne, ses applications continuent à se multiplier du jour le jour.

Nombre d'applications sont à compter aujourd'hui en informatique (réseau social, réseau informatique, réseau de télécommunications, etc.), y compris dans le domaine de base de données.

Cependant, dans le présent travail, on met en évidence une application beaucoup plus intéressante de la théorie des graphes pour représenter des données qui seront stockées sur un support physique. Ce qui fait que ce travail revêt d'un bon outil pour la présentation d'une application informatique de la théorie des graphes qui reste encore un peu assombrie dans notre pays.

Enfin, ce travail propose de doter à nos concitoyens des notions de base de base de données orientées-graphe qui est, évidemment, encore en évolution. Nous avons proposé de présenter les concepts clés liés à la notion de base de données orientées-graphes ainsi qu'une étude de cas pour une présentation matérielle des concepts théoriques.

Nous remercions d'avance tous les utilisateurs qui voudront bien nous faire parvenir leurs remarques, suggestions pour l'amélioration tant syntaxique que sémantique de cet humble travail.

Liste des abréviations utilisées

Abréviation

Signification

AGPL

Affero General Public Licence

API

Application Programming Interface

BD / BDD

Base de données

BI

Business Intelligence

DB

Database

CD

Centralité de degré

CDE

Centralité de degré entrante

CDS

Centralité de degré sortante

CI

Centralité d'intermédiarité

CIE

Centralité d'intermédiarité entrante

CIS

Centralité d'intermédiarité sortante

CODASYL

Conference on data system Language

CP

Centralité de proximité

CPE

Centralité de proximité entrante

CPS

Centralité de proximité sortante

DBTG

Data Base Task Group

EA

Entité-Association

GPL

GNU1(*) General Public Licence

HA

High availability

http

Hypertext transfer protocol

IBM

International Business Machine

IS - IS

Intermediate system to intermediate system

JDK

Java Development Kit

JVM

Java Virtual Machine

MCD

Modèle conceptuel des données

Merise

Méthode de recherche en informatique pour les systèmes d'entreprise

MPD

Modèle physique des données

NASA

National Aeronautics and Space Administration

NoSQL

Not only SQL

OLAP

Online Analytical Processing

OLTP

Online Transaction Processing

OMT

Object Modeling Technique

ORM

Object-Relational Mapping

OSPF

Open Shortest Path Protocol

SQL

Structured Query Language

SGBD

Système de gestion de base de données

SGBDR

Système de gestion de base de données relationnelle

Liste des notations

Notation

Description

(x)

Ensemble des voisins du sommet x dans G

(x)

Ensemble des successeurs du sommet x dans G

(x)

Ensemble des prédécesseurs du sommet x dans G

Ø

Ensemble-vide

X

Ensemble des sommets (noeuds)

U

Ensemble des arêtes (arcs)

N

Ensemble des entiers naturels

N*

Ensemble des entiers naturels non-nuls

R

Ensemble des nombres réels

R*

Ensemble des nombres réels non-nuls

|X| ou #X

Cardinal de l'ensemble X

 

Degré d'un sommet x

 

Demi-degré extérieur d'un sommet x

 

Demi-degré intérieur d'un sommet x

Kn

Graphe complet d'ordre n

Km,n

Graphe biparti-complet d'ordre m,n

ñ(G)

Rayon d'un graphe G

ä(G)

Diamètre d'un graphe G

In×1

Vecteur colonne de dimension n ne contenant que des 1

On×1

Vecteur colonne de dimension n ne contenant que des 0

0

INTRODUCTION

A

Ujourd'hui, les problèmes ayant trait au stockage des données sont très récurrents et sont dus généralement aux structures et à la masse des informations à stocker. Il faut alors reconnaitre que les bases de données sont un élément très important dans l'informatique moderne, car elles ont permis un bon stockage de données et de manière structurée. Ces dernières années, le modèle relationnel s'est imposé comme la norme. En effet ce dernier permet un respect des propriétés ACID (Atomicité, Consistance, Isolation, Durabilité) que nous expliquerons plus tard et garanti ainsi la sécurité des données.

Cependant, ces propriétés demandent des prérequis importants, ce qui peut impacter grandement les performances de la base. A terme cela peut se traduire par une difficulté de mise en échelle. Certaines entreprises ont donc décidé de se pencher sur une nouvelle technologie afin de pallier aux problèmes de performances, quitte à sacrifier la consistance des données comme tel est le cas dans les NoSQL.

Pour y arriver, les scientifiques ont utilisé la théorie des graphes, initiée par Euler avec son fameux problème de 7 ponts de la ville de Königsberg. Cette théorie bien qu'ancienne, a bien permis de trouver une application en Informatique qu'est la base de données orientées-graphe. Dans le souci de montrer une application importante de la théorie des graphes et de montrer la nécessité des bases de données orientées-graphes, nous avons pu choisir ce domaine encore en gestation.

On remarque aussi que la théorie des graphes est utilisée dans un grand nombre de disciplines (mathématiques, informatique, physique, économie, chimie, etc.). Les recherches actuelles en théorie des graphes sont essentiellement menées par des informaticiens, du fait de l'importance des aspects algorithmiques (structures de données). D'où la nécessité d'étudier ses applications.

Eu égard à tous ces qui précédent, il ressort le désir de savoir s'il n'y a toujours la solution des bases de données orientées-graphe qui peut résoudre les problèmes liés aux stockages de l'information. Peut-on trouver une approche pouvant nous permettre de migrer des bases de données relationnelle vers les bases de données orientées-graphe ?

C'est dans ce contexte que nous avons alors choisi le sujet intitulé Base de données orientées-graphe : Migration du relationnel vers le NoSQL.

Etant donné que la gestion de la masse de données est à la base même de l'Informatique de gestion, l'intérêt principal et nécessaire de ce sujet réside dans ces implications qui sont à la fois scientifique, théorique, pratique, personnelle et didactique. En effet, ce travail peut être vu selon plusieurs niveaux dont les principaux sont :

Ø Au niveau scientifique: ce travail permet de mieux appréhender les mécanismes et méthodes mis en oeuvre pour proposer une nouvelle approche de migration d'une base de données de type quelconque vers une autre de type différent du premier;

Ø Au niveau théorique: ce travail constitue un support intéressant explicitant brièvement et clairement les notions de base de données, de la théorie de graphes, des différents types des bases de données du type NoSQL et l'application de la théorie des graphes dans le domaine de base de données ;

Ø Au niveau pratique : ce travail montre clairement notre capacité à résoudre un problème tout en appliquant les concepts théoriques assimilés à l'université tout au long de nos études, ainsi notre habilité à résoudre un problème récurrent ;

Ø Au niveau personnel : ce travail nous a permis de passer en revue des notions encore récentes et encore moins traiter dans notre université. De plus il nous mis en confiance que la théorie des graphes n'a pas encore fini ses applications dans la science de l'informaticien ;

Ø Au niveau didactique : ce travail constitue un support beaucoup plus intéressant pour l'apprentissage de base de données NoSQL en général et les bases de données orientées-graphe en particulier.

Proposer une approche de migration d'une base de données relationnelle vers une base de données orientées-graphe, nous avons délimité notre travail dans un espace d'octobre 2015 à janvier 2016.

Nous avons alors eu recours à la technique documentaire consistant à consulter les ouvrages, les thèses, les mémoires d'études, les revues techniques et les articles traitant du domaine des bases de données orientées-graphe, de la théorie de graphe, de la théorie des réseaux sociaux, et du NoSQL. Nous avons également consulté un certain nombre de documents disponibles sur Internet.

Ainsi pour arriver à nos fins, nous avons subdivisé notre travail en quatre chapitres outre la présente introduction et la conclusion, nous avons :

Ø Le chapitre premier qui est intitulé Généralités sur les bases de données et les graphes ;

Ø Le deuxième chapitre parlant de NoSQL ;

Ø Le troisième chapitre intitulé Base de données orientées-graphe ;

Ø Enfin le troisième chapitre qui décrit l'Application.

CHAPITRE1

GENERALITES SUR LES BASES DE DONNEES

ET LES GRAPHES

D

ans ce chapitre, il ne sera question que de présenter d'une manière moins détaillée la notion de base de données orientées graphe ou tout simplement base de données graphe.

Une base de données orientées-graphe permet de résoudre donc des problèmes très difficiles, voire impossibles à résoudre dans une base de données relationnelle. Un cas pratique est dans un réseau social, si nous nous mettons à stocker les relations entre différentes personnes du réseau, les manipulations seront fastidieuses et la base serait très grosse et donc longue à parcourir pour rechercher les amis d'une personne.

Cependant, nous allons nous atteler sur les notions abstraites de base de données orientées-graphe. C'est à cette juste raison que nous allons donner une aperçu général sur les fondamentaux de base de données orientées graphe tels que la notion générale de base de données et enfin la notion de la théorie des graphes.

Pour clore ce chapitre, nous allons donner d'une manière simple l'importance de la représentation des données sous forme des graphes et son bienfondé lors des diverses manipulations.

I.1. BASE DE DONNEES

I.1.1. Définition de la base de données

Le terme Base de données est un mot créer par Charles Bachmann, originairement de l'anglais Data Base en 1960 dans un de ses livres intitulé « The Evolution of Storage Structure ».

Une base de données (son abréviation BD ou BDD ou encore DB, pour l'anglais Data Base) est un ensemble structuré des données enregistrées sur des supports accessibles par l'ordinateur, représentant des informations du monde réel, pour satisfaire un ou une communauté d'utilisateurs simultanément en un temps opportun. [MB13]

I.1.2. Critères d'une base de données

Une base de données doit répondre à plusieurs critères dont trois sont les plus importants, à savoir [MK10]:

(i) La structuration : c'est-à-dire une base de données doit avoir une structure propre à lui de façon à rendre donner la souplesse et la rapidité dans son exploitation.

(ii) Non redondance : c'est-à-dire une base de données ne doit pas avoir en son sein des informations répétitives. Ainsi, Il y a alors deux types de redondances :

§ La synonymie : c'est lorsque deux ou plusieurs objets renvoient à la même signification.

Exemple 1.1:Titre et Intitulé ; Désignation et Libellé.

§ La polysémie : c'est lorsqu'un objet renvoie a plusieurs significations.

Périphérique

Animal

Exemple 1.2 : Souris :

(iii) Exhaustivité : c'est-à-dire une base de données doit contenir toutes les informations possibles et nécessaires pouvant faire objet de répondre aux besoins des utilisateurs. Ainsi, nous parlons de la complétude.

I.1.3. Types d'utilisateurs

· L'administrateur de la base de données : Il assure la commande ou le contrôle de la base de données. Il est chargé d'assurer la sécurité de la base de données, en permettant accès aux données qu'aux applications et différents individus qui ont le droit. Il est aussi chargé de conserver des bonnes performances d'accès à ces données, d'assurer les sauvegardes de données à la base de données ;

· Le programmeur d'application : Il est chargé d'écrire des applications qui utilisent la base de données. Il crée des tables et les structures associées (vues, index,...) utilisées par ses applications.

· L'utilisateur final : N'a accès qu'aux données qui lui sont utilisés par l'intermédiaire des applications ou en interrogeant directement les tables ou vues sur lesquelles l'administrateur de base de données lui a accordé des droits.

I.4.1. Types de base de données

I.1.4.1. Base de données hiérarchique

Pour une base de données hiérarchique, les données sont mises sous forme d'une structure d'arborescence de la manière suivante :

· Les enregistrements sont mis dans les noeuds de l'arborescence en notant que chaque noeud n'a qu'un seul possesseur. Chaque noeud représente une classe d'entité du monde réel, Chaque noeud peut avoir un ou plusieurs pointeurs déterminant le chemin d'accès. Les noeuds n'ayant pas de pointeur sont des feuillets ;

· Les arcs représentent le lien existant entre enregistrements. Ce lien est défini par un pointeur qui pointe sur le noeud suivant.

Les structures de données hiérarchiques ont été largement utilisées dans les premières bases de données conçues pour la gestion de données du programme Appolo de NASA.

Il sied de noter que les bases de données hiérarchiques possèdent des limites considérables que leur utilisation est en voie de disparition actuellement.

La représentation du modèle peut se faire de la manière suivante :

Figure 1.1. Représentation des données du type hiérarchique

I.1.4.2. Base de données réseau

La base de données est juste une généralisation de la base de données hiérarchique en levant certaines incapacités très délicates des bases de données dites hiérarchiques. En effet, dans ces bases de données, il y a possibilité d'avoir la relation du genre un noeud peut avoir plusieurs possesseurs. En termes simples, on peut dire que dans ces types de base de données, « une fille à plusieurs mères ».

Ainsi, comme le modèle hiérarchique, ce modèle est conçu avec des pointeurs déterminant le chemin d'accès au (x) noeud(x) suivant(x).

Le modèle fut mis initialement proposé par le groupe nommé DBTG du comité CODASYL fut alors mis au point par Charles Bachmann. Ce qui lui value le prix Turing en 1973. Donc, ce modèle se conforme aux normes fixées par le groupe CODASYL (Conference On Data System Languages) en 1971.

On peut représenter ce modèle de la manière suivante :

Figure 1.2. Représentation des données du type réseau

I.4.1.3. Base de données relationnelle

La base de données relationnelle est alors structurée sur les principes de l'Algèbre relationnelle, une théorie inspiré de la théorie des ensembles et la logique de prédicats du premier ordre. La théorie de l'Algèbre relationnelle fut alors inventée par le mathématicien Edgar Frank Codd.

En 1970, Edgar Frank Codd (1923 - 2003), programmeur d'applications mathématiques chez IBM, proposa dans une thèse de Mathématiques d'utiliser les tables pour représenter les enregistrements au lieu d'utiliser les noeuds du graphe comme le faisaient la base de données hiérarchiques et la base de données réseaux. Ces informations utilisent maintenant le formalisme entité-association pour être modélisées.

Mais IBM, qui travaillait avec un autre type de modèle de base de données n'y prêta pas attention si vite. Il a fallu qu'on attende jusqu'en 1978 lorsque le concept intéressa Lawrence Ellison, le fondateur d'une Startup qui est devenue Oracle Corporation.

...

...

...

...

...

...

...

...

...

 
 
 

...

...

...

Tableau 1.1. Représentation du modèle relationnel

I.4.1.4. Base de données orientées-objet

La base de données orientées-objet utilise donc une notion fondamentale qu'est l'objet au sens de la Programmation orientée-objet.

Selon ce type de modèle de données, une base de données est un lot d'objets de différentes classes, chaque objet possède des propriétés : des caractéristiques propres, et des méthodes qui sont des opérations en rapport avec l'objet, une classe est une catégorie d'objets et reflète typiquement un sujet concret.

Figure 1.3. Représentation des données du type objet

I.1.4.5. Base de données orientées-colonne

Une base de données orientées-colonne est un type de base de données qui ne diffère pas architecturalement avec des bases des données relationnelles. La grande différence entre les deux types de bases de données est la façon d'agencer les informations dans la mémoire.

En effet, dans une base de données relationnelle, les informations sont stockées en ligne tandis que dans une base de données orientées-colonne, les informations sont stockées en colonne. De ce fait, lorsqu'il s'agit de faire une requête portant sur peu de lignes mais beaucoup de colonnes, le système de base de données relationnelle sera rapide tandis que lorsqu'il s'agit de faire une requête portant sur peu de colonnes mais beaucoup de lignes, le système de base de données orientées-colonne sera rapide.

I.1.4.6. Base de données orientées-graphe

Les bases de données orientées-graphe sont celles qui stockent les enregistrements dans les noeuds et les relations entre les enregistrements par les arêtes. Elles sont modélisées à l'aide de la théorie des graphes qu'on verra dans le paragraphe II.6.

C'est ainsi, une base de données orientées-graphe stocke les informations d'une manière très optimisée sous forme de graphe. Les liens entre différentes informations sont aussi faits de manière optimisée.

Ce type de base de données est très performant surtout dans des domaines où les données sont très nombreuses. Il est accès sur les données (entités2(*)) pendant que la plupart des types de bases de données sont axés sur les modèles (types-entités) ce qui fait que trouver les relations d'une entité est très rapide.

I.1.4.7. Base de données orientées-clé-valeur

Les bases de données orientées-clé-valeur permettent de stocker une valeur, cette valeur peut être de tout type (entier, chaine de caractères, flux binaire, etc.). En revanche les requêtes ne portent que sur la clé associée à cette valeur. Ce système de base de données est conçu pour être très fortement répliqué de manière à augmenter la disponibilité et les performances. La réplication de données est plus ou moins partielle pour trouver un bon compromis entre nombre de serveurs, disponibilité et espace disque.

I.1.4.8. Base de données orientées-document

Les bases de données orientées-document sont une extension des bases orientées clé-valeur, à la place de stocker une valeur, nous stockons un document. Un document peut contenir plusieurs valeurs et d'autres documents, qui peuvent à leur tour en contenir d'autres et ainsi de suite. Un document peut donc posséder plusieurs niveaux de profondeur. Tous les documents de niveau 0 sont identifiés par une clé et sont regroupés dans une collection.

Ce système est capable de faire des recherches sur les valeurs d'un ou plusieurs documents, le système étant partiellement répliqué, la requête va être envoyée à tous les serveurs simultanément et chacun va effectuer celle-ci et rendre des résultats différents, car toutes les données ne sont pas présentes sur tous les serveurs, ces résultats vont être ré-agrégés pour former le résultat finale à la requête.

Nota :

Les quatre derniers types de base de données sont dits du type NoSQL (Not Only SQL). Ces types de bases de données NoSQL permettent de rendre le système beaucoup plus performant et résistants aux pannes, en revanche comme celles-ci ne permettent pas de cohérence des données, elles ne sont que très rarement utilisées seule : une base de données relationnelle va contenir les informations où une cohérence est vitale et une base de données de type NoSQL va contenir tout le reste.

Les bases de données de type NoSQL n'ont pas encore des normes définissant une architecture type ; cela se justifie par le fait que les bases de données NoSQL sont des types de bases de données très récentes dont l'évolution est encore en cours.

I.2. GRAPHES

I.2.1. Définition d'un graphe

On appelle graphe G le couple (X, U) où :

· X est un ensemble non vide et au plus dénombrable dont les éléments sont appelés sommets) ou  noeuds.

· U est une famille d'éléments du produit cartésien X×X={(x,y)|x, y X} dont les éléments sont appelés arcs ou arêtes. Ces éléments représentent des liaisons entre sommets du graphe.

En terminologie des graphes,

· On appellera arc une liaison orientée d'un sommet x vers un autre sommet y. On dit que y est un successeur de x s'il existe un arc (x,y); on dit aussi que x est un prédécesseur de y, c'est-à-dire x est un extrémité initiale et y est un extrémité terminale (finale). On appellera y voisin de x dans le graphe G=(X, U) s'il est soit un successeur, soit un prédécesseur de x.

Nota : Dans la vie pratique, on peut interpréter extrémité terminale par « descendant », « fils ou fille», « origine », « ... » et on peut interpréterextrémité initiale par « ascendant », « père ou mère », « cible », « ... ».

· On appellera arête une liaison non-orientée d'un sommet x et un autre sommet y. Dans ce cas x et y sont des extrémités.

Nota : Dans la vie pratique, on l'interprète une extrémité par « un noeud » ou un « bout ».

On notera alors :

· (x) = L'ensemble des successeurs du sommet x dans G

· (x) = L'ensemble des prédécesseurs du sommet x dans G

· (x) = L'ensemble des voisins du sommet x dans G

Ainsi, (x) = (x) + (x)

Un sommet x dans est un sommet isolé ssi c'est-à-dire si et seulement si le sommet x n'a pas de voisin c'est-à-dire qui n'a ni successeur, ni prédécesseur. (1)

b

a

d

e

f

c

u7

u2

u5

u6

u1

u4

u8

u3

Figure 1.4 : Représentation sagittale d'un graphe

Exemple 1.3 : Soit le graphe G

Dans cet exemple, on a la représentation sagittale d'un graphe d'ordre 6.

X = {a, b, c, d, e, f} 

U = {u1, u2, u3, u4, u5, u6, u7, u8}

Si le cardinal de U est égal à a (|U|=#U=a), alors on dit que le graphe G = (X, U) est de taille a. Dès lors nous considérons U I N est fini. L'exemple 1.3 est de taille a=8, car il y a 8 arcs.

Si le cardinal de X est égal à n (|X|=#X=n), alors on dit que le graphe G = (X, U) est d'ordre n. Dès lors nous considérons X J N est fini. L'exemple 1.3 est d'ordre n=6, car il y a 5 sommets.

L'arc u7 est une boucle parce que l'extrémité initiale coïncide avec l'extrémité terminale.

L'arc u3 et l'arc u8 sont de la même forme, car ils ont même extrémité initiale et même extrémité finale. On dira que G (de l'exemple 1.3) est un 2-graphe d'ordre 6.

Ainsi, un p-graphe d'ordre n est un graphe d'ordre n dont le maximum d'arcs de même est le naturel p.

Un graphe simple est un 1-graphe sans boucle. En d'autres termes, un graphe est dit simple s'il n'y a ni boucle, ni d'arcs de même forme.

Dans un graphe simple, on pourra donc noter un arc à l'aide de ses extrémités initiale et finale.

Un multigraphe est un p-graphe (avec p>1) sans boucle.

Deux arcs sont dits adjacents s'ils ont une extrémité en commun.

Deux sommets sont dits adjacents si un arc les relie. 

Le demi-degré extérieur d'un sommet x (noté dG+(x)) est égal au nombre d'arcs qui « partent » de x.

Le demi-degré intérieur d'un sommet x (noté dG-(x)) est égal au nombre d'arcs qui « arrivent » en x.

Le degré du sommet x (noté dG(x)) est égal à la somme des demi-degrés, c'est-à-dire :

+

En particulier :

· Si = 0, on dit que le sommet est isolé ; (2)

· Si = 1, on dit que le sommet est pendant.

Remarque : Les propositions (1) et (2) sont équivalentes.

Lemme 1.1 : Lemme de poigné de main

Soit G = (X, U) un graphe sans boucle, alors :

Où n le nombre des sommets et a le nombre d'arêtes.

Exemple 1.4 : Soit le graphe G

b

a

d

e

f

c

u2

u5

u6

u1

u4

u3

Figure 1.5 : Représentation sagittale d'un graphe simple

On notera que rien n'interdit la présence dans le graphe de l'arc (e,f) et (f,e).

· d est un sommet isolé parce qu'il n'est ni extrémité initiale, ni extrémité terminale d'aucun arc ;

· a et b sont adjacents ;

· l'arc 4 est incident à f ;

· b et e sont des prédécesseurs de f ;

· b et e sont des successeurs de a ;

· le demi-degré extérieur de e dG+(e)= 1 ;

· le demi-degré intérieur de e dG-(e)= 2 ;

· le degré de e dG(e) = 3.

· (Lemme de poignée de main)

I.2.2. Graphe complet

Un graphe est dit complet si tous ses sommets sont reliés et par conséquent ils sont tous de même degré.

On parle aussi de clique pour un graphe complet. Ainsi, un graphe complet d'ordre n est appelé n-clique, on note généralement Kn, c'est-à-dire un graphe complet d'ordre n est appelé n-clique.

Quand un graphe n'est pas complet, et que l'ensemble de sommets peut être partitionné en cliques :

On notera ù le nombre maximal de sommets d'une clique sous-graphe.

On notera è le nombre minimal de cliques nécessaires pour partitionner l'ensemble des sommets du graphe.

Exemple 1.5 : Soit le graphe K5

Figure 1.6 : Représentation sagittale d'un graphe complet

I.2.3. Graphe biparti

Un graphe est dit biparti si l'ensemble de sommets peut être partitionné en deux classes de sorte que les sommets d'une même classe ne soient jamais adjacents.

Les graphes de fonctions, applications, bijections sont des graphes bipartis

On définit aussi des graphes bipartis complets, notés Km,n

a

b

c

d

e

f

Exemple 1.6 : Soit le graphe K3,3

Figure 1.7 : Représentation sagittale d'un graphe biparti

On appelle sous-graphe engendré par A (partie de X) le graphe obtenu en ne conservant que les sommets de A et les arcs les reliant.   

On appelle graphe partiel un graphe obtenu en supprimant un nombre quelconque d'arcs au graphe initial.

 

On appelle chaîne une succession d'arcs dont l'extrémité chaque arc intermédiaire a une extrémité en commun avec l'arc précédent l'autre extrémité en commun avec l'arc suivant.

Une chaîne ne rencontrant pas deux fois le même sommet est dite élémentaire.

Une chaîne ne rencontrant pas deux fois le même arc est dite simple.

 

On appelle chemin une succession d'arcs dont l'extrémité terminale coïncide avec l'extrémité initiale de son suivant à l'exception du dernier i.e. un chemin est une chaîne « bien orientée », car tous les arcs de la chaîne sont parcourus dans le bon sens. 

On appelle cycle une chaîne simple qui rentre dans son extrémité de départ. 

On appelle circuit un cycle « bien orienté », à la fois cycle et chemin.

b

a

d

e

f

c

u6

u2

u5

u1

u4

u3

u7

Exemple 1.7 : Soit le graphe G

Figure 1.8 : Graphe ayant une chaine, un chemin, un circuit et un cycle

· (u1, u4, u5) est une chaîne dont les arcs 1 et 4 sont directs et 5 inverse

· (u7, u2, u1, u4) est un chemin : tous les arcs sont parcourus dans le bon sens.

· (u1, u4, u5, u2) est un cycle, les extrémités « libres » des arcs 1 et 2 sont égales; (a,b) puis (b,f) puis (e,f) puis (e,a).

· (u6, u7, u2) est un circuit.

On appelle chaîne eulérienne une chaîne qui passe une et une seule fois par toutes les arêtes du graphe. 

On appelle chaîne hamiltonnienne une chaîne qui passe une et une seule fois par tous les sommets du graphe.

On peut bien évidemment étendre les deux notions précédentes aux chemins, cycles, circuits.

Ainsi, en particulier,

· Le problème consistant à passer, d'une manière minimale, par tous les sommets du graphe une et une seule fois en revenant au sommet du départ s'appelle problème du voyageur de commerce.

· Le problème consistant à parcourir, d'une manière minimale, tous les arcs du graphe une et une seule fois en revenant au sommet du départ s'appelle problème du postier chinois.

I.2.4. Connexité

Un graphe sera dit connexe si, pour tout couple (x, y) de sommets, il existe une chaîne reliant deux de ses sommets x et y.

a

d

e

f

c

b

u1

u2

u4

u5

u6

u3

Exemple 1.8 : Soit le graphe G

Figure 1.9 : Graphe non connexe

· Ce graphe n'est pas connexe car le sommet d est isolé

 

Si un graphe n'est pas connexe, on appellera composante connexe, chacun de ses « morceaux » connexes.

Plus formellement :

 

On définit une relation entre les sommets de la manière suivante :

x R y si et seulement si x=y ou x et y sont reliés par une chaîne.

On démontre aisément que cette relation R est réflexive, symétrique et transitive, donc que c'est une relation d'équivalence.

Qui dit « relation d'équivalence », dit « classes d'équivalence ». On appellera ces classes des composantes connexes.

Nota : Lorsqu'il s'agit d'un graphe orienté, on parle de la forte connexité.

On notera en général : p, le nombre de composantes connexes d'un graphe.

On peut s'intéresser au nombre de sommets à supprimer pour « disconnecter » un graphe connexe (i.e. faire qu'il ne soit plus connexe).

Remarque : Quand on enlève un sommet, on supprime aussi tous les arcs dont ce sommet est extrémité.

 

Le nombre minimum de sommets pour ce faire sera noté ê, on l'appellera la connectivité du graphe.

On qualifiera d'ensemble d'articulation, un ensemble de sommets dont la suppression disconnecte le graphe.

La connectivité est donc le cardinal minimal d'un ensemble d'articulation.

Remarque :

Une connectivité égale à k signifie qu'on peut trouver k sommets dont la suppression disconnecte le graphe, cela ne veut pas dire que ce sera le cas avec k sommets quelconques.

Exemple 1.9 :

Figure 1.11 : Graphe connexe

· Ce graphe est connexe.

· Quel que soit le sommet qu'on retire, il reste connexe.

· Si on retire b et d, le graphe est toujours connexe.

· Si on retire c et d le graphe n'est plus connexe.

· Le Graphe est donc 2-connexe.

· {c,d} est un ensemble d'articulation du graphe.

Remarque : Si un graphe est 3-connexe, il est 2-connexe.

 

Un point d'articulation est un sommet dont la suppression disconnecte le graphe, c'est-à-dire un sommet sont la suppression augmente la connexité du graphe.

Un isthme est une arête dont la suppression disconnecte le graphe, c'est-à-dire une arête sont la suppression augmente la connexité du graphe. On parle aussi de pont en lieu et place d'isthme. Ainsi, les extrémités d'un pont dont appelé pieds du pont.

Exemple 1.10 :

Figure 1.11 : Graphe ayant deux points d'articulations et un isthme

· Ce graphe est connexe ;

· Il possède deux points d'articulation ;

· L'arc central est un isthme (pont) ;

· Les deux points d'articulation sont les pieds du pont ;

· Il n'y a aucun autre isthme.

Soit G=(X, U) un graphe. On dit que ce graphe est k-sommet-connexe s'il reste encore connexe après avoir en ôté (k-1) sommets.

Soit G=(X, U) un graphe. On dit que ce graphe est k-arête-connexe s'il est possible de le déconnecter (augmenter le nombre de connexité) en supprimant k arêtes et tel que k est minimal.

N.B : Un graphe régulier de degré r est au plus r-arête-connexe, r-sommet-connexe et r-régulier. S'il est effectivement r-arête-connexe, r-sommet-connexe, il est donc optimalement connecté.

I.2.5. Distances

La distance entre deux sommets d'un graphe connexe (ou entre 2 sommets d'une même composante connexe d'un graphe non connexe) est le nombre minimum d'arcs (on dit aussi la longueur) d'une chaîne allant de l'un à l'autre.

Dans l'exemple 1.9 la distance de a à f est de 2 : on peut aller de a à f en 2 arcs, mais pas en 1 arc.

L'écartement d'un sommet est la distance maximale existant entre ce sommet et les autres sommets du graphe. (Si le graphe n'est pas connexe, l'écartement est infini).

Dans l'exemple 1.9, l'écartement de a est de 2, comme d'ailleurs pour tous les autres sommets, sauf d dont l'écartement vaut 1.

On appelle centre d'un graphe, le sommet d'écartement minimal.  (Le centre n'est pas nécessairement unique).Par exemple, dans une clique, tous les sommets sont « centres »

 

On appelle rayon d'un graphe G, noté ñ(G), l'écartement d'un centre de G. Le rayon est de 1 dans l'exemple 1.9. d est le seul centre de ce graphe.

On appelle diamètre d'un graphe G, noté ä(G), la distance maximale entre deux sommets du graphe G. Le diamètre est de 2 dans l'exemple 1.11.

Exemple 1.11 :

Figure 1.11 : Représentation sagittale d'un graphe illustrant la notion de distance

1.2.6. Graphe planaire

Un Graphe sera dit planaire s'il admet une représentation sagittale planaire, c'est à dire une représentation dans le plan où les sommets du graphe sont des points du plan et les arcs des courbes simples ne se rencontrant qu'en un sommet.

Remarque : Pour qu'un graphe soit planaire, il faut qu'il admette au moins une représentation planaire.

Exemple 1.12 :

Figure 1.12 : Graphe planaire

K4 est-il planaire ?

Si on se fonde sur sa représentation sagittale classique ci-contre, il semblerait que non.

Pourtant, on pourrait représenter le graphe autrement, en faisant passer l'arc 2,4 par l'extérieur, on aurait alors une représentation planaire.

 

K4 est donc bien un graphe planaire.

Dans la représentation planaire d'un graphe, on appellera face toute région du plan non traversée par des arcs.

Dans l'exemple 1.12, il y a 6 faces (n'oubliez pas la face infinie), 12 sommets et 16 arcs.

Exemple 1.13 :

6

Figure 1.13 : Faces d'un graphe planaire

Propriété 1.1 (Formule d'Euler): Dans un graphe planaire d'ordre n avec m arcs, on a: 

f = a - n + 2.

 

Démonstration : par récurrence sur a,
C'est vrai pour le graphe contenant 2 sommets et un arc : f=1, n=2, a=1 d'où :

f-a+n= 2 

Quand on rajoute un arc, deux cas de figure peuvent se présenter : soit on rajoute un sommet dans une face et le nombre de faces ne change pas; soit on ne rajoute pas de sommet, l'arc ajouté arrive donc sur un sommet déjà existant, mais alors, on a coupé une face en 2, donc ajouter une face.

Dans tous les cas, le nombre f-a+n ne varie pas, reste donc égal à2.

Propriété 1.2 : K5 n'est pas planaire

Démonstration : S'il était planaire, sa représentation planaire comporterait (d'après la Formule d'Euler) 10-5+2 = 7 faces.
Or, il faut au moins 3 arcs pour fermer une face et un arc pouvant servir de frontière à 2 faces, avec 10 arcs, il ne peut y avoir plus de 20/3 faces, d'où une contradiction.

Propriété 1.3 : K3,3 n'est pas planaire

 

Démonstration : S'il était planaire, sa représentation planaire comporterait (d'après la Formule d'Euler) 9-6+2 = 5 faces.
Or, il faut au moins 4 arcs (dans le cas d'un graphe biparti, on ne peut pas fermer une face avec un nombre impair d'arcs!) pour fermer une face et un arc pouvant servir de frontière à 2 faces, avec 9 arcs, il ne peut y avoir plus de 18/4 faces, d'où une contradiction.

Nota : Il existe une réciproque à ces deux propriétés, connue sous le nom de Théorème de Kuratowski, dont la démonstration est assez difficile.

Propriété 1.4 (Théorème de Kuratowski) :

Les seuls graphes non planaires sont ceux admettant Kou K3,3 comme sous-graphes.

I.2.7. Graphe pondéré - Réseau - Réseau de transport

a. Graphe pondéré

Soit G = (X, U) :

· On dit que G est pondéré à tout arc (xi, xj) U, si on associe le nombre cij R ;

· La matrice C=(cij) (i, j) U est appelé matrice de pondération.

· On note alors le triplet G=(X, U, C) le graphe pondéré.

A savoir que la pondération ou la valeur c (xi, xj) est une valeur résultant d'une mesure. Cette mesure peut être :

· Une distance du sommet xi au sommet x;

· Un coût sur l'arc (xi, xj) ;

· Une pénalité, par exemple : Paiement associé à l'arc (xi, xj) ;

· Une probabilité de transition du sommet xi au sommet x;

· Une durée (temps) entre xi et x;

· Une consommation (de carburant, etc.) à effectuer du xi au sommet x;

· Etc.

Exemple 1.14 : Soit le graphe G=(X, U, C).

Le graphe ci-contre est pondéré dans la mesure où, de chaque, on a associé une valeur numérique quelconque.

a

-5

c

5

19

e

13

d

2

3

b

1

1

g

-2

3

f

9

2

Figure 1.14 : Illustration d'un graphe pondéré

b. Réseau

Un réseau est un graphe pondéré sans boucle. Pour ce faire, on note

R=(X, U,?) un graphe pondéré sans boucle ni circuit à valeur négative.

c. Réseau de transport

(i) R=(X, U,?) est un réseau de transport si et seulement si c'est un graphe pondéré sans boucle ni circuit à valeur négative et c (xi,xj) = 0, (xi,xj) U.

(ii) R=(X, U,?) est un réseau de transport si et seulement si c'est un graphe pondéré sans boucle ni circuit à valeur négative et c (xi,xj) = 0, xi,xj X.

NOTA : La définition (i) et (ii) sont équivalentes ;

I.2.8. Problème de Cheminement optimale

a. Valeur d'un chemin

Soit G=(X,U) un graphe. Si à chaque arc (xi,xj) U, on associe le nombre le nombre cij R*, tel que cij = valeur (xi,xj) = c (xi,xj).

Considérons la loi de composition interne binaire + dans R*. On appelle valeur d'un chemin (xi1, xi2, ..., xik), le nombre noté « l », tel que :

l = ci1, ci2 + ci2, ci3 + ... + cik - 1, cik

Exemple 1.15 : Considérons le graphe suivant :

b

a

c

e

f

d

z

5

2

10

30

40

90

100

6

11

8

7

11

Figure 1.15 : Graphe pondéré

On a : cab=c(a,b)=5 ; cbd=c(b,d)=8 ; cdc=c(d,c)=4 ; cce=c(c,e)=3

l (a, b, d, c, e) = 20  

Remarque 

S'il existe un chemin qui correspond à la plus grande (ou petite) valeur de l, on l'appelle « plus long (ou court) chemin » du graphe.

b. Types d'algorithmes de cheminement optimal

Il existe deux types de cheminement optimal, se basant toutes sur le principe d'optimalité de Richards Bellman. On cite :

· Les algorithmes constructeurs d'arbre (Tree builder) qui consistent à construire l'arbre à valeur optimale entre la racine (source) et les autres noeuds du réseau ;

· Les algorithmes matriciels qui consistent à trouver le chemin à valeur optimale entre tous les couples de sommet (xi,xj) U.

Dans ce travail, on s'intéressera qu'à un algorithme Tree builder de plus court chemin, appelé Algorithme de Dijkstra, car c'est cet algorithme qui est utilisé dans l'implémentation des bases de données orientées-graphe.

c. Algorithme de Dijkstra (pour le plus court chemin)

c.1. Origine

Cet algorithme est dû aux recherches de l'Informaticien et Mathématicien néerlandais (alors qu'il était diplômé en Physique théorique, mais trop intéressé à l'Informatique notamment le Système d'exploitation et les principes de programmation) appelé Edsger Dijkstra. Cet algorithme fut publié en 1959.

Cet algorithme est plus utilisé dans le calcul des itinéraires routiers. Une autre application les plus courantes de cet algorithme est le protocole Open Shortest Path Fist (OSPF) qui est utilisé pour le routage internet ; il permet des informations. Les routeurs tels que IS-IS sont implémentés en algorithme de Dijkstra. [Wiki1]

c.2. Principe

L'algorithme de Dijkstra s'appuie directement sur le principe d'optimalité de Richards Bellman selon lequel : « dans un graphe, tout chemin optimal comprenant au plus r arcs est formé des sous-chemins contenant au plus k arcs (k=r) et qui sont eux aussi optimaux entre leurs sommets extrémités ».

Algorithme 1.1

1. (Numérotation)

Numéroter les sommets du graphe dans un ordre quelconque, en observant toutefois que le sommet de départ doit être marqué x0 et celui d'arrivé xn-1 si n est le nombre total de sommets du graphe.

2. (Initialisation)

Pour tout sommet xi (i?0)

On affecte provisoirement à tous les xi une étiquette de poids (xi)

une valeur 8, c'est-à-dire :

poids (xi) 8

Fin pour

3. poids (x0) 0

4. S X

5. Tant que ð?S

Choisir un sommet xj ð / poids (xj) = poids (xj)

ð ð { xj }

Pour tout voisin xj de xi de ð

Sipoids (xj) + v (xi,xj) < poids (xj) Alors

Mémoriser en xj que l'on vient de xi

Fin si

Fin pour

Fin tant que

6. Fin

1.2.9. Calcul de centralité [CH10]

Un réseau social est un ensemble d'individus ou d'organisations reliés par des interactions sociales régulières. Un domaine scientifique nommé analyse des réseaux sociaux, les étudie en se basant sur la théorie des graphes et l'analyse sociologique.Le calcul de centralité est depuis plusieurs décennies une problématique importante dans le domaine de l'analyse des réseaux sociaux [WF94]. Le calcul de centralité est une notion qui a été mise en oeuvre pour rendre compte de la popularité ou la visibilité d'un acteur (noeud) au sein d'un groupe (graphe). Cette notion représente l'une des contributions les plus importantes dans le domaine de l'analyse de réseaux sociaux. Ces contributions sont traitées dans l'article « Centrality in social networks: Conceptual clarification [FR79]. Dans son article, Freeman propose trois définitions formelles du concept de centralité que nous présentons ci-dessous.

Dans le but de quantifier cette notion d'importance d'un noeud dans un graphe, les chercheurs ont proposé plusieurs définitions connues sous le nom de mesures de centralité. En effet, l'identification des noeuds centraux dans un graphe représente un enjeu important dans plusieurs domaines. Prenons le cas des réseaux de communication ; le fait de connaitre les noeuds importants permet d'adopter des stratégies afin de mieux protéger ces noeuds qui jouent un rôle essentiel dans la communication au sein du réseau. Considérons à titre d'exemple le réseau de communication de la figure 1.16.

Figure 1.16 : Exemple d'un réseau de communication

On remarque que si le noeud B tombe en panne, la communication entre les différents noeuds ne sera pas affectée. Par contre, si le noeud A (point d'articulation du graphe) tombe en panne, cela engendrerait un grand problème de communication puisque tous les noeuds se retrouveront isoles.

Lors de l'étude de la notion de centralité, il est important de distinguer le cas des graphes orientés du cas des graphes non-orientés. Dans les graphes orientés, les noeuds possèdent deux types de liens, à savoir des liens entrants et des liens sortants. Pour une définition donnée de la notion de centralité, chaque noeud aura alors deux mesures d'importance : une mesure relative à ses liens sortants, appelée mesure de centralité, d'influence, d'hubité ou de centralité sortante, et une autre mesure relative à ses liens entrants, appelée mesure de prestige, de popularité, d'autorité ou de centralité entrante. Dans un graphe non-orienté, chaque noeud possède un seul type de liens ou de relations avec les autres noeuds. Chaque noeud possède alors une seule mesure d'importance (correspondant à une définition précise) appelée mesure de centralité [WF94].

Dans la suite de ce chapitre, nous décrivons quelques mesures de centralité dans les graphes orientés et non-orientés. Nous commençons par rappeler les principales mesures proposées dans le domaine de l'analyse des réseaux sociaux (qui sont des applications très rependue des bases de données graphe). Celles-ci incluent les centralités de degré, d'intermédiarité ainsi que de proximité.

a. Centralité de degré

La centralité de degré [FR79] représente la forme la plus simple et la plus intuitive de la notion de centralité. Elle est basée sur l'idée qu'un noeud (individu) occupe une place importante dans un graphe (groupe) s'il est à plus des voisins (s'il a plusieurs personnes qu'il connait ou interagit directement). Cela consiste alors à calculer le nombre de ses sommets voisins, ou de manière équivalente, à calculer le nombre de liens qui lui sont incidents qu'on appelle évidemment degré du noeud, d'où l'appellation de centralité de degré.

Soit G = (X, U) un graphe d'ordre n représente par sa matrice d'incidence sommets-sommets de A. Dans le cas où le graphe G est non-orienté, la centralité de degré d'un noeud xi? X est définie par :

En notation matricielle, le vecteur de la centralité de degré est donne par :

est un vecteur-colonne de dimension n necontenant des que 1.

Au lieu d'utiliser la matrice d'adjacence A (qu'on appelle aussi matrice d'incidence sommet-sommet), on peut aussi utiliser la matrice de degrés D.

Ce qui implique que le vecteur calcul de centralité de degré en notation matricielle peut s'écrire :

Dans le cas où le graphe G est orienté, chaque noeud xi?X possède alors deux mesures de centralité de degré : une par rapport aux arcs incidents extérieurement et une par rapport aux arcs incidents extérieurement.

Elles sont définies respectivement par :

En termes de matrices, les vecteurs de centralité de degré sortant et de degré entrant sont donnés respectivement par :

Les figures 1.17 et 1.18 indiquent respectivement la centralité de degré pour les noeuds graphes G1 et G2. Les résultats fournis par cette analyse de la centralité de degré montrent que les noeuds A et F, ayant quatre liens chacun, sont les plus importants dans le graphe G1. Pour le graphe G2, les noeuds A, B et C possèdent la plus forte centralité par rapport aux liens sortants, tandis que le noeud D possède la plus forte centralité par rapport aux liens entrants.

La centralité de degré est aussi appelée mesure de centralité locale car elle ne prend pas en compte la structure globale du graphe et n'est calculée qu'à partir du voisinage immédiat d'un sommet. Bien qu'elle soit pertinente dans certaines situations, la centralité de degré s'avère être peu informative dans d'autres cas, comme par exemple pour l'analyse des graphes de pages web. Les mesures que nous présentons dans la suite sont toutes des mesures de centralité globales.

Figure 1.17 : Centralité de degré (CD) pour les noeuds du graphe G1

Figure 1.18 : Centralité de proximité entrante (CDE) et sortante (CDS) pour les noeuds du graphe G2

Source : [CH10]

b. Centralité de proximité

La centralité de proximité [FR79] est une mesure de centralité globale basée sur l'intuition qu'un noeud occupe une position stratégique (ou importante) dans un graphe s'il est globalement proche des autres noeuds de ce graphe. Par exemple dans un réseau social, cette mesure correspond à l'idée qu'un acteur est important s'il est capable de contacter facilement un grand nombre d'acteurs avec un minimum d'effort (l'effort ici est relatif à la taille des chemins). En pratique, la centralité de proximité d'un noeud est obtenue en calculant sa proximité moyenne vis-à-vis des autres noeuds du graphe.

Soit G = (X, U) un graphe (orienté ou non) d'ordre n représente par sa matrice d'adjacence A. Dans le cas où le graphe G est non-orienté, la centralité de proximité d'un noeud xi? X est définie par :

est la distance entre les deux sommets et

Dans le cas où le graphe G est orienté, chaque noeud xi? X possède alors deux mesures de centralité de proximité : une par rapport aux liens sortants et une par rapport aux liens entrants. Elles sont définies respectivement par :

est la distance entre les deux sommets et

Pour le calcul des distances entre sommets, plusieurs métriques peuvent être utilisées. Freeman propose par exemple d'utiliser la distance géodésique entre les noeuds. D'autres mesures de distance telle que la distance euclidienne peuvent également être utilisées pour le calcul de la centralité de proximité.

Les figures 1.19 et 1.20 indiquent respectivement la centralité de proximité (de Freeman) pour les noeuds des graphes G1 et G2.

Figure 1.19 : Centralité de proximité (CP) pour les noeuds du graphe G1

Figure 1.20 : Centralité de proximité entrante (CPE) et sortante (CPS) pour les noeuds du graphe G2

Source : [CH10]

Remarque : La centralité d'intermédiarité a pour inconvénients de ne pas fournir des bons résultats lorsque le graphe n'est pas connexe. Il n'est par conséquent pas possible de calculer la centralité de proximité puisque les distances géodésiques entre certains noeuds sont indéfinies, c'est-à-dire elles ont des valeurs puisqu'il n'existe aucun chemin entre ces noeuds.

c. Centralité d'intermédiarité

La centralité d'intermédiarité [FR79] est une autre mesure de centralité globale proposée par Freeman. L'intuition de cette mesure est que, dans un graphe, un noeud est d'autant plus important qu'il est nécessaire de le traverser pour aller d'un noeud quelconque à un autre. Plus précisément, un sommet ayant une forte centralité d'intermédiarité est un sommet par lequel passe un grand nombre de chemins géodésiques le graphe. Dans un réseau social, un acteur ayant une forte centralité d'intermédiarité est un sommet tel qu'un grand nombre d'interactions entre des sommets non adjacents dépend de lui [BE06]. Dans un réseau de communication, la centralité d'intermédiarité d'un noeud peut être considérée comme la probabilité qu'une information transmise entre deux noeuds, qui passe par ce noeud intermédiaire [BE06].

Figure 1.21 : Centralité d'intermédiarité (CI) pour les noeuds du graphe G1

Figure 1.22 : Centralité d'intermédiarité entrante (CI) pour les noeuds du graphe G2

Source : [CH10]

Soit G = (X, U) un graphe (orienté ou non) d'ordre n. La centralité d'intermédiarité d'un noeud xi? X est définie par :

est le nombre total de chemins géodésiques entre les noeuds et qui passent par le noeud , et est le nombre total de chemins géodésiques entre les noeuds et .

Les figures 1.21 et 1.22 indiquent respectivement la centralité d'intermédiarité pour les noeuds des graphes G1 et G2. Nous remarquons que les noeuds A et F sont les plus importants dans le graphe G1; ces deux noeuds sont en effet les plus traverses par les chemins géodésiques entre les noeuds du graphe. Pour le graphe G2, le noeud D est celui par lequel passe le plus grand nombre de chemins géodésiques entre les noeuds du graphe; il possède par conséquent la plus forte centralité. Il est également intéressant de noter pour le graphe G2, que les noeuds E et F possèdent des centralités d'intermédiarité différentes bien qu'ils aient le même nombre de liens entrants et de liens sortants.

La centralité d'intermédiarité est basée sur l'hypothèse que les noeuds ne communiquent où interagissent entre eux qu'à travers les chemins les plus courts. Certains chercheurs ont alors proposé de modifier cette hypothèse afin de prendre en compte le fait que les noeuds peuvent interagir en utilisant des chemins autres que les chemins géodésiques. Par exemple, Freeman [FR91] a proposé la centralité du flux d'intermédiarité qui n'utilise pas que les chemins géodésiques mais plutôt tous les chemins indépendants entre deux noeuds c'est-à-dire les chemins dont les ensembles d'arcs sont disjoints.

I.3. IMPORTANCE DE LA THEORIE DES GRAPHES EN BASE DE DONNEES

Les graphes sont d'une importance en base de données, car une base de données orientées-graphe utilise les structures de graphes (noeuds, arêtes et propriétés) pour représenter et stocker les données.

Par définition, une base de données orientées-graphe correspond à un système de stockage correspondant à un graphe G=(X, U) tel que :

· X est l'ensemble des noeuds qui représentent les enregistrements ;

· U est l'ensemble des liens entre noeuds qui représentent les relations entre enregistrements.

C'est une base de données orientées-objet adaptée à l'exploitation des structures de données de type graphe ou dérivée, comme des arbres. [Wiki3]

Exemple 1.16:

En base de données relationnelle:

Table Client contient un identifiant, un nom, un prénom, une adresse, un numéro client, correspondant aux noms des colonnes respectives. Considérons le client « id01 Badibanga Trésor 96 quartier Ngufu 010203 »

Cette table client est rattachée à une table entreprise, avec un numéro de SIRET, un nom, et un domaine d'activité par exemple. Considérons l'entreprise « 1221 Bcorp TIC ».

La relation entre les tables se nomme a pour client, et bien évidemment Bcorp a pour client Trésor.

En base de données orientées-graphe, la table client sera représentée par un ensemble de noeuds pour chaque instance, donc le même client sera représenté par un noeud suivant :

"Client :

identifiant : id01

nom : Badibanga

prénom : Trésor

adresse : 96 quartier Ngufu

numéro client : 010203".

L'entreprise sera représentée de la même manière par un noeud :

"Entreprise :

siret : 1221

nom : Bcorp

domaine : TIC"

Et la relation entre les deux sera matérialisée par un arc partant du noeud Entreprise Bcorp vers le noeud Badibanga Trésor, nommée "a pour client".

Aussi, l'entreprise aura autant de pointeurs que de clients (chaque arc partant de l'entreprise vers le noeud correspondant avec comme nom a pour client).

De la même manière, le noeud client pourra pointer vers un noeud véhicule, lequel véhicule pourra pointer vers un noeud typeClavier, par exemple.

Il sera ainsi beaucoup plus facile d'accéder au type d'ordinateur du client no id01 par le biais du graphe puisqu'en parcourant les arcs on retrouvera directement le client, puis son ordinateur, et enfin son type de clavier. En base de données relationnelle, en revanche, il aurait fallu faire des jointures entre la table Client, la table Ordinateur, et la table Clavier ce qui aurait été très couteux.

L'intérêt de cette structure devient donc évident dans le cas de données complexes. C'est ainsi une structure idéale pour des recherches du type « partir d'un noeud et parcourir le graphe » plutôt que « trouver toutes les entités du type X », plus adaptées aux  bases de données relationnelles traditionnelles.

Elle est particulièrement appropriée lorsqu'il s'agit d'exploiter les relations entre les données (par exemple des connaissances entre des personnes, la description de l'ensemble des pièces d'une machine industrielle et de la manière dont elles sont liées entre elles).

Les bases de données orientées-graphes sont utilisées aujourd'hui dans la  modélisation des  réseaux sociaux : LinkedIn utilise par exemple ce système avec un graphe représentant les personnes et leur relations, et parvient ainsi facilement à afficher le degré de séparation entre chaque contact, qui n'est finalement que la distance entre les noeuds.

Elles sont de même utilisées dans le stockage de masse de données ou  Big data, avec ainsi un enjeu important à l'heure actuelle dans l'exploitation des données par leur structure adaptée.

Une telle base de données se caractérise donc par les critères suivants :

· stockage des données représentées sous forme d'un graphe, avec des noeuds et des arêtes;

· lecture et parcours des données sans recours à un index, en utilisant les arêtes pour passer d'un noeud à l'autre ;

· flexibilité du modèle de données ; il n'est pas nécessaire de créer une entité pour les noeuds ou les arêtes contrairement au modèle d'une base de données relationnelle ;

· intégration d'une  API utilisant des algorithmes classique de la  Théorie des graphes ( Algorithme de plus cours chemin (Dijkstra), A*, parcours en largeur, parcours en profondeur, calcul de centralité,...) permettant une exploitation différente des bases de données relationnelles.

CHAPITRE 2

NOSQL

I

l peut paraître un peu absurde de parler de NoSQL dans un environnement où quasiment tout le monde parle de SQL, jusqu'ici le SQL est le langage qui se trouve dans presque tous les lieux où l'on parle de base de données. Bien que les bases de données utilisant le SQL battent son plein, cela ne nous empêche en aucune façon de parler son homologue qu'est le NoSQL.

Etant donnée une augmentation très rapide des données à travers des différents types de stockage, notamment les données du web. On est alors arrivé à mettre en place des nouvelles organisations des données pouvant répondre à ces nouvelles contraintes et exigences.

De grands acteurs d'Internet, notamment Google (BigTable), Amazon (Dynamo), LinkedIn (Projet Voldemort), Facebook (Cassandra Project puis HBase), SourceForge.net (MongoDB), Ubuntu One (CouchDB), etc., conçoivent et exploitent des bases de données de type NoSQL. D'autres acteurs plus modestes sont à l'origine de grands succès, notamment dans le domaine des stockages clé-valeur (Redis,...). Une proportion importante de ces projets est  open source et sous licence libre. [Wiki2]

C'est la raison pour laquelle, dans ce chapitre on mettra aussi un accent sur les différents principes que doivent respecter les différents types de bases de données. Cependant, on parlera essentiellement des nouvelles organisations des données qui sont les bases de données du type NoSQL.

Enfin, on mettra un accent sur les défis majeurs que peuvent rencontrer les bases de données du type NoSQL, c'est-à-dire les problèmes que doivent résoudre les développeurs de bases de données NoSQL.

II.1. TERMINOLOGIE

Le terme NoSQL (de l'anglais Not only SQL) est apparu en 1989. C'est à cette année-là que Carlo Stozzi le prononça pour la première fois en public ; c'était lors de la présentation de son système de gestion de base des données relationnelles open source. Il l'a appelé ainsi à cause de l'absence de l'interface SQL pour communiquer.

Plus tard en 2009, le mot réapparait lorsqu'Eric Evans l'utilisa pour spécifier le nombre grandissant des bases de données distribuées open source.

NoSQL désigne une catégorie de systèmes de gestion de base de données (SGBD) qui n'est plus fondée sur l'architecture classique des bases relationnelles. L'unité logique n'y est plus la table, et les données ne sont en général pas manipulées avec le langage d'interrogation qu'est le SQL.

Selon Shashank Tiwari dans son livre Professional NoSQL, « les auteurs de ce néologisme ont probablement voulu signifier non-relationnel, mais ont préféré le mot NoSQL parce qu'il sonne mieux » que, par exemple, NoREL (pour Not only Relational). En bref, le mot est aujourd'hui utilisé pour exprimer tous les SGBD et les logiciels de stockage de données qui ne sont ni relationnels, ni objets, ni hiérarchiques et ni réseaux. [Wiki2]

II.2. CONCEPTS DE BASE

II.2.1. Théorème du CAP (d'Eric Brewer)

Actuellement, il sied de savoir que le mouvement des bases de données NoSQL contient plusieurs approches qui ont une architecture qui leur est propre et qui traitent des cas d'utilisation bien définis. Il convient donc de choisir l'outil qui répond le mieux au problème posé, à la fois en termes de modélisation mais aussi de répartition des données.

Le théorème énonce donc qu'il est impossible pour un système distribué de fournir les trois propriétés suivantes à la fois :

· Consistency: Tous les noeuds du système voient les mêmesdonnées au même moment quelques soient les modifications ;

· Availability: Les requêtes d'écriture et de lecture sont toujours satisfaites, donc il y a disponibilité pour la lecture et l'écriture ;

· Partition tolerance: La seule raison qui pousse un système à l'arrêt est la coupure totale du réseau. Autrement dit si une partie du réseau n'est pas opérationnelle, cela n'empêche pas le système de répondre. Le système tolère même une partie du réseau.

Afin de créer une architecture distribuée on doit donc se résoudre à choisir deux de ces propriétés, laissant ainsi trois conceptions possibles :

· CP : Les données sont consistantes entre tous les noeuds et le système possède une tolérance aux pannes, mais il peut aussi subir des problèmes de latence ou plus généralement, de disponibilité ;

· AP : Le système répond de façon performante en plus d'être tolérant aux pannes. Cependant rien ne garantit la consistance des données entre les noeuds ;

· CA : Les données sont consistantes entre tous les noeuds (tant que les noeuds sont onlines). Toutes les lectures/écritures des noeuds concernent les mêmes données. Mais si un problème de réseau apparait, certains noeuds seront désynchronisés au niveau des données (et perdront donc la consistance).

Le design CA n'est pas vraiment une option cohérente car un système qui n'est pas tolérant aux pannes (partition du réseau) sera, par définition, obligé d'abandonner la consistance ou la disponibilité lors d'un problème de partition. C'est pourquoi il existe une version plus moderne du théorème : « Durant un problème de partition, il faut choisir entre la disponibilité et la consistance.».

II.2.2. Principes ACID et BASE

Hormis le théorème CAP ci-haut énoncé, nous pouvons aussi parler de deux principes qui sont alors liés à la répartition des données et qui sont à la base des architectures actuelles des systèmes de gestion de bases de données, notamment les systèmes du type NoSQL.

ACID et BASE représentent deux principes de conception aux extrémités opposées du spectre cohérence-disponibilité. Les propriétés ACID se concentrent sur la cohérence et sont l'approche traditionnelle des bases de données. Le principe BASE était créé à la fin des années 90 pour saisir les concepts émergents de la haute disponibilité et rendre explicite à la fois le choix et le spectre. Les systèmes étendus modernes et à grande échelle, y compris le Cloud, utilisent une combinaison des deux approches.

Bien que les deux acronymes soient plus mnémoniques que précis, l'acronyme BASE (étant le second apparu) est un peu plus délicat : Basically Available, Soft state, Eventually consistent (Simplement disponible, état souple, finalement consistant). Soft state et Eventual consistency sont des techniques qui fonctionnent bien en présence de partitions réseau et donc améliorent la disponibilité.

La relation entre CAP et ACID est plus complexe et souvent incomprise, en partie parce que les C et A d'ACID représentent des concepts différents des mêmes lettres dans CAP et en partie parce que choisir la disponibilité affecte seulement certaines des garanties ACID. Les quatre propriétés ACID sont :

· Atomicity : Tout système bénéficie d'opérations atomiques. Quand l'objectif est la disponibilité, toutes les parties de la partition doivent toujours utiliser des opérations atomiques. De plus, des opérations atomiques de plus haut niveau (celles qu'impliquent ACID) simplifient la restauration ;

· Coherence: Dans ACID, le C signifie qu'une transaction préserve toutes les règles des bases de données, telles que les clés uniques. En comparaison, le C de CAP ne se réfère qu'à une cohérence de copie unique, un sous-ensemble strict de la cohérence ACID. Plus généralement, maintenir des invariants durant les partitions peut être impossible, d'où le besoin de bien choisir quelles opérations interdire et comment ensuite restaurer les invariants ;

· Isolation : L'isolation est au coeur du théorème CAP : si un système nécessite l'isolation ACID, il peut opérer sur au plus une partie durant une partition réseau. La possibilité de sérialiser les transactions nécessite des communications en général et échoue durant les séparations réseau. Des définitions plus faibles de l'exactitude sont viables durant les partitions en compensant durant la phase de restauration ;

· Durability : Comme pour l'atomicité, il n'y a pas de raison d'abandonner la durabilité, bien que le développeur puisse choisir d'éviter d'en avoir besoin grâce à un état flexible (dans le style de BASE) à cause de son coût. Une subtilité est que durant la restauration il est possible d'inverser les opérations durables qui violent un invariant pendant l'opération. Néanmoins, au moment de la restauration, avec un historique durable de toutes les parties de la partition, de telles opérations peuvent être détectées et corrigées. En général, effectuer des transactions ACID dans chaque partie de la partition rend la restauration plus simple et fourni un cadre pour compenser les transactions qui peut être utilisé pour récupérer d'une partition.

Il est à noter que le principe BASE abandonne donc la consistance au profit de ces nouvelles propriétés :

· Basically available : Le système garantie bien la disponibilité dans le même sens que celle du théorème de CAP ;

· Soft-State : Indique que l'état du système peut changer à mesure que le temps passe, et c'est sans action utilisateur. C'est dû à la propriété suivante ;

· Eventually consistent : Spécifie que le système sera consistent à mesure que le temps passe, à condition qu'il ne reçoive pas une action utilisateur entre temps.

NOTA :

ACID est nécessaire si :

· Beaucoup d'utilisateurs ou processus qui travaillent sur une même donnée au même moment ;

· L'ordre des transactions est très important ;

· L'affichage de données dépassées n'est pas une option ;

· Il y a un impact significatif lorsqu'une transaction n'aboutit pas (dans des systèmes financiers en temps réel par exemple).

BASE est possible si :

· Les utilisateurs ou processus ont surtout tendances à faire des mises à jour ou travailler sur leurs propres données ;

· L'ordre des transactions n'est pas un problème;

· L'utilisateur sera sur le même écran pendant un moment et regardera de toute façon des données dépassées ;

· Aucun impact grave lors de l'abandon d'une transaction.

Il est ainsi à remarquer que s'agissant des systèmes AC, il s'agit des bases des données relationnelles implémentant les propriétés de Cohérence et de Disponibilité. Ce qui signifie que les bases des données NoSQL sont généralement des systèmes CP et AP. [KO12].

C

A

P

Les systèmes CP sont du groupe NoSQL

Les systèmes AC renferment tous les systèmes qui obéissent au principe ACID

Les systèmes AP sont du groupe NoSQL

Figure 2.1 : Guide visuelle au Théorème CAP

II.3. CRITERES DE MIGRATION VERS LE NOSQL

C'est une évidence de dire qu'il convient de choisir la bonne technologie en fonction du besoin. Il existe cependant certains critères déterminants pour basculer sur du NoSQL.

· Taille : Nous sommes dans un monde où il y a des données ayant une masse considérable (qu'on appelle infobésité). Il sied d'avoir alors un système pouvant supporter un nombre important des opérations, d'utilisateurs, des données, etc. de manière optimale. Bien que tous les systèmes NoSQL ne soient pas conçus pour cette problématique, il est possible d'en trouver sans problème.

· Performance en écriture : Intérêt principal du géant Google, Facebook (135 milliards de messages par mois), Twitter (7TB de données par jour). Des données qui augmentent chaque année. A 80MB/s cela prend une journée pour stocker 7TB, donc l'écriture doit être distribuée sur un cluster, ce qui implique du MapReduce, réplication, tolérance aux pannes, consistance,... Pour des performances en écriture encore plus puissante, il convient de se tourner vers les systèmes in-memory.

· Performance en lecture clé-valeur : Certaines solutions NoSQL ne possèdent pas cet avantage mais comme il s'agit d'un point clé, la plupart d'entre elles en sont dotées.

· Type de données flexibles : Les solutions NoSQL supportent de nouveaux types de données et c'est une innovation majeure. Divers types de données, souvent des données complexes ne peuvent pas être mis sous forme de données relationnelles, d'où l'adaptation à un nouveau type des données.

· ACID : Bien que ce ne soit pas le but premier du NoSQL, il existe des solutions permettant de conserver certains (voire tous) aspects des propriétés ACID. Se référer au théorème CAP plus haut et aux propriétés BASE.

· Simplicité de développement : L'accès aux données est simple. Bien que le modèle relationnel soit simple pour les utilisateurs finaux (les données sont restituées selon la structure de la base), il n'est pas très intuitif pour les toujours être celle d'embauche d'un administrateur de base de données, le développeur devrait pouvoir être en mesure de le résoudre.

· Parallel Computing : Les solutions NoSQL améliorent les calculs parallèles.

II.4. CRITERES DE CHOIX POUR MIEUX CHOISIR LE TYPE DE BASE DE DONNEES [LE14]

Nous avons décrit les types des bases des données NoSQL au chapitre précédent. Certaines comme HBase, MongoDB ou Neo4j apparaissent régulièrement dans l'actualité et sont toutes libellées en tant que NoSQL. Il existe cependant des différences significatives entre elles, liées notamment au théorème de CAP. Ainsi, nous proposons le critère de choix suivant lorsque nous sommes buttés au choix d'un système de gestion de base de données du type NoSQL :

Ø Choisir une base de données orientées-document car elle s'adapte aux données non planes (type profil utilisateur).

Document

Champ1

Valeur

Champ2

valeur

Document

Champ1

Valeur

Champ2

valeur

Champ3

Valeur

Document

Champ1

Valeur

Document

Champ1

Valeur

Champ2

Valeur

Champ3

Valeur

Champ4

Valeur

Champ5

Champ5.1

Valeur

Champ5.2

valeur

Clé

CLE2012

CLE2013

CLE2014

CLE2015

CLE...

Figure 2.2 : Illustration d'une base de données orientées-document

Quelques SGBD orientées-document :

· MongoDB : Développé en C++. Les API officielles pour beaucoup de langages.Protocole personnalisé BSON. Réplication master/slave. Licence AGPL (commercial et libre) ;

· CouchDB : Développé en Erlang. Protocol http. Réplication master/master. Licence Apache.

Ø Choisir une base de données orientées-colonne car elle s'adapte mieux au stockage des listes (messages, postes, commentaires, ...).

Figure 2.3 : Illustration d'une base de données orientées-colonne

Source : [LE14]

Quelques SGBD orientées-colonnes :

· HBase : Utilise un API Java. Adopte un design CA. Présence de quelques SPOF.

· Cassandra : Beaucoup d'API disponibles. Adopte un design AP avec consistance éventuelle. Aucun SPOF3(*) car réplication master/master. Moins performant que HBase sur les insertions de données.

Ø Choisir une base de données orientées-graphe car pour mieux gérer les relations multiples entre objets (comme des relations dans un réseau social).

Figure 2.4 : Illustration d'une base de données orientées-graphe

Source : [LE14]

Quelques SGBD orientées-graphe :

· Neo4J : Développé en Java. Supporte beaucoup de langages. Réplication master/slave. Propriétés ACID possibles. Langage de requêtes personnalisé «Cypher».

· Titan : Haute disponibilité avec réplication master/master. Prise en compte d'ACID avec consistance éventuelle. Intégration native avec le framework TinkerPop.

Ø Choisir une base de données orientées-clé-valeur car elle permet d'accéder rapidement aux informations pour la gestion des caches.

Valeur 2012

Valeur 2013

Valeur 2014

Valeur 2015

Clé

 

CLE2012

CLE2013

CLE2014

CLE2015

CLE...

Figure 2.5 : Illustration d'une base de données orientées-clé-valeur

Quelques SGBD orientées-clé-valeur :

· DynamoDB : Solution d'Amazon à l'origine de ce type de base. Design de type AP selon le théorème de CAP mais peut aussi fournir une consistance éventuelle.

· Voldemort : Implémentation open-source de Dynamo. Il y a possibilité d'en faire une base embarquée.

II.5. DEFIS MAJEURS DES NOSQL [KO12]

La plupart des organisations cherchant à migrer vers les NoSQL se révèlent des grandes organisations traitant d'énormes masses de données, ainsi ayant d'énormes besoins de stockage. Il faut aussi le signaler que, les petites organisations ne regardent presque pas à la même direction ce concept qu'est le NoSQL.

Dans une enquête menée par une communauté d'enquêté appelée Information Week, 44% des professionnels en activité de l'informatique n'ont pas entendu parler de NoSQL. En outre, seulement 1% des répondants ont indiqué que NoSQL est une partie de leur orientation stratégique. De toute évidence, NoSQL a sa place dans notre monde connecté, mais devra continuer à évoluer pour obtenir l'appel de masse que beaucoup pensent qu'elle pourrait avoir. La technologie NoSQL ne cesse de faire parler d'elle et semble avoir le vent en poupe. Attrayante, la barrière d'entrée pour un nouveau développement est d'ailleurs assez peu élevée pour tout développeur ayant bien compris les sous-jacents de la solution retenue. Néanmoins, il est essentiel de garder à l'esprit que NoSQL apporte une réponse à des besoins bien spécifiques. Dit autrement, il est nécessaire d'avoir identifié au préalable la nécessité d'utiliser cette technologie dans vos services et pas uniquement avec une motivation : « et si on a autant de succès demain que Twitter».

Cependant, il faut se mettre d'accord que bien que robuste, le NoSQL reste encore une technologie en gestation et doit par conséquent ne pas cesser d'évoluer d'une manière quantitative que qualitative (en se dotant par exemple de solutions ORM éprouvées, en gommant l'absence d'un langage de requêtage commun et capitaliser sur l'utilisation, comme nos chers SGBDR l'ont fait sur les 20 dernières années).

Les bases de données NoSQL ont suscité beaucoup d'enthousiasme, mais il y'a de nombreux obstacles à surmonter avant de pouvoir faire appel aux principaux acteurs de l'industrie des bases de données. Voici quelques-uns des principaux défis.

II.5.1. Maturité et stabilité

Les outils permettant l'exploitation de ce type de bases de données sont encore très peu matures tout au moins pour la plupart. Si l'on se place au niveau des outils de développements, ils n'intègrent pas encore des Framework ou plugin compatibles au NoSQL. Pour ce qui est des outils d'administration (outils de sauvegarde, monitoring, ...), quand ils existent, ils sont spécifiques à des moteurs NoSQL particuliers. C'est le cas de Google qui a mis sur pieds son propre outil d'administration de bases de données orientées-colonne. Aussi, les bases de données de type NoSQL étant des technologies encore très récentes, il n'y a pas encore de normes qui permettent de définir une architecture type pour tel ou tel type de base de données, ni de syntaxe particulière ; bien que le mouvement tende vers une convergence pour des requêtes basées sur le langage JavaScript. Il manque vraiment des standards, comme JDBC et SQL le sont pour les SGBDR, mais cela s'explique sans doute par la jeunesse du mouvement et l'hétérogénéité des types de bases.

II.5.2. Assistance et maintenance

Les entreprises veulent avoir l'assurance que si un système de clés échoue, les fournisseurs de la base NoSQL seront en mesure d'offrir un soutien rapide et compétent ; la documentation sur les bases de données NoSQL ne sont pas à la portée de plusieurs personnes. Tous les fournisseurs de SGBDR font de grands efforts pour fournir un niveau élevé de soutien aux entreprises. En revanche, la plupart des systèmes NoSQL sont des projets open source, et bien qu'il existe généralement une ou plusieurs entreprises qui offrent un soutien pour chaque base de données NoSQL, ces entreprises sont souvent des startups sans portée mondiale et n'ont pas les ressources de soutien, ou la crédibilité d'un Oracle, de Microsoft, ou IBM.

II.5.3. Outils d'analyse et administration

Les bases de données NoSQL offrent peu d'installations pour des requêtes ad-hoc et d'analyse de données. Même une simple requête nécessite une expertise significative de programmation. Certains de secours sont fournis par l'émergence de solutions telles que le HIVE ou PIG, qui peuvent fournir un accès plus facile aux données détenues dans les clusters Hadoop et peut-être à terme, d'autres bases de données NoSQL. Quest Software a développé un produit dénommé « Toad » pour les bases de données qui peut fournir des capacités de requête ad-hoc à une variété de bases de données NoSQL. L'objectif de la conception des bases de données NoSQL était de fournir une solution zéro-administration, mais la réalité actuelle est bien loin de cet objectif [wika]. Pour administrer une base NoSQL aujourd'hui, il faut beaucoup d'habileté non seulement pour l'installer et beaucoup d'efforts pour la maintenir.

Les outils d'analyse et de calculs (qu'on appelle graph processing) ne sont pas très développés, et les recherches se font encore en ce sens, c'est-à-dire les chercheurs cherchent encore des outils nécessaires adaptés au BI et à l'Analyse des données.

II.5.4 Expertise

Bien qu'à travers le monde entier, il existe environ des millions des développeurs, il sied de reconnaitre que dans chaque secteur d'activités, les développeurs sont presque tous familiers avec les concepts de programmation et gestion de bases de données relationnelles. En revanche, presque tous les développeurs des bases de données de type NoSQL sont en phase d'apprentissage. Cette situation se penchera naturellement au fil du temps, mais pour l'instant, c'est beaucoup plus facile de trouver des programmeurs expérimentés ou les administrateurs SGBDRque par un expert NoSQL.

CHAPITRE 3

BASE DE DONNEES ORIENTEES-GRAPHE

L

a base de données orientées-graphe étant le noeud de la question, nous allons alors nous appesantir sur la vue globale des bases de données orientées-graphe. A cet effet, on parlera de sa puissance et de ses cas d'usage, c'est-à-dire les différentes applications des bases de données orientées-graphe ainsi que leur performance au niveau de l'implémentation de certaines applications.

Après avoir passé en revue de sa puissance et ses cas d'usage, on parlera d'outils des différents outils qui utilisent les graphes pour l'utilisation des données, notamment les outils de stockage de données (graph storage) et de traitement et analyse de données (graph processing).

De plus, on donne une comparaison entre les bases de données orientées-graphe et les autres bases de données notamment les bases de données relationnelles et les bases de données réseau. Ces comparaisons se justifient car les bases de données relationnelles sont encore beaucoup plus utilisées et il existe plusieurs confusions entre les bases de données réseau et les bases de données orientées-graphe.

A la fin de ce chapitre, nous parlerons alors d'un système de gestion de base de données qui nous permet de mettre en oeuvre les bases de données orientée-graphe, le Neo4j.

III.1. VUE GLOBALE

III.1.1. Définition

Une base de données orientée-graphe est une base de données utilisant les structures de graphes (noeuds, arcs et propriétés) pour représenter et stocker les données.

En effet, d'une manière plus formelle, une base de données orientées-graphe correspond à un système de stockage correspondant à un graphe G=(X, U) tel que :

· X est l'ensemble des noeuds qui représentent les enregistrements de la base de données;

· U est l'ensemble des arêtes (liens) entre noeuds qui représentent les relations entre différents enregistrements.

Exemple 3.1.

Figure 3.1 : Exemple d'une structure de base de données graphe

Dans cet exemple :

· X = {différents noeuds formant le graphe}

· U = {DONNA NAISSANCE (Confidentialité: Public), FORME PAR(Age: 3ans), CONNAIT(Age: 6ans), CONNAIT (Age : 3mois, Confidentialité : Secret), CONNAIT (Age : 4 ans, Confidentialité : Public)}

Nota : Les différentes relations peuvent être unidirectionnelles (dans un seul sens) ou bidirectionnelles (dans les deux sens).

III.1.2. Puissance des bases de données orientées-graphe

Eu égard au chapitre précédent, nul ne peut douter de la puissance des bases de données du type NoSQL en général et des bases de données orientées-graphe en particulier. En effet, La puissance de l'utilisation des bases de données orientées-graphe peut se résumer en trois notions suivantes: [SA]

Ø Performance : se référant à l'expérience de Partner et Vukovic dans leur publication intitulée Neo4j in Action, une base de données orientées-graphe est plus performent que les autres types de base de données, notamment la base de données relationnelle ;

Ø Flexibilité : dans une base de données orientée-graphe, les ajouts de noeuds, des relations et propriétés sans perturber les requêtes existantes;

Ø Agilité : dans une base de données orientée-graphe, le développement se fait sans friction et il est contrôlé. De plus, la maintenance est gracieuse. Il n'y a pas de complication pour assurer sa maintenance.

Faisant référence à la puissance des bases de données orientées-graphe ci-haut, la migration des autres modèles de bases de données vers les bases de données orientées-graphe est plus que souhaitée, surtout pour les bases de données disposant d'une masse de données importantes et voulant bénéficier des avantages qu'offrent les algorithmes des graphes.

III.1.3. Cas d'usage des bases de données orientées-graphe

Il existe plusieurs cas d'usage des systèmes de gestion des bases de données orientées-graphes, mais les plus fréquents peuvent se résumer en assertions suivantes [Wiki3]:

· La gestion de réseau: Migration vers les bases de données pour gérer la forte connectivité de leurs clients. La multiplicité des clients dans les entreprises fait que les entreprises cherchent à migrer vers les bases de données orientées-graphe, étant donnée il y a forte connectivité entre différents clients. Dans ce cas, on stocke dans les noeuds les différents clients;

· La logistique : Calculer le meilleur chemin pour livrer un client. Dans ce cas précis, les clients et les marchandises sont stockés dans les noeuds ;

· Le Social, la collaboration : Gestion de la connectivité grâce aux graphes. Rechercher très facilement les amis de mes amis qui ne sont pas mes amis. Ce type de bases de données est beaucoup plus utilisé dans les réseaux sociaux électroniques. C'est ce qui a d'ailleurs fait sa commodité dans l'implémentation de plusieurs réseaux sociaux les plus utiliser des nos jours. Ici, les différents acteurs du réseau social et les informations les concernant sont stockés dans les noeuds ;

· La recommandation : Définir en temps réel la liste des produits achetés par mes amis que je n'ai pas moi-même achetés. Dans les noeuds, on stockera les clients et les produits ;

· Le Master Data Management / la gestion de configuration : Construction d'un référentiel standardisé performant et sans redondance pour vos données critiques hiérarchisées : hiérarchie d'entreprise et de produit. Les noeuds contiendront donc les produits et l'entreprise ;

· La sécurité est l'accès aux données : Gestion des groupes, utilisateurs et droits rapidement et sans redondance. Relier les détails d'authentification des clients et administrateurs. C'est un bon choix à adapter pour le Cloud Computing ;

· Le géo-Spatial/Système d'information géographique : Modélisation d'une carte routière et calculs d'itinéraires. Les différents carrefours et leurs informations seront stockés dans les noeuds et les différentes routes et leurs informations dans les arêtes ;

· La biologie, interactions moléculaires : Réduire les risques d'effets secondaires des médicaments en calculant en temps réel les interactions entre une protéine et une future molécule. Il est clair que les molécules seront stockées dans les noeuds et les arêtes représenteront leurs interactions.

III.2. OUTILS DES BASES DE DONNEES ORIENTEES-GRAPHE

Comme pour les autres types de bases de données, notamment les bases de données relationnelles, les bases de données orientées-graphe (bien que pas encore normalisé) on distingue les outils de stockage (graph storage) et les outils de traitements (graph processing).

Une comparaison qu'on est amené à faire est celle des bases de données graphes par rapport aux outils de « large-scale graph processing » (traitement de graphe en grande échelle) comme Google's Pregel ou BSP.

Une première différence importante est qu'on a affaire à des outils aux objectifs assez différents, bien qu'ils partagent les mêmes modèles de données. Jim Webber de NeoTechnology donne un point de vue intéressant bien qu'assez partisan :

· Les outils de graph processing, comme leur nom l'indique, adressent uniquement des problématiques de calcul et d'analyse (OLAP), tandis que les graphs storages'adressent essentiellement des problématiques de stockage et de calculs transactionnels (OLTP).

· Les outils de graph processing impliquent, de la même manière que des outils comme Hadoop, une certaine latence dans les calculs (plusieurs secondes), tandis que le graph storage vise des lectures plutôt temps réel (de l'ordre de la ms).

· Les deux n'adressent pas la même échelle de calculs, et n'ont pas non plus les mêmes exigences matérielles: un outil de graph storage adresse essentiellement la problématique du volume par scale-in sur un seul serveur là où un outil comme Pregel l'adresse par scale-out en distribuant les traitements sur plusieurs machines.

· Les outils de graph processing sont entièrement distribués, possibilité que n'offrent pas la plupart des outils de graph storage.

On a donc affaire à deux familles d'outils qui adressent des types et des échelles de problèmes différents : en terme d'usages, on utilisera plus facilement un outil de graph storage pour la navigation dans le graphe ou une recherche de plus court chemin, tandis qu'un outil de graph processing adressera plutôt du  clustering de graphe, de la recherche de  centralité ou encore une recherche globale de tous les chemins (problème de cheminement, d'une manière générale).

Les bases des données orientées-graphe connaissent toutefois une limite liée à leur structure, celle de la taille : il est complexe de partitionner un graphe, particulièrement en tenant compte de la latence réseau, des patterns récurrents de parcours du graphe (quelles relations sont les plus parcourues) et surtout de l'évolution en temps réel du graphe. Certains systèmes de gestion de base de données graphes, OrientDB et InfiniteGraph, s'affichent comme facilement partitionnables, tandis que le SGBD comme de Neo4j n'offre pas encore cette possibilité. Les chercheurs travaillent encore sur ce sujet. Ce qui n'empêche pas que dans un avenir plus ou moins moyen qu'on introduise les notions comme la coloration des graphes (Algorithme de coloration, b-coloration, etc.), la connexité des graphes (Algorithme de Tarjan, Algorithme de Kusaraju).

Par ailleurs, on peut alors résumer (selon Marko Rodriguez) très bien le positionnement des différents outils de traitements de graphes dans ce graphique, en fonction de la taille des données à utiliser par rapport à l'objectif de vitesse des parcours du graphe : plus la taille du graphe à exploiter est grande (et surtout la portion du graphe à parcourir), moins les outils adaptés permettent un traitement en temps réel.

 Figure 3.2 : Classification des outils de traitement de graphes

Source : [Octo]

III.3. COMPARAISON DE BASE DE DONNEES ORIENTEES-GRAPHE AVEC LES AUTRES

BASES DE DONNEES

II.3.1. Comparaison avec les bases de données relationnelles

En règle générale, une base de données orientée-graphe permet l'exploitation des structures de type graphe ou dérivé, tels que les arbres, les arborescences, etc., plus particulièrement s'il s'agit d'exploiter les relations entre les données. Pour effectuer une recherche par exemple, il est possible de partir d'un ou plusieurs noeuds et effectuer les opérations de parcours d'un graphe. Il offre ainsi la possibilité d'effectuer des lectures qui permet de trouver toutes les entités d'un type.

Mais, il faut toutefois noter que les bases de données relationnelles sont très adaptées à de requêtes du genre trouver toutes les entités grâce aux structures internes des tables, d'autant plus s'il s'agit de réaliser des opérations d'agrégations sur toutes les lignes d'une table.

Malgré l'adjectif « relationnelle », il faut noter que les bases de données relationnelles sont vraiment moins efficaces pour l'exploitation des « relations», qui dans ce cas doit être par la mise en place des clés étrangères (qui ne sont que des pointeurs logiques). L'avantage est que nous utilisons des pointeurs physiques dans une base de données orientées-graphe pour les parcours de relations qui se représentent par des arêtes dans le cas des bases de données graphe.

A titre illustratif, on se réfère de l'exemple donné par Michel Domenjoud dans un article de blog posté le 18/07/2012 [Octo], dans lequel on modélise des sociétés, les personnes qui y travaillent et depuis combien de temps. On cherche par exemple à trouver les personnes qui travaillent chez Google.

En utilisant une modélisation relationnelle, on pourrait obtenir l'exécution décrite dans la figure 3.3, qui nécessite a priori 3 lookups d'index, optimisés en fonction des indexes et des clés étrangères déclarés.

Figure 3.3. Exemple de la modélisation d'une base de données relationnelle

Source : [Octo]

En utilisant une modélisation dans un graphe, la requête nécessitera un lookup d'index, puis un parcours par pointeurs physiques des relations dans le graphe.

Figure 3.4. Exemple de la modélisation d'une base de données graphe

Source : [Octo]

Il parait très clairement au travers de cet exemple que l'utilisation d'une base de données orientée-graphes est logiquement plus performante que l'utilisation d'une base de données relationnelle.

La différence de performances sera d'autant plus importante lorsque la quantité de données stockées augmente, car hormis le lookup d'index pour trouver le(s) noeud(s) de départ du parcours de graphe, la requête se fera en temps à peu près constant dans un graphe, au contraire de la base de données relationnelle dans laquelle chaque parcours d'index pour récupérer une clé étrangère coûtera O(log2N) du point de vue algorithmique si l'index est stocké dans un  B-Tree (avec N le nombre d'enregistrements dans la table parcourue).

Une base de données orientées-graphe surpassera naturellement les performances en lecture d'une base de données relationnelle sur son domaine de prédilection, les traversals, et d'autant plus si la profondeur de ceux-ci est importante ou n'est pas déterminée à l'avance (il serait dans ce cas impossible d'optimiser le plan de la requête SQL à l'avance), ce que tendent à montrer les  quelques comparatifs existants sur le Web.

II.3.2. Comparaison avec les bases de données réseaux

Pour rappel, le modèle réseau est en mesure de lever de nombreuses difficultés du modèle hiérarchique grâce à la possibilité d'établir des liaisons de type n-m en définissant des associations entre tous les types d'enregistrements. Pour retrouver une donnée dans une telle modélisation, il faut connaître le chemin d'accès ceci rend encore les programmes dépendants de la structure de données. D'une manière plus claire, Ils permettent de modéliser des articles stockés dans des fichiers ainsi que les liens entre ces articles. Ces modèles dérivent avant tout d'une approche système au problème des bases de données qui tend à voir une base de données comme un ensemble de fichiers reliés par des pointeurs. Ils privilégient l'optimisation des entrées-sorties. C'est pourquoi nous les appelons aussi modèles d'accès.

Dans un modèle orienté-graphe, on utilise le langage de modélisation NoSQL utilisant les algorithmes de plus court chemin, de calcul de centralité, etc. mais dans le modèle réseau, sont associés des langages de manipulation de données sont basés sur le parcours de fichiers et de liens entre fichiers, article par article, appelés langages navigationnels. Ces langages sont très caractéristiques des modèles d'accès. L'utilisation de algorithmes de la Théorie de graphes dans les bases de données graphe permet de faciliter la manipulation qu'en utilisant les bases de données réseaux bien qu'utilisant tous les pointeurs physiques.

Du point de vue de la performance, les bases de données orientées-graphe sont beaucoup plus performantes que les bases de données réseaux car la syntaxe utilisée pour faire des requêtes utilisent les algorithmes efficaces de la théorie des graphes. Dans le cas d'une base de données réseaux, on fera plusieurs accès à l'aide de pointeurs pour chercher l' « ami d'un ami », mais dans le cas d'une base de données orientée-graphe, il suffira de calculer déjà le chemin géodésique d'une source vers tous les autres sommets voisins de l'ami et après, atteindre cet ami à partir des arcs optimaux (Principe d'optimalité de Richards Bellman).

Il faut noter que du point de vue de la modélisation, les bases de données orientées-graphe et les bases de données réseaux se modélisent toutes à l'aide des graphes, sauf qu'il existe certaines possibilités non offertes pour le cas des bases de données réseaux, par exemple les liaisons bidirectionnelles.

En effet, les possibilités offertes pour modéliser les associations entre objets constituent un des éléments importants d'un modèle de données. Historiquement, le modèle réseau est issu d'une conceptualisation de fichiers reliés par des pointeurs. De ce fait, il offre des possibilités limitées pour représenter les liens entre fichiers. Avec les recommandations du CODASYL, il est seulement possible de définir des associations entre un article appelé propriétaire et n articles membres. Une instance d'association est le plus souvent une liste circulaire d'articles partant d'un article propriétaire et parcourant n articles membres pour revenir au propriétaire. Ces associations, qui sont donc purement hiérarchiques mais qui, utilisées à plusieurs niveaux, peuvent permettre de former aussi bien des arbres, des cycles que des réseaux, sont appelées ici liens (en anglais set).

NOTA : Un lien (set) est un type d'association orientée entre articles de type T1 vers articles de type T2 dans laquelle une occurrence relie un article propriétaire de type T1 à n articles membres de type T2.

Un type de lien permet donc d'associer un type d'article propriétaire à un type d'article membre; une occurrence de lien permet d'associer une occurrence d'article propriétaire à n occurrences d'articles membres. Généralement, les articles membres seront d'un type unique, mais la notion de lien peut théoriquement être étendue afin de supporter des membres de différents types.

Un lien se représente au niveau des types à l'aide d'un diagramme de Bachman. Il s'agit d'un graphe composé de deux sommets et d'un arc. Les sommets, représentés par des rectangles, correspondent aux types d'articles ; l'arc représente le lien de 1 vers n [BA69]. L'arc est orienté du type propriétaire vers le type membre. Il est valué par le nom du type de lien qu'il représente et chaque sommet par le nom du type d'article associé.

Par exemple, les types d'articles VINS et PRODUCTEURS décrits ci-dessus seront naturellement reliés par le type de lien RECOLTE, allant de PRODUCTEURS vers VINS. Une occurrence reliera un producteur à tous les vins qu'il produit. La figure 2.4 schématise le diagramme de Bachman correspondant à ce lien.

PRODUCTEURS

VINS

Récolte

Figure 3.5. Exemple de diagramme de Bachman

III.4. MODELISATION

Un dernier point particulièrement important en faveur d'une base de données orientées-graphe réside dans la facilité de modélisation des données.

Ensuite, une fois qu'on a choisi un système de stockage, il est temps de faire rentrer notre modèle de données dedans.

Si nous choisissons une base de données relationnelle, on commence généralement par normaliser notre modèle afin de bien se conformer à la 3ème forme normale, et ça pourrait donner quelque chose comme ça :

Figure 3.6. Modèle relationnel

Alors que si on choisit de modéliser nos données dans une base de données graphes, ça pourrait naïvement donner ceci :

Figure 3.7. Modèle graphe

La modélisation de données sous forme de graphes est naturelle, et comporte donc l'avantage non négligeable d'être lisible, même sans background technique. Cet exemple reste néanmoins très simpliste, et de même qu'un modèle relationnel normalisé est parfois dénormalisé pour des raisons de performances, certaines optimisations moins lisibles à « l'oeil nu » de la modélisation du graphe peuvent être nécessaires.

III.5. SYSTEME DE GESTION DES DONNEES ORIENTEES-GRAPHE : NEO4J

III.5.1. Qu'est-ce que Neo4j ?

C'est un système de gestion de bases de données  NoSQL orienté- graphe édité par la société  NeoTechnology. Ce logiciel permet de représenter les données connectées naturellement, en tant qu'objets reliés par un ensemble de relations, chacun possédant ses propres propriétés.

III.5.2. Caractéristiques de Neo4j

· Neo4j est un SGBD à code source libre (open source);

· Neo4j utilise des transactions ACID (Atomiques, Cohérentes, Isolées, Durables) ;

· Neo4j est un SGBD écrit en Java et nécessite donc l'emploi d'une machine virtuelle Java (JVM : Java Virtual Machine, version?1.7 obligatoire à partir de Neo4j 2.0) ;

· Le serveur d'application proposé par défaut est Jetty. Toutefois, Neo4j n'a pas été écrit pour Java son utilisation au travers de l'API REST n'est pas triviale mais réellement pensée en ce sens. Le moteur d'indexation utilisé par défaut est Lucène mais cette technologie reste transparente du point de vue de l'utilisateur ;

· Neo4j est capable de manipuler d'énormes quantités de données en un temps record, et ses limites sont sans cesse repoussées. En outre, il peut être intégré dans une grappe de serveurs (cluster) pour en augmenter les performances ainsi que la disponibilité (HA : High Availability) ;

· Les systèmes d'exploitation qui sont concernés par ce SGBD sont le Windows, le Linux et le Mac OS X.

III.5.3. Installation rapide de Neo4j

Il suffit de le connecter sur le site de Neo4j et télécharger la dernière version communautaire (Community Edition) prévue pour votre système. Les instructions données ici détaillent une installation sur un poste de travail de type Windows. Elles ne signifient en aucun cas une limitation du produit pour ce système, ni ne constituent une installation pérenne en vue d'un lancement en production ou encore une installation type pour un déploiement sur un serveur.

1. Installez le Java Development Kit (JDK) version?1.7+ si celui-ci n'est pas disponible sur votre machine (une simple vérification avec la ligne de commande > java -version répondra à cette question). Notez que le programme d'installation sous Windows est à présent pourvu de son JDK.

2. Lancez l'installeur de Neo4j et suivez les quelques étapes proposées par l'assistant d'installation.

Nota : Le dossier racine d'installation de Neo4j sera noté [NEO4J_HOME dans la suite de cet ouvrage. De même, les chemins relatifs au système de fichiers seront indiqués avec le caractère /.

III.5.4. Lancement de Neo4j

À partir de la boîte de dialogue du lanceur Neo4j, cliquez sur le bouton START. Dès que la barre STATUS sera passée du rouge au vert, votre système Neo4j sera prêt à l'emploi.

 Figure 3.8 : Lanceur Neo4j

III.5.5. Test d'installation de Neo4j

Lancez un navigateur web et entrez l'adresse http://localhost:7474. Vous devriez obtenir l'écran suivant?:

Figure 3.9 : http://localhost:7474

CHAPITRE4

APPLICATION

L

es bases de données relationnelles sont encore de plus en plus utilisées dans la plupart des entreprises tant publiques que privées, alors que beaucoup de ces entreprises ne savent pas encore rien de l'importance et des cas d'usage des bases de données orientées-graphe. Dans la plupart des cas, ces entreprises n'ont même pas entendu parler de ces types de bases de données. Les entreprises ou en général les organisations ayant entendu parler de ces types des bases de données désirent ainsi migrer de leurs bases des données pour rejoindre les grandes familles des bases graphes.

Ainsi, dans ce chapitre, il sera question de montrer comment peut-on passer des bases de données relationnelles vers les bases de données orientées-graphe. On se propose une approche qui permet de prendre une base de données existante comme entrée, en utilisant évidemment son Modèle Entité-Association, plus particulièrement le modèle conceptuelle des données et/ou son modèle physique des données de la méthode Merise et ensuite générer un Modèle de Graphe Attribué. Pour rendre les choses plus claires, nous allons montrer à l'aide d'un algorithme comment se fait cette migration.

Enfin du chapitre, on validera l'approche par une étude de cas consistant à faire migrer une base de données conçu par l'approche modèle relationnel vers l'approche modèle graphe ; et valider l'approche par une étude de cas.

IV.1. PRESENTATION DE L'APPROCHE

IV.1.1. Introduction

Dans ce paragraphe, nous allons présenter l'approche de migration que nous proposons pour quitter des bases des données relationnelles vers les bases des données orientées-graphe. Les types de bases des données étant différents ; les exigences ainsi que les performances étant aussi différentes, il ressort de savoir que le processus de migration d'une base des données vers une autre est très complexe, et généralement pas très direct.

De ce fait, quelques transformations à tous les niveaux sont alors nécessaires pour avoir un modèle cohérent et sans perte d'informations. Car, il suffit de voir d'une manière triviale que les types de conception des bases de données sont différents et on ne peut pas seulement faire des correspondances, mais il faut aussi adjonction ou omission des certaines choses. Ainsi, il faut avoir la maitrise du modèle de données source et du modèle de données cible.

IV.1.2. Modèle de données source

Le modèle de données source que nous devons parler ici est le modèle relationnelle. La conception d'une base de données relationnelle, en utilisant la méthode Merise s'effectue en quatre niveaux (conceptuel, organisationnel, logique et physique). Comme la méthode Merise utilise le modèle Entité-Association, nous allons alors utiliser le Modèle Entité-Association comme notre modèle source.

On pouvait utiliser normalement comme schéma de données source le modèle physique de données (MPD), c'est-à-dire le scripte de la base de données relationnelle. Mais l'inconvénient est que ce dernier peut varier d'un SGBD à l'autre même si le langage standard reste le SQL. Par ailleurs, le modèle de données relationnel, introduit par Codd représente une base de données comme une collection de relations d'où le nom de base de données relationnelle. [KO12] C'est la raison pour laquelle, on prend un modèle plus général qu'est le modèle Entité-Association, le Modèle conceptuel des données (MCD) et le MPD seront utilisé d'une manière particulière et pourront aussi nous aider.

Le modèle Entité-Association (qu'on note EA) est aussi fréquemment nommé Entité-Relation et parfois Entité-Relation-Attribut. Le modèle EA propose des concepts (principalement les entités, les associations et les attributs) permettant de décrire un ensemble de données relatives à un domaine défini afin de les intégrer ensuite dans une base de données. Le modèle EA a été inventé par Peter Chen en 1975 ; il est destiné à clarifier l'organisation des données dans les bases de données. Ce modèle est à la base de plusieurs méthodes de modélisation d'analyse/conception comme OMT, CASE, MERISE, etc. [KA13] Les concepts clés de ce modèle sont :

· typeEntité

Une entité est un objet, une chose concrète ou abstraite qui peut être reconnue distinctement. Un type-entité est un ensemble d'entités qui possèdent les mêmes caractéristiques.

Figure 4.1 : Représentation du diagramme type entité

· Une association (ou une relation) est un lien entre plusieurs entités. Un type-association (ou un type-relation) est un ensemble de relations qui possèdent les mêmes caractéristiques ; c'est un lien existant entre plusieurs types-entités.

· Un attribut (ou une propriété) est une caractéristique associée à une entité ou une association.

Attribut 1

Attribut 2

...

typeEntité 1

Attribut 1

Attribut 2

...

typeEntité 2

typeAssociation

Attribut 1

Attribut 2 ...

Figure 4.2 : Représentation des types-entités et type-association avec les attributs

· Un identifiant d'un type-entité ou d'un type-association est constitué par un ou plusieurs de ses attributs qui doivent avoir une valeur unique pour chaque type-entité ou type-association de ce type ;

· La cardinalité d'une association est le nombre de fois minimal et maximal qu'une entité peut intervenir dans une association de ce type.

L'expression de la cardinalité est obligatoire pour chaque patte d'un type-association.

La cardinalité minimale peut-être :

§ 0 Cela signifie qu'une entité peut exister tout en étant impliquée dans aucune association ;

§ 1 Cela signifie qu'une entité ne peut exister que si elle est impliquée dans au moins une association ;

§ n Cela signifie qu'une entité ne peut exister que si elle est impliquée dans plusieurs associations.

De ce fait, on distingue trois types de types-associations :

Ø Type-association du plusieurs à plusieurs (many to many) : ici, deux types-entités 1 et 2 sont reliées et on peut correspondre plusieurs instances du type-entité 2 et inversement.

Attribut 1

Attribut 2

...

Entité 1

Attribut 1

Attribut 2

...

Entité 2

typeAssociation

Attribut 1

Attribut 2 ...

1, n

1, n

Figure 4.2: Association many to many

Ø Type-association du plusieurs à un ou un à plusieurs (many to one ou one to many) : ici, deux types-entités 1 et 2 sont reliées et pour une instance donnée du type-entité 1, peut correspondre plusieurs instances de du type-entité 2. Et chaque entité de 2 correspond une et une seule instance du type-entité 1.

Attribut 1

Attribut 2

...

typeEntité 1

Attribut 1

Attribut 2

...

typeEntité 2

typeAssociation

Attribut 1

Attribut 2 ...

1, 1

1, n

Figure 4.3: Association many to one

Ø Type-association du un à un (one to one) : ici, deux types-entités sont reliées et lorsque pour une instance donnée de du type-entité 1, correspond une et une seule instance du type-entité 2 et inversement.

Attribut 1

Attribut 2

...

typeEntité 1

Attribut 1

Attribut 2

...

typeEntité 2

typeAssociation

Attribut 1

Attribut 2 ...

1, 1

1, 1

Figure 4.4: Association one to one

Nota : Par abus de langage, on utilise souvent le mot entité en lieu et place du mot type-entité, et on utilise souvent le mot association en lieu et place du mot type-association, il faut cependant prendre garde à ne pas confondre ces différents concepts.

Exemple 4.1 : Personne, Automobile, Région, ... sont des types-entité tandis que Glodi Kamingu, maVoiture, Kinshasa, ... sont des entités.

Exemple 4.2 : Le mariage de deux personnes, le transport d'un produit vers un entrepôt, l'affectation d'un employé à un service sont des types-association tandis que mariage de Ronny et Marielle, le transport de la Clio 3333 XR 06 vers le dépôt de Matete, le fait que Pupa travaille au service Informatique sont des associations.

Ce que nous pouvons dire d'une manière très simple, en terme de programmation orientée-objet, un type-entité est vu comme une classe et une entité est vu comme un objet, ou instance du type-entité.

IV.1.3. Modèle de données cible

Le modèle de données cible ici est le modèle graphe que nous avons parlé en détail au chapitre précédent. Il a été bien dit plus haut que ce modèle se base principalement sur la théorie des graphes initié par Leonhard Euler par ses fameux ponts de Königsberg. C'est cette théorie qui est à la base de la conception d'une base de données orientées-graphe.

Le domaine des bases de données orientées-graphes étant encore en gestation, Il n'existe pas de consensus général sur les concepts de base les concernant. Il existe beaucoup de modèles de graphes différents. Cependant, un certain effort est fait pour créer le Modèle de Graphe Attribué (Property Graph Model), unifiant la plupart des différentes implémentations de graphes. Selon celui-ci, l'information dans un graphe attribué est modélisée grâce à trois blocs de base :

· Un noeud est un sommet du graphe représentant une partie du monde réel.

Noeud

Figure 4.5: Noeud d'une base de données graphe

· Une arête est un lien entre plusieurs noeuds, avec une orientation ou non et un type (orienté et marqué).

· Noeud1

Attribut1 : valeur1

Attribut2 : valeur2

...

Noeud2

Attribut1 : valeur1

Attribut2 : valeur2

...

Arête

Attribut1 : valeur1

Attribut2 : valeur2

...

Un attribut (ou une propriété) est une caractéristique associée à un noeud ou un arc.

Figure 4.6: Noeuds, arête et leurs attributs

Plus spécifiquement, le modèle est un multigraphe(p-graphe sans boucle) attribué, marqué et orienté ou non-orienté. Il est attribué car, les arêtes et les noeuds ont des attributs. Il est marqué car, à une étiquette pour chaque arête qui est utilisée comme type pour celle-ci. Il est orienté ou non, car les arêtes du graphe ont des flèches montrant la direction de l'origine vers la cible ou ils n'ont rien comme flèche.Ces graphes autorisent une liste variable d'attributs pour chaque noeud et arête, dans laquelle un attribut est une valeur associée à un nom, simplifiant la structure du graphe.

Il sied de signaler que les graphes qu'on utilise pour les bases des données sont des multigraphes, c'est-à-dire qu'il autorise plusieurs arêtes entre deux noeuds (en théorie des graphes, on parle des arêtes de même forme). Cela signifie que deux noeuds peuvent être connectés plusieurs fois par différentes arêtes, même si deux arêtes ont la même extrémité initiale et extrémité terminale.

IV.3. TRADUCTION DU MODELE DE DONNEES SOURCE VERS LE MODELE DE DONNEES CIBLES

Pour passer d'un modèle relationnel vers un modèle graphe, nous proposons les différentes étapes suivantes :

IV.3.1. Traduction des types-entités (ou tables)

Il sied pour nous de rappeler que, la matérialisation du modèle relationnel est le modèle physique de données (MPD) si nous nous référons à la méthode Merise. Alors dans ce cas, on parle des tables en lieu et place du type-entité. De plus, le type-association du type many to many se transforme en table de jointure, qui est évidement action très coûteux du point de vue spatiotemporel.

Règle 4.1 : Lors de la migration du relationnel vers le graphe, chaque table d'entité est représentée par une étiquette sur des noeuds

Exemple 4.3 :

En relationnelle, on a :

Matricule

Nom

Prenom

Personne

NumRegistre

Libelle

Status

Entreprise

Travailler _a

DateEmbauche

DureeContrat

1, n

1, n

Figure 4.6: Type-entité à traduire

: Personne

Matricule : valeur

Nom  : valeur

Prenom : valeur

: Entreprise 

NumRegistre: valeur

Libelle : valeur

Status : valeur

Travailler_a

DateEmbauche : valeur

DureeContrat: valeur

En graphe, on a :

Figure 4.7: Traduction du type-entité

IV.3.2. Traduction des enregistrements (lignes) d'une table d'entité

Les enregistrements ou les lignes dans les bases de données relationnelles sont les éléments qui font beaucoup plus l'objet des requêtes. Ainsi, chacun de ses enregistrements se transforment en noeud et les colonnes de ses enregistrements deviennent des attributs du noeud correspondant. Les attributs à valeur nulle ne sont pas répétés dans une base de données orientées-graphe.

Règle 4.2: Lors de la migration du relationnel vers le graphe, chaque enregistrement dévient un noeud, et par conséquent chaque colonne sur ces tables devient attribut de noeud.

IV.3.3. Traduction de la table de jointure

Une table de jointure (Join table ou jonction table) est une table issue d'un type-association many to many. Cette table contient alors les clés de chaque table qui agissent sur elle.

Règle 4.3 : Lors de la migration du relationnel vers le graphe, chaque table de jointure devient une arête, et ne comporte aucune clé comme attribut. Seuls les attributs du type-association dont elle provenait sont maintenus comme attributs de l'arête.

Exemple 4.4 :

En relationnelle, on a les tables suivantes:

Personne

Matricule

Nom

Prenom

001A

Kamingu

Gradi

002B

Pinshi

Jonathan

003C

Kadima

Gloire

004D

Lukelu

L'or

...

...

...

...

...

...

Travailler_a

Matricule

NumRegistre

DateEmbauche

DureeContrat

001A

1

1998

Ind.

002B

1

2003

20 ans

003C

2

2014

10 ans

004D

3

2015

4 ans

...

...

...

...

...

...

...

...

Entreprise

NumRegistre

Libelle

Status

1

Bcorp

SARL

2

Shibagu

SARL

3

Vodacom

SPRL

...

...

...

...

...

...

Figure 4.8: Tables à traduire

: Personne

Matricule : 001A

Nom : Kamingu

Prenom : Gradi

: Entreprise

NumRegistre : 1

Libelle : Bcorp

Statuts : SARL

Travailler_a

DateEmbauche : 1998

DureeContrat : Ind.

: Personne

Matricule : 002B

Nom : Pinshi

Prenom : Jonathan

Travailler_a

DateEmbauche : 2003

DureeContrat : 20 ans

: Personne

Matricule : 003C

Nom : Kadima

Prenom : Gloire

: Personne

Matricule : 004D

Nom : Lukelu

Prenom : L'or

: Entreprise

NumRegistre : 2

Libelle : Shibagu

Statuts : SARL

: Entreprise

NumRegistre : 3

Libelle : Vodacom

Statuts : SPRL

Travailler_a

DateEmbauche : 2014

DureeContrat : 10 ans

Travailler_a

DateEmbauche : 2015

DureeContrat : 4 ans

En graphe, on a :

Figure 4.9: Graphe issu des tables de la figure 4.8

IV.4. ALGORITHME DE MIGRATION DES DONNEES

Pour rappel, un algorithme est une suite finie d'opérations permettant de résoudre un problème donné. Pour ce faire, nous proposons alors l'algorithme suivant permettant de faire la migration des bases de données relationnelles vers les bases des données NoSQL du type graphe.

Algorithme 4.1

1. Début

2. Repérer le Modèle EA

3. Pour tout Type-association

3.1. Chaque type-association dévient une arête

3.2. Les types-associations réflexive engendrent deux noeuds ayant le même étiquette

FinPour

4. Repérer le Modèle physique des données

4.1. Pour Toute Table

4.1.1. Si la Table est une table de jointure Alors

4.1.1.1. La table dévient une arête (cela se justifie parce que ladite table était une relation dans le Modèle EA)

Sinon

4.1.1.2. Chaque ligne de table dévient un noeud dont l'étiquette est le nom de la table ;

4.1.1.3. Chaque colonne de la table dévient un attribut du noeud ;

4.1.1.4. Enlever toutes les clés techniques des tables, ne garder que les clés faisant l'affaire ;

4.1.1.5. Ajouter les index ayant les attributs les plus fréquents ;

4.1.1.6. Supprimer tous les attributs ayant des valeurs par défaut, il n'est pas important d'avoir des valeurs comme NULL dans une base de données graphe.

FinSi

FinPour

5. Ajouter les différentes relations non prises en charge par le modèle relationnel

6. Fin

IV.5. VALIDATION DE L'APPROCHE PAR ETUDE DE CAS

Notre étude se basera sur l'étude d'un réseau des entreprises. Ainsi, ce réseau nous permettra :

· De voir les différentes relations existantes entre les entreprises, les dirigeants des entreprises et les différentes agents des entreprises ;

· de voir toutes les entreprises remplissant une certaine condition ;

IV.5.1. Modélisation relationnelle de la base des données avec le modèle entité-association

L'algorithme commence par le repère du modèle entité-association. Dans le cas de notre modélisation, le modèle entité-association sera alors le suivant :

Figure 4.10: Modèle Entité-Association de l'étude de cas

IV.5.2. Modélisation physique des données

Pour représenter physiquement notre base de données relationnelle, nous avons utilisé le SGBD Microsoft Access, dans sa version 2010 pour sa disponibilité dans l'ordinateur et sa souplesse dans le stockage des données relationnelles. Nous avons donc cinq tables qui sont :

· Table Entreprise


En mode feuille des données, on a :

· Table Relation

· Table Service

· Table Personne

· Table Etre_en_relation

IV.5.3. Migration des donnéesrelationnelles vers données orientées-graphe

Pour quitter du modèle relationnel vers le modèle graphe de notre base de données, nous allons appliquer l'algorithme 4.1. proposé un peu plus haut. Voici alors la trace pour notre application :

1. Début

2. On repère le modèle EA, voir la figure 4.10

3. 3.1. Les relations Relation, Diriger, Travailler, Offrir, Etre_en_relation deviennent des arêtes.

3.2. Les relations réflexives comme Relation et Etre_en_relation vont engendrer respectivement deux noeuds. Pour l'arête Relation, on aura deux noeuds ayant tous les deux comme étiquette Entreprise. Pour l'arête Etre_En_Relation, on aura deux noeuds ayant tous les deux comme étiquette Personne.

4. On repère le MPD explicité au point IV.5.2.

4.1. Relation est une table de jointure, elle ne fera pas objet de devenir un noeud, elle était déjà transformée en arête.

Tous les enregistrements (ou toutes les lignes) deviennent des noeuds. Pour la table Entreprise (en mode feuille des données), les lignes de Denomination BCorp, Vodacom, ..., PariFoot deviennent les noeuds dans notre modèle graphe.

5. On crée un nouvel étiquette Dirigeant qui aura les mêmes attributs que le noeud Personne.

D'où le modèle de graphe attribué se présente alors de la manière suivante :

Est_en_relation

Age

Type_Relation

Travailler

Ancienneté

Type_Contrat

Diriger

Ancienneté

Offrir

Type_Offre

Relation

Type_Relation

Figure 4.11: Modèle de graphe attribué

IV.5.3. Implémentation de la base de données par l'approche Graphe

Nous avons pu implémenter en graphe en mode console notre base de données. Pour l'implémenter, il s'agit d'écrire des requêtes NoSQL du langage Cypher. Ainsi, le langage Cypher est un standard des bases des données orientées-graphe utilisé dans le SGBD orientées-graphe qu'on appelle Neo4j.

Les différentes requêtes du langage Cypher se tapent dans la zone de fermeture qui se présente de la manière suivante :

C'est dans la zone ci-haut que toutes les requêtes Cypher s'écrivent. Chaque requête se trouve sur une ligne qui se nomme automatiquement dès que nous passons d'une ligne à une autre.

Après validation, on aura la feuille des résultats suivants :

Le graphe de la base de données dans la console de Neo4j se présente alors de la manière suivante:

Chaque type de noeud porte une couleur différente des autres.

1. Pour les noeuds de type Entreprise, la couleur est violette ;

2. Pour les noeuds de type Dirigeant, la couleur est grise foncée ;

3. Pour les noeuds de type Personne, la couleur est rouge ;

4. Pour les noeuds de type Service, la couleur est grise-claire.

Les codes-sources de la création de graphe sont alors :

CREATE (d:Dirigerant{Id_Dirigerant:"1001", Prenom:"Coen", Nom:"Fundatela", Sexe:"M",Qualite:"DG"})

CREATE (e1:Entreprise{Id_Entreprise:"10001", Denomination:"BCorp", Date_Creation:"04/09/2015", Siege_Sociale:"Kinshasa/Gombe", Status_Juridique:"SARL"})

CREATE (e2:Entreprise{Id_Entreprise:"10002", Denomination:"Vodacom", Date_Creation:"01/06/1994", Siege_Sociale:"Kinshasa/Gombe",Status_Juridique:"SPRL"})

CREATE (e3:Entreprise{Id_Entreprise:"10003", Denomination:"Sonas", Date_Creation:"01/02/1987", Siege_Sociale:"Kinshasa/Gombe",Status_Juridique:"SA"})

CREATE (e4:Entreprise{Id_Entreprise:"10004", Denomination:"Shibagu Techology", Date_Creation:"11/11/2011", Siege_Sociale:"Kinshasa/Gombe",Status_Juridique:"SARL"})

CREATE (e5:Entreprise{Id_Entreprise:"10005", Denomination:"BCC", Date_Creation:"02/12/1956", Siege_Sociale:"Kinshasa/Gombe",Status_Juridique:"SA"})

CREATE (e6:Entreprise{Id_Entreprise:"10006", Denomination:"SNEL", Date_Creation:"02/12/1956", Siege_Sociale:"Kinshasa/Gombe",Status_Juridique:"SA"})

CREATE (e7:Entreprise{Id_Entreprise:"10007", Denomination:"OCC", Date_Creation:"30/11/1973", Siege_Sociale:"Kinshasa/Gombe",Status_Juridique:"SA"})

CREATE (e8:Entreprise{Id_Entreprise:"10008", Denomination:"DGDA", Date_Creation:"28/12/1976", Siege_Sociale:"Kinshasa/Gombe",Status_Juridique:"SA"})

CREATE (e9:Entreprise{Id_Entreprise:"10009", Denomination:"RTNC", Date_Creation:"05/03/1956", Siege_Sociale:"Kinshasa/Lingwala",Status_Juridique:"SA"})

CREATE (e10:Entreprise{Id_Entreprise:"10010", Denomination:"RTNC 2 Développement", Date_Creation:"15/06/1989", Siege_Sociale:"Kinshasa/Gombe",Status_Juridique:"SA"})

CREATE (e11:Entreprise{Id_Entreprise:"10011", Denomination:"RTNC 3 Institutions", Date_Creation:"15/06/2009", Siege_Sociale:"Kinshasa/Gombe",Status_Juridique:"SA"})

CREATE (e12:Entreprise{Id_Entreprise:"10012", Denomination:"FlechTech", Date_Creation:"28/09/2010", Siege_Sociale:"Kinshasa/Gombe",Status_Juridique:"SARL"})

CREATE (e13:Entreprise{Id_Entreprise:"10013", Denomination:"Paris Foot", Date_Creation:"25/08/2008", Siege_Sociale:"Kinshasa/Gombe",Status_Juridique:"SARL"})

CREATE (s1:Service{Id_Service:"2001", Intitule_Service:"Electricité"})

CREATE (s2:Service{Id_Service:"2002", Intitule_Service:"TIC"})

CREATE (s3:Service{Id_Service:"2003", Intitule_Service:"Radio et Télévision"})

CREATE (s4:Service{Id_Service:"2004", Intitule_Service:"Mécanique"})

CREATE (s5:Service{Id_Service:"2005", Intitule_Service:"Assurance"})

CREATE (s6:Service{Id_Service:"2006", Intitule_Service:"Réseaux des Télécommunications"})

CREATE (s7:Service{Id_Service:"2007", Intitule_Service:"Contrôle"})

CREATE (s8:Service{Id_Service:"2008", Intitule_Service:"Distribution d'Eau"})

CREATE (s9:Service{Id_Service:"2009", Intitule_Service:"Impôts, douanes & assises"})

CREATE (s10:Service{Id_Service:"2010", Intitule_Service:"Banque"})

CREATE (s11:Service{Id_Service:"2011", Intitule_Service:"Industries"})

CREATE (s12:Service{Id_Service:"2012", Intitule_Service:"Aviation"})

CREATE (s13:Service{Id_Service:"2012", Intitule_Service:"Lotterie"})

CREATE (d)-[:Diriger{Anciennete:"5mois"}]->(e)

CREATE (p1:Personne{Id_Personne:"1002", Prenom:"Gradi", Nom:"Kamingu", Sexe:"M",Qualite:"DGA"})

CREATE (p2:Personne{Id_Personne:"1003", Prenom:"Patrick", Nom:"Shungu", Sexe:"M",Qualite:"Directeur Financier"})

CREATE (p3:Personne{Id_Personne:"1004", Prenom:"Bel-Ange", Nom:"Kalonji", Sexe:"F",Qualite:"Conseiller Juridique"})

CREATE (p4:Personne{Id_Personne:"A250", Prenom:"Glodi", Nom:"Kamingu", Sexe:"M",Qualite:"Conseiller Statistiques"})

CREATE (p5:Personne{Id_Personne:"A2880", Prenom:"Jean-Paul", Nom:"Tsasa", Sexe:"M",Qualite:"Rédacteur en Chef"})

CREATE (p6:Personne{Id_Personne:"A5862", Prenom:"Trésor", Nom:"Badibanga", Sexe:"M",Qualite:"Caméraman"})

CREATE (p7:Personne{Id_Personne:"BG586", Prenom:"Aninya", Nom:"NGe", Sexe:"F",Qualite:"Chimiste"})

CREATE (p8:Personne{Id_Personne:"1008", Prenom:"Grace", Nom:"Isolo", Sexe:"F",Qualite:"Secrétaire de Direction"})

CREATE (p9:Personne{Id_Personne:"A2520", Prenom:"Paul", Nom:"Kitenge", Sexe:"M",Qualite:"Analyste-Programmeur"})

CREATE (p10:Personne{Id_Personne:"A2580", Prenom:"Moïse", Nom:"Mbikayi", Sexe:"M",Qualite:"Administrateur Réseaux"})

CREATE (p11:Personne{Id_Personne:"2002", Prenom:"Onyx", Nom:"Mpoy", Sexe:"M",Qualite:"Opérateur de saisie"})

CREATE (p12:Personne{Id_Personne:"2003", Prenom:"Josée", Nom:"Jos", Sexe:"F",Qualite:"Opérateur de Saisie"})

CREATE (p13:Personne{Id_Personne:"2004", Prenom:"Levieux", Nom:"Makizeyika", Sexe:"M",Qualite:"Conseiller stratégique"})

CREATE (p14:Personne{Id_Personne:"B250", Prenom:"Glodia", Nom:"Sassou", Sexe:"F",Qualite:"Conseiller Statistiques"})

CREATE (p15:Personne{Id_Personne:"B2880", Prenom:"John", Nom:"Loledi", Sexe:"M",Qualite:"Marketeur"})

CREATE (p16:Personne{Id_Personne:"B5862", Prenom:"Pupa", Nom:"Balak'opandje", Sexe:"M",Qualite:"Réporteur"})

CREATE (p17:Personne{Id_Personne:"CG586", Prenom:"Anne", Nom:"Mumaka", Sexe:"F",Qualite:"Chimiste"})

CREATE (p18:Personne{Id_Personne:"2008", Prenom:"Rony", Nom:"Bope", Sexe:"M",Qualite:"Statisticien"})

CREATE (p19:Personne{Id_Personne:"B2520", Prenom:"Gloria", Nom:"Mbombo", Sexe:"F",Qualite:"Chimiste"})

CREATE (p20:Personne{Id_Personne:"B2580", Prenom:"Moïse", Nom:"Kabamba", Sexe:"M",Qualite:"Administrateur Système"})

CREATE (p1)-[:Travailler{Anciennete:"5mois", Type_Contrat:"Durée Indeterminée"}]->(e1)

CREATE (p2)-[:Travailler{Anciennete:"5mois", Type_Contrat:"Durée Indeterminée"}]->(e1)

CREATE (p3)-[:Travailler{Anciennete:"5mois", Type_Contrat:"Durée Indeterminée"}]->(e2)

CREATE (p4)-[:Travailler{Anciennete:"2ans", Type_Contrat:"Durée Indeterminée"}]->(e3)

CREATE (p5)-[:Travailler{Anciennete:"15ans", Type_Contrat:"Durée Indeterminée"}]->(e3)

CREATE (p6)-[:Travailler{Anciennete:"5mois", Type_Contrat:"2ans"}]->(e9)

CREATE (p7)-[:Travailler{Anciennete:"2ans", Type_Contrat:"8ans "}]->(e7)

CREATE (p8)-[:Travailler{Anciennete:"6ans", Type_Contrat:"4ans"}]->(e6)

CREATE (p9)-[:Travailler{Anciennete:"20ans", Type_Contrat:"4ans"}]->(e7)

CREATE (p10)-[:Travailler{Anciennete:"1an", Type_Contrat:"4ans"}]->(e13)

CREATE (p11)-[:Travailler{Anciennete:"5mois", Type_Contrat:"Durée Indeterminée"}]->(e3)

CREATE (p12)-[:Travailler{Anciennete:"8mois", Type_Contrat:"Durée Indeterminée"}]->(e10)

CREATE (p13)-[:Travailler{Anciennete:"15ans", Type_Contrat:"Durée Indeterminée"}]->(e3)

CREATE (p14)-[:Travailler{Anciennete:"5mois", Type_Contrat:"2ans"}]->(e1)

CREATE (p15)-[:Travailler{Anciennete:"2ans", Type_Contrat:"8ans "}]->(e2)

CREATE (p16)-[:Travailler{Anciennete:"6ans", Type_Contrat:"4ans"}]->(e3)

CREATE (p17)-[:Travailler{Anciennete:"20ans", Type_Contrat:"4ans"}]->(e7)

CREATE (p18)-[:Travailler{Anciennete:"1an", Type_Contrat:"4ans"}]->(e13)

CREATE (p19)-[:Travailler{Anciennete:"5mois", Type_Contrat:"Durée Indeterminée"}]->(e7)

CREATE (p20)-[:Travailler{Anciennete:"8mois", Type_Contrat:"Durée Indeterminée"}]->(e13)

CREATE (d)-[:Diriger{Anciennete:"5mois"}]->(e1)

CREATE (e1)-[:Offrir]->(s1)

CREATE (e2)-[:Offrir]->(s6)

CREATE (e3)-[:Offrir]->(s5)

CREATE (e4)-[:Offrir]->(s2)

CREATE (e5)-[:Offrir]->(s10)

CREATE (e6)-[:Offrir]->(s1)

CREATE (e7)-[:Offrir]->(s7)

CREATE (e8)-[:Offrir]->(s9)

CREATE (e9)-[:Offrir]->(s3)

CREATE (e10)-[:Offrir]->(s3)

CREATE (e11)-[:Offrir]->(s3)

CREATE (e12)-[:Offrir]->(s2)

CREATE (e13)-[:Offrir]->(s13)

CREATE (e1)-[:Relation{Type_Relation:"Partenariat"}]->(e2)

CREATE (e1)-[:Relation{Type_Relation:"Partenariat"}]->(e5)

CREATE (e12)-[:Relation{Type_Relation:"Partenariat"}]->(e2)

CREATE (e1)-[:Relation{Type_Relation:"Partenariat"}]->(e4)

CREATE (e10)-[:Relation{Type_Relation:"Extension"}]->(e9)

CREATE (e11)-[:Relation{Type_Relation:"Extension"}]->(e9)

CREATE (e5)-[:Relation{Type_Relation:" Partenariat"}]->(e6)

CREATE (e5)-[:Relation{Type_Relation:"Partenariat"}]->(e7)

CREATE (e5)-[:Relation{Type_Relation:"Partenariat"}]->(e8)

CREATE (e5)-[:Relation{Type_Relation:"Partenariat"}]->(e9)

CONCLUSION

Nous voici en fin de notre travail qui a consisté à la proposition d'une approche de migration d'une base des données relationnelles vers une base des données NoSQL orientées-graphe.

Vu l'importance de stockage et des traitements des données dans le support informatique et vu la grande masse des données, il a été question de mettre en oeuvre une approche nous permettant le migrer vers le modèle cible qu'est le modèle graphe.

Cela s'est justifié par le simple fait que les graphes modélisent très facilement et très clairement la réalité et le traitement dévient beaucoup très efficace lorsqu'on utilise les algorithmes de la Théorie des graphes. En effet, les données se sont enregistrées dans les noeuds du graphe et les liens entre ces différentes données par des arêtes.

Sur ce, pour atteindre nos fins, nous avons parlé des généralités sur les graphes et les bases des données au premier chapitre. Au chapitre second, nous avons traité les NoSQL ; ici nous avons parlé des différentes bases des données NoSQL qui existent actuellement graphe qui étaient d'ailleurs le noeud de notre question. Au chapitre troisième, on a parlé des Bases des données orientées-graphe.En dernier chapitre, on a pu proposer une approche permettant de migrer d'une approche relationnelle vers une approche utilisant la théorie des graphes tout en s'appuyant sur une étude de cas à titre illustratif.

Sachant qu'il existe plusieurs technologies permettant de résoudre les problématiques les bases de données orientées-graphe, nous nous sommes permis d'utiliser le système de gestion des bases des données orientées-graphes de la firme Neo4j, qu'on appelle Neo4j.

Dans le souci d'amélioration, nous osons croire que le présent mémoire n'est qu'un début d'un commencement, et nécessite alors plusieurs enrichissements dans les années à venir. Néanmoins, nous n'estimons pas avoir tout fait et tout dit car l'Informatique évolue du jour le jour, mais nous ne croyons simplement que nous avons pu avancer d'un premier pas car, dit « Même un voyage de mille kilomètres commence par le premier pas ».

BIBLIOGRAPHIE

I. OUVRAGES

[BE70] C. Berge : Graphes et hypergraphes, Ed. Dunod, Paris 1970 ;

[BR15] R. BRUCHEZ: Les bases de données NoSQL et le Big Data. Comprendre et mettre oeuvre, 2ème Ed. EYROLLES, Paris, 2015;

[MK10] J.-A.K. MVIBUDULU, L.-D. I. KONKFIE: Technique des bases de données, Etude et cas, 1ère Ed. CRIGED, Kinshasa, janvier 2010;

[WF94] S. WASSERMAN and K. FAUST: Social Network Analysis: Methods and Applications, Cambridge University Press, 1994;

II. NOTES DE COURS

[KM14] P. K. KAFUNDA, L. N. MANYA: Coursde Recherche Opérationnelle Approfondie, Première licence en Informatique de gestion, Département des Mathématiques et Informatique, Faculté des Sciences, Université de Kinshasa, 2013 - 2014;

[MA08] L. N. MANYA: Cours de Recherche Opérationnelle, Troisièmes Graduats en Mathématiques et en Informatique, Département des Mathématiques et Informatique, Faculté des Sciences, Université de Kinshasa, 2007 - 2008;

[MA06] S. M. MAPHANA: Recherche Opérationnelle. Module 1 : Théorie des graphes et ses applications, Premières licences en Sciences de Gestion, Département des Sciences de Gestion, Faculté des Sciences Economiques et de Gestion, Université de Kinshasa, Mai 2006;

[MB12] E. M. MBUYI: Cours d'Informatique appliquée : Base de données, Troisièmes Graduats en Mathématiques et en Informatique, Département des Mathématiques et Informatique, Faculté des Sciences, Université de Kinshasa, 2012 - 2013;

[RI10] M. RIGO: Théorie des Graphes, Deuxièmes bacheliers en sciences mathématiques, Département des Mathématiques, Faculté des Sciences, Université de Liège, 2009 - 2010;

[RWE] I. ROBINSON, J. WEBBER, and EMIL: Graph Databases - The Definitive Book on Graph Databases.

III. ARTICLES, PAPIERS, CONFERENCES

[BA69] C. BACHMAN, «Data Structure Diagrams»,Journal of ACM, SIGBDP Vol. 1, N° 2, pp. 4-10, mars 1969;

[BE06] S. P. BORGATTI and M. G. EVERETT: «A Graph theoretic perspective on centrality. Social Networks», 28(4):466-484, 2006;

[FR79] L. C. FREEMAN: «Centrality in social networks conceptual clarification. Social Networks", 1(3):215-239, 1979;

[FR91] L. C. FREEMAN: «Centrality in valued graphs: A measure of betweenness based on network flow. Social Networks", 13(2):141-154, 1991 ;

[LE14] M. LEONARD : « L'avenir du NoSQL. Quel avenir pour le NoSQL ? , 2014 ;

[RO] M. ROGER : Synthèse d'étude et projets d'interlogiciels. Base NOSQL, IFR IMA ;

[SA] K. SANI : Graph databases : Les bases de données orientées Graphes. Une brève présentation, Etablissement Inter-Etats d'Enseignement Supérieur, Institut Africain d'Informatique ;

[TO12] C. M. TOMBOLA: Construction d'une matrice d'incidence et de la matrice laplacienne : Comment représenter intelligemment un graphe.One pager Laréq, Vol. 4 Num. 005, novembre 2012.

IV. TRAVAILS DE FIN DE CYCLE, MEMOIRES, THESES

[CH10] N.F. CHIKHI : Calcul de centralité et identification de structures de communautés dans les graphes de documents, Thèse de doctorat, spécialité Intelligence Artificielle, Ecole doctorale de Mathématiques Informatique Télécommunications (MITT), Université Toulouse 3 Paul Sabatier, vendredi 17 décembre 2010 ;

[KA13] G. L. KAMINGU: Mise en place d'un système d'information pour la gestion des concours et épreuves spéciales d'entrée. Cas de la Faculté des Sciences de l'Université de Kinshasa,Travail de Fin de Cycle, Département des Mathématiques et Informatique, Faculté des Sciences, Université de Kinshasa, 2012 - 2013;

[KL13] A. KHATIR, I. LABBAS : Conception et réalisation d'un réseau social,Mémoire de Fin d'Etudes Master, Option : Réseaux et systèmes distribués, Département d'informatique, Faculté des Sciences, Université Abou Bakr Belkiad-Tlemcen, 2012 - 2013;

[KO12] E. KOUEDI : Approche de migration d'une base de données relationnelles vers une base de données NoSQL orientée colonne, Mémoire de Master II Recherche, Département d'Informatique, Faculté des Sciences, Université de Yaounde I, Mai 2012 ;

[MA04] F. MATHIEU : Graphe du Web, mesure d'importance à la PageRank, Thèse de doctorat, Spécialité : Informatique, Ecole doctorale d'Information, Structures, Systèmes, Université Montpellier II Sciences et Technique du Languedoc, 2004 ;

[TR13] N. TROTIGNON: Graphes parfaits : structure et algorithmes, Thèse de doctorat, Spécialité : Mathématiques Informatique, Ecole doctorale de Recherche Opérationnelle, Combinatoire et Optimisation, Université Grenoble 1 Joseph Fourrier, 28 septembre 2004.

V. SITES WEB, BLOGS, FORUMS

[Dboo] http://www.d-booker.fr/neo4j-1/156-prise-en-main.html(04/10/2015)

[Gisp] http://gist.neo4j.org(04/10/2015)

[Grap] http://www.graphes.fr/(04/10/2015)

[Img] http://www-img.univ-mlv.fr/~dr/XPOSE2010/Cassandra/modèle.html(08/12/2015)

[Neo] http://www.neo4j.org/(04/10/2015)

[Octo] http://blog.octo.com/author/mdo/ (Bases de données graphes : un tour d'horizon.(04/10/2015)

[Wika] http://wiki.apache.org/couchedb (07/10/2015)

[Wiki1] http://fr.wikipedia.org/Algorithme_de_Dijskstra (18/01/2016)

[Wiki2] http://en.wikipedia.org/wiki/Nosql(18/01/2016)

[Wiki3] http://en.wikipedia.org/wiki/Graph_database(18/01/2016)

[Wiki4] http://en.wikipedia.org/wiki/Document-oriented_database(18/01/2016)

[Wiki5] http://en.wikipedia.org/wiki/Column-oriented_DBMS(18/01/2016)

[Wiki6] http://en.wikipedia.org/wiki/Relational_database(18/01/2016)

TABLE DES MATIERES

Epigraphie ii

In memoriam iii

Remerciements iv

Liste des abréviations utilisées vi

Liste des notations vii

0. INTRODUCTION 1

Chapitre 1: GENERALITES SUR LES BASES DE DONNEES ET LES GRAPHES 3

I.1. BASE DE DONNEES 3

I.1.1. Définition de la base de données 3

I.1.2. Critères d'une base de données 4

I.1.3. Types d'utilisateurs 4

I.4.1. Types de base de données 4

I.1.4.1. Base de données hiérarchique 4

I.1.4.2. Base de données réseau 5

I.4.1.3. Base de données relationnelle 6

I.4.1.4. Base de données orientées-objet 6

I.1.4.5. Base de données orientées-colonne 7

I.1.4.6. Base de données orientées-graphe 7

I.1.4.7. Base de données orientées-clé-valeur 7

I.1.4.8. Base de données orientées-document 7

I.2. GRAPHES 8

I.2.1. Définition d'un graphe 8

I.2.2. Graphe complet 11

I.2.3. Graphe biparti 11

I.2.4. Connexité 13

I.2.5. Distances 15

1.2.6. Graphe planaire 16

I.2.7. Graphe pondéré - Réseau - Réseau de transport 18

I.2.8. Problème de Cheminement optimale 19

1.2.9. Calcul de centralité [CH10] 21

I.3. IMPORTANCE DE LA THEORIE DES GRAPHES EN BASE DE DONNEES 26

CHAPITRE 2 : NOSQL 28

II.1. TERMINOLOGIE 29

II.2. CONCEPTS DE BASE 29

II.2.1. Théorème du CAP (d'Eric Brewer) 29

II.2.2. Principes ACID et BASE 30

II.3. CRITERES DE MIGRATION VERS LE NOSQL 32

II.4. CRITERES DE CHOIX POUR MIEUX CHOISIR LE TYPE DE BASE DE DONNEES [LE14] 33

II.5. DEFIS MAJEURS DES NOSQL [KO12] 35

II.5.1. Maturité et stabilité 36

II.5.2. Assistance et maintenance 36

II.5.3. Outils d'analyse et administration 36

II.5.4 Expertise 37

CHAPITRE 3 : BASE DE DONNEES ORIENTEES-GRAPHE 38

III.1. VUE GLOBALE 38

III.1.1. Définition 38

III.1.2. Puissance des bases de données orientées-graphe 39

III.1.3. Cas d'usage des bases de données orientées-graphe 40

III.2. OUTILS DES BASES DE DONNEES ORIENTEES-GRAPHE 41

III.3. COMPARAISON DE BASE DE DONNEES ORIENTEES-GRAPHE AVEC LES AUTRES BASES DE DONNEES 42

II.3.1. Comparaison avec les bases de données relationnelles 42

II.3.2. Comparaison avec les bases de données réseaux 44

III.4. MODELISATION 46

III.5. SYSTEME DE GESTION DES DONNEES ORIENTEES-GRAPHE : NEO4J 47

III.5.1. Qu'est-ce que Neo4j ? 47

III.5.2. Caractéristiques de Neo4j 47

III.5.3. Installation rapide de Neo4j 47

III.5.4. Lancement de Neo4j 48

III.5.5. Test d'installation de Neo4j 48

CHAPITRE 4 : APPLICATION 49

IV.1. PRESENTATION DE L'APPROCHE 49

IV.1.1. Introduction 49

IV.1.2. Modèle de données source 50

IV.1.3. Modèle de données cible 52

IV.3. TRADUCTION DU MODELE DE DONNEES SOURCE VERS LE MODELE DE DONNEES CIBLES 53

IV.3.1. Traduction des types-entités (ou tables) 53

IV.3.2. Traduction des enregistrements (lignes) d'une table d'entité 54

IV.3.3. Traduction de la table de jointure 54

IV.4. ALGORITHME DE MIGRATION DES DONNEES 56

IV.5. VALIDATION DE L'APPROCHE PAR ETUDE DE CAS 57

IV.5.1. Modélisation relationnelle de la base des données avec le modèle entité-association 57

IV.5.2. Modélisation physique des données 58

IV.5.3. Migration des données relationnelles vers données orientées-graphe 60

IV.5.3. Implémentation de la base de données par l'approche Graphe 61

CONCLUSION 66

BIBLIOGRAPHIE 67

* 1 Ce nom est un  acronyme récursif qui signifie en anglais « GNU's Not UNIX » (littéralement, « GNU n'est pas UNIX »).

* 2 Les notions d'entités et de type-entités seront abordées d'une manière claire au chapitre 4

* 3 C'est un point d'un système informatique dont le reste du système est dépendant et dont une panne entraîne l'arrêt complet du système.






Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy








"En amour, en art, en politique, il faut nous arranger pour que notre légèreté pèse lourd dans la balance."   Sacha Guitry