NEO4J L'équipe Shaima Ben Cheikh Shaima Barhoumi Plan De Travail SGBD NOSQL ● D
NEO4J L'équipe Shaima Ben Cheikh Shaima Barhoumi Plan De Travail SGBD NOSQL ● Définition ● Les types NOSQL orienté Graphe ● Définition ● CAP: Acid vs Base ● Sharding ● Quelques base de NOSQL orienté graphe NEO4J ● Définition ● historique ● Exemples d’usages neo4j ● Les caractéristiques de neo4j ● Forces et Faiblesses ● Installation et lancement de neo4j ● Exemple Simple SGBD NOSQL Définition NoSQL est une approche de la conception de bases de données qui peut s’adapter à une grande variété de modèles de données, y compris les formats avec des clés, des documents, des colonnes et des graphiques (Graph Database). NoSQL, qui signifie « not only SQL », est une alternative à la base de donnée relationnelle traditionnelles dans lesquelles les données sont placées dans des tables et le schéma de données est soigneusement conçu avant la construction de la base de données. Les bases de données NoSQL sont particulièrement utiles pour travailler avec de grands ensembles de données distribuées. Les Types 1. NoSQL Orienté Clé /Valeur 2. NoSQL Orienté Colonnes 3. NoSQL Orienté Documents 4. NoSQL Orienté Graphe NOSQL orienté graphe 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. CAP: Acid vs Base ACID : Pour mettre en rapport les problématiques de la base de données relationnelle, on parle de propriétés ACID pour les transactions (séquences d'opérations/requêtes) : ● Atomicité : Une transaction s’effectue entièrement ou pas du tout ● Cohérence : Le contenu d’une base doit être cohérent au début et à la fin d’une transaction ● Isolation : Les modifications d’une transaction ne sont visibles/modifiables que quand celle-ci a été validée ● Durabilité : Une fois la transaction validée, l’état de la base est permanent (non affecté par les pannes ou autre) CAP: Acid vs Base BASE :Du coup, les propriétés BASE ont été proposées pour caractériser les bases NoSQL : ● Basically Available : quelle que soit la charge de la base de données (données/requêtes), le système garantie un taux de disponibilité de la donnée ● Soft-state : La base peut changer lors des mises à jour ou lors d'ajout/suppression de serveurs. La base NoSQL n'a pas à être cohérente à tout instant ● Eventually consistent : À terme, la base atteindra un état cohérent CAP: Acid vs Base Théorème de CAP : un théorème très intéressant reposant sur 3 propriétés fondamentales pour caractériser les bases de données (relationnelles, NoSQL et autres) : 1. Consistency (Cohérence) : Une donnée n'a qu'un seul état visible quel que soit le nombre de réplicas 2. Availability (Disponibilité) : Tant que le système tourne (distribué ou non), la donnée doit être disponible 3. Partition Tolerance (Distribution) : Quel que soit le nombre de serveurs, toute requête doit fournir un résultat correct Dans toute base de données, vous ne pouvez respecter au plus que 2 propriétés parmi la cohérence, la disponibilité et la distribution ( CA OU CP OU AP ). CAP: Acid vs Base Sharding le sharding est une méthode qui permet de partitionner un ensemble de données venant d’une même base de données. On fractionne ainsi notre base de données en plusieurs sous-ensembles de données également appelées « datasets ». Il existe deux principales méthodes de sharding ou partitionnement : le partitionnement horizontal et le partitionnement vertical. Sharding le partitionnement horizontal : permet de séparer les lignes et de les stocker dans différents serveurs. Considérons l’exemple d’une chaîne de magasins qui possède une base de données de ses clients et leurs produits achetés. Le schéma suivant représente un partitionnement horizontal. Dans le premier fragment, nous avons toutes les informations concernant les produits qui coûtent moins de 100€ alors que dans le deuxième, nous avons les informations concernant les produits qui coûtent plus de 100€. Sharding le partitionnement vertical : quant à lui permet de séparer les colonnes et de les stocker dans différents serveurs. En reprenant l’exemple précédent, nous pouvons également effectuer un partitionnement vertical. Le premier fragment contiendra les informations personnelles d’un utilisateur alors que le deuxième fragment contiendra les informations sur les produits achetés. Quelques base de NOSQL orienté graphe NEO4J Définition: Neo4j est l’une des base de données leader sur le marché du stockage des données au format graphe. Elle enregistre les données sous un format objet représenté comme un nœud et les lie ensemble avec des arêtes. Historique: Neo4j est un système de gestion de base de données au code source libre basé sur les graphes, développé en Java , par la société suédo-américaine Neo technology. Le produit existe depuis 2000, la version 1.0 est sortie en février. Exemple d’usage neo4j: Logistique : calculer le meilleur chemin pour livrer un client Social, collaboration : rechercher très facilement qui sont les amis de mes amis Droits d’accès : gestion des groupes, utilisateurs et droits rapidement et sans redondance . . . les caractéristiques de neo4j : ●Neo4j intègre son propre langage de requêtage , le Cypher ●La possibilité d'exécuter plusieurs millions de requêtes par seconde sur des relations entre noeuds ●Fonctionnement en cluster possible (peut répartir la charge sur plusieurs serveur ●ACID : propriétés qui garantissent une transaction informatique fiable Forces et Faiblesses: Forces Faiblesses open source work in progress : le système n`est pas forcément complet mais évolue vite! un moteur puissant accessible facilement. il n’est pas évident dans l'interface de base de rendre les graphes dynamiques Système de requêtage plus plaisant que le SQL oblige à architecturer correctement les modèles de données Simplicité de mise en place Stockage d’objets complexes Installation et lancement de neo4j: Nous allons ici installer la version Community de Neo4J, je vous invite à vous rendre sur cette page pour télécharger la version correspondante à votre système. https://neo4j.com/download/ Vous retrouverez également sur cette page les différentes instructions d’installation et de mise en place pour que votre installation soit fonctionnelle. Installation et lancement de neo4j: Installation et lancement de neo4j: Installation et lancement de neo4j: Installation et lancement de neo4j: Installation et lancement de neo4j: Installation et lancement de neo4j: Exemple Simple : L’exemple Staff → Company Nous allons partir de l’exemple présenté précédemment qui lie un employé avec une entreprise. Dans un premier temps nous allons définir nos nœuds comme ceci : Exemple Simple : L’exemple Staff → Company Nous allons maintenant transposer ces nœuds en langage Cypher utilisé pour écrire nos requêtes au sein de Neo4J. CREATE (Theo:Staff {title:'Theo', joined:2014, job: 'Developer', city: 'Nantes'}) CREATE (Jon:Staff {title:'Jonathan', joined:2013, job: 'Project Manager', city: 'Lille'}) CREATE (Synbioz:Company {name:'Synbioz', born:2007}) Exemple Simple : L’exemple Staff → Company ajouter les relations qui lient Synbioz à Jon et Theo: MATCH (n:Staff) MATCH (m:Company {name: 'Synbioz'}) CREATE (n)-[:WORK_IN]->(m) Exemple Simple : L’exemple Staff → Company Voici le rendu que nous devrions avoir: MERCI uploads/Ingenierie_Lourd/ expertise-conseil.pdf
Documents similaires
-
21
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Aoû 21, 2022
- Catégorie Heavy Engineering/...
- Langue French
- Taille du fichier 1.1590MB