THEME 5: BASES DE DONNEES ORIENTEES GRAPHE IMAGE de base de données orientée gr
THEME 5: BASES DE DONNEES ORIENTEES GRAPHE IMAGE de base de données orientée graphe Introduction I-Concepts généraux II-Base de Données Orientées Graphe III-Etude de NeO4J IV-Langage CYPHER V-Modélisation VI-Forces et Faiblesses PLAN INTRODUCTION • C o n c e p t d e c o n n e x i o n omniprésent • Réseaux sociaux, internet, biologie, transports… • Modèle d’analyse des bases de données NoSQL basé sur les agrégats • Stocker des entités connectées est un challenge non adressé ni par les SGBD relationnels, ni par les bases NoSQL Les graphes permettent une modélisation naturelle des relations entre entités. De la difficulté des BD NoSQL pour modéliser les relations. • Stockage indépendant des documents/valeurs/colonnes • A j o u t d e re l a t i o n s p a r l’imbrication • Requiert des jointures au niveau application Pertinence des graphes pour modéliser les relations • Les graphes représentent une voie naturelle pour modéliser des relations • Possibilité de : • Ajouter une sémantique aux relations • Typer les nœuds • Définir des attributs sur les nœuds et les liens • Grande flexibilité I-Concepts generaux Les BD orientées graphe introduisent généralement les concepts de : • Noeud : une entité • Label : permet de regrouper des nœuds entre eux • Relation : matérialise un lien (dirigé) entre deux nœuds, possède un type • Propriétés : un nœud ou une relation peuvent disposer de propriétés (numériques, chaînes de caractères, booléens ou une liste des précédents types EXEMPLE Qu’est ce qu’une base de donnée orientée graphe ? Par définition, une base de données orientée graphe correspond à un système de stockage capable de fournir une adjacence entre éléments voisins : chaque voisin d'une entité est accessible grâce à un pointeur physique. C'est une base de données orientée objet adaptée à l'exploitation des structures de données de type graphe ou dérivée, comme des arbres. Avantage des bases de données orientée graphe Performances accrues : • Traiter des données fortement connectées en évitant les multiples jointures très coûteuses qu'il faudrait mettre en œuvre dans les bases de données relationnelles traditionnelles et ainsi permettre des mises à jour très performantes, même pour un très grand ensemble de données. • Offrir de meilleures performances en termes de rapidité de temps de réponse pour les lectures locales, par parcours de graphe. Avantage des bases de données orientée graphe Développements simples : • L'utilisation de langages de requêtes tels que Cypher ou Gremlin destinés au traitement des données connectées facilite les développements. Par exemple, la recherche d'amis prend une seule ligne de code en Cypher. Avantage des bases de données orientée graphe Modélisation facile : • Gérer facilement un modèle complexe puisque la base de données ne s'appuie pas sur un schéma rigide. • Permettre une modélisation parfois plus naturelle et plus lisible selon le cas d'utilisation. • Découverte de nouveaux cas d'usages par une représentation naturelle des données. Comparaison • Bases de données relationnelles. Les bases de données relationnelles sont plus adaptées à des requêtes de type "trouver toutes les entités de type X" grâce aux structures internes des tables. Cela est d'autant plus vrai lorsqu'il s'agit de réaliser des opérations d’agrégation sur toutes les lignes d'une table. • En revanche, elles sont moins efficaces sur l'exploitation des relations, car ceci nécessite une mise en place d'index. Comme cela a été dit plus tôt, les bases de données orientées graphes permettent de parcourir les relations grâce à des pointeurs physiques, ce qui n'est pas le cas des clefs étrangères (des bases relationnelles) qui offrent uniquement des pointeurs logiques. CARACTERISTIQUES • Stockage optimisé pour données de type graphe • Permet de traverser le graphe aisément • Optimisé pour les requêtes orientées voisinage • Modèle de données flexible Principaux domaines applicatifs • Recommandation • Réseaux sociaux • Monitoring • Détection de fraudes Exemple de transformation de base de données relationnelles a base de données graphe QUELQUES EXEMPLES DE BASE DE DONNEES ORIENTES GRAPHE Neo4J • Licence GPL, ACID compliant, basé sur Java Infinite Graph • Propriétaire (Objectivity), passage à l’échelle virtuellement illimité, utilisé à la CIA et au département de la défense américain AllegroGraph • Propriétaire (Franz Inc.), linked data et Web sémantique, supporte SPARQL, RDFS++ et Prolog FlockDB • Créé par Twitter, pas de version stable, requêtes limitées POURQUOI LES BASES DE DONNEES ORIENTES GRAPHES? • Problèmes avec des jointures • Evolution constante du jeu de données • Modélisation naturelle des données sous forme de graphes • Pour des développements rapides et itératifs QUELQUES NOMS IMPORTANTES D’ENTREPRISES UTILISANT DES BASES DE DONNEES GRAPHES: • Microsoft (Microsoft Graph) • Twitter • Facebook (Facebook Graph) • Google (Knowledge Graph) Etude de neo4j C’est un Logiciel libre (licence GLPv3), Java, projet initié en 2000 (version 1.0 en 2010), une des BD graphes les plus évoluées et les plus robustes Principales caractéristiques • Transaction : c'est une base de données transactionnelle, respectueuse des principes ACID • Haute disponibilité : via la mise en place d'un cluster • Volumétrie : stocker et requêter des milliards de nœuds et de relations • Cypher : un langage de requête graphe déclaratif, simple et efficace • Schemaless : pas de schéma préétabli Architecture • Plusieurs fichiers sont physiquement utilisés pour le stockage • Données stockées comme des listes d’enregistrements liées • Nœuds, propriétés et relations sont stockés séparément PHOTO d’illustration COHERENCE • Isolation des opérations concurrentes jusqu’à complétion • Tri des opérations « écriture » pour assurer un ordre de mise à jour prévisible • Ecritures stockées dans le log de transaction de manière ordonnée • Application des modifications dans les fichiers de données • Changements stockés jusqu’à la fin de la transaction • Processus de récupération : ré-application du log de transaction High Availability (HA) • Réplication des données à travers différents serveurs • Architecture maître / esclaves : • Redondance des données • Tolérance à la faute • Protocole d’élection du maître • Une majorité de serveurs doivent être opérationnels pour effectuer une écriture • Transactions d’abord sur le maître • Génération d’un identifiant • Appliquées ensuite aux esclaves • Mise à jour entraîne un retard (eventual consistency) • Transactions chez les esclaves: • Verrous coordonnés par le maître • Même identifiant que pour le maître • Réplication des données à travers différents serveurs • Architecture maitre / esclaves : • Redondance des données • Tolérance à la faute • Protocole d’élection du maître • Une majorité de serveurs doivent être opérationnel pour effectuer une écriture Réplication et performance en lecture Replication • Graphe répliqué entièrement sur chaque serveur • Aucune limitation sur la taille des graphes • Lecture possible sur tous les nœuds du cluster Performances en lecture • Capacité de lecture augmente linéairement avec la taille du cluster • Taille du graphe n’impacte pas sur les performances (≠BDR) • Cache-based sharing: • Routage consistant des requêtes pour optimiser utilisation de la RAM • Langage déclaratif pour formuler des requêtes sur des graphes • Permet d’interroger et/ou mettre à jour le graphe • Chaque partie de la requête doit être « écriture » ou « lecture » seulement • Une requête = plusieurs clauses • Transactions : plusieurs requêtes possibles • Variables, expressions, opérateurs, commentaires • Collections (liste, dictionnaire) • Ensemble de fonctions natives (collections, agrégation, chaînes de caractères, maths) Spécification de structures de graphes via des motifs Nœud • Nœud anonyme : () • Nœud nommé : (x) • Nœud avec un label spécifique : (:label) IV-Langage cypher Relation • Relation anonyme: -[]-> • Relation nommée : -[r]-> • Relation nommée avec un label spécifique : -[r:t]-> • 2 nœuds avec une relation : (a)-[r]->(b) • Les propriétés peuvent être spécifiées via {}, e.g., (x {city: ‘’Chicago’’}) • Un motif peut combiner plusieurs nœuds et relations Ecriture • CREATE : crée un nœud ou une relation • MERGE : crée et utilise un motif (combinaison de CREATE et MATCH) • SET : modifie/ajoute des données/labels • REMOVE : supprime des labels et des propriétés • DELETE : supprime des éléments du graphe • FOREACH <col> I <co>: met à jour les données d’une collection Lecture • LOAD CSV : charge un fichier de données • MATCH : recherche un élément et retourne une table ou un sous-graphe • DISTINCT : élimine la redondance • OPTIONAL MATCH : relation optionnelle (jointure externe en SQL) • WHERE : sélection • Supporte les expressions régulières sur les chaînes • Fonctions d’agrégation : • Regroupement automatique de toutes les colonnes non agrégées • SUM, AVG, COUNT • COUNT(*), COUNT(DISTINCT X) • COLLECT(X) : crée une liste de toutes les valeurs Example de code cypher Clauses générales • RETURN : retourne le sous-graphe ou la table • AS x : renomme une colonne • ORDER BY x (ASC | DESC) : tri • SKIP, LIMIT X : pagination • UNION : composition d’expressions • WITH : permet de séparer les expressions • Retrouver les top nœuds d’après un critère PUIS faire une jointure • Pour combiner des opérations de lecture et uploads/Philosophie/ orient-db 1 .pdf
Documents similaires
-
16
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Mai 29, 2021
- Catégorie Philosophy / Philo...
- Langue French
- Taille du fichier 0.3867MB