Académique Documents
Professionnel Documents
Culture Documents
Matière:
Enseignant:
NoSQL gère les défis d'échelle et d'agilité auxquels vous pouvez être
confrontés dans les applications modernes, en particulier celles qui
traitent de gros volumes de données en évolution rapide. Ces
demandes existent dans tous les domaines verticaux et applicatifs de
l'industrie, y compris l'IoT, l'analyse des utilisateurs, la
personnalisation, la technologie publicitaire, le commerce
électronique, les jeux et les réseaux sociaux.
b) Différences entre NoSQL et SQL
À un niveau élevé, les bases de données NoSQL et SQL présentent de
nombreuses similitudes.
En plus de prendre en charge le stockage de données et les requêtes,
ils permettent également de récupérer, de mettre à jour et de supprimer
des données stockées. Cependant, sous la surface se cachent des
différences significatives qui affectent les performances, l'évolutivité
et la flexibilité de NoSQL par rapport à SQL.
Voici quelques-unes des principales différences entre les bases de
données SQL et NoSQL :
Structure
Les bases de données SQL sont basées sur des tables, tandis que les
bases de données NoSQL peuvent être orientées document, des paires
clé-valeur ou des structures graphiques. Dans une base de données
NoSQL, un document peut contenir des paires clé-valeur, qui peuvent
ensuite être triées et imbriquées.
Évolutivité
Les bases de données SQL évoluent verticalement, généralement sur
un seul serveur, et obligent les utilisateurs à augmenter le matériel
physique pour augmenter leurs capacités de stockage. En effet, bien
que des options de stockage dans le cloud soient disponibles, les bases
de données SQL peuvent être d'un coût prohibitif pour les entreprises
lorsqu'elles traitent de grandes quantités de données volumineuses.
Les bases de données NoSQL offrent une évolutivité horizontale, ce
qui signifie qu'il suffit d'ajouter plus de serveurs pour augmenter leur
charge de données. Cela signifie que les bases de données NoSQL
conviennent mieux aux infrastructures modernes basées sur le cloud,
qui offrent des ressources distribuées.
Langue
Les bases de données SQL utilisent SQL (Structured Query
Language). Les bases de données NoSQL utilisent JSON (JavaScript
Object Notation), XML, YAML ou un schéma binaire, facilitant les
données non structurées. SQL a un schéma à définition fixe, tandis
que les bases de données NoSQL sont plus flexibles.
Support
SQL est un langage standard populaire qui est bien pris en charge par
de nombreux systèmes de bases de données différents, tandis que
NoSQL a différents niveaux de prise en charge dans divers systèmes
de bases de données.
En ce qui concerne le support, vous constaterez généralement que plus
d'aide est disponible pour les bases de données SQL que NoSQL. En
effet, SQL est une technologie plus établie et compte donc beaucoup
plus d'utilisateurs et de développeurs qui peuvent vous aider à
résoudre vos problèmes. En revanche, NoSQL est encore relativement
nouveau, avec moins d'aide disponible sur les forums ou via la
communauté. Vos options d'assistance peuvent être limitées si vous
rencontrez des difficultés pour l'utiliser.
Avantages et inconvénients de SQL
SQL est la lingua franca des données. C'est le langage que vous
utiliserez le plus pour interroger des bases de données et déplacer des
données structurées entre des applications traditionnelles. C'est un
langage puissant qui peut vous aider à faire de nombreuses choses
liées aux données, mais qui présente également certains inconvénients.
Voici quelques avantages et inconvénients de l'utilisation de SQL pour
le stockage et la récupération de données.
Avantages de SQL :
✔ SQL est largement compris et pris en charge ; la plupart des
développeurs le savent bien.
✔ SQL est extrêmement utile pour les agrégations simples sur
de grands ensembles de données, telles que le calcul de
moyennes.
✔ SQL est extrêmement utile pour configurer des tâches ETL
simples, en particulier si les formats d'entrée et de sortie sont des
bases de données relationnelles.
✔ SQL est bien documenté et facile à apprendre.
Inconvénients de SQL:
✗ Les performances de SQL peuvent être médiocres sur des
ensembles de données substantiels car il nécessite plusieurs
passages sur les données pour effectuer de nombreuses
opérations (en particulier les jointures).
✗ Le débogage SQL peut être compliqué car il ne fournit pas de
messages d'erreur informatifs.
✗ La syntaxe de SQL a tendance à être verbeuse par rapport aux
langages de programmation comme Python ou R, ce qui rend
plus difficile l'écriture de transformations complexes sous forme
de scripts ou de fonctions.
Avantages et inconvénients de NoSQL
Un avantage important de NoSQL est que vous n'avez pas à définir de
schéma à l'avance (ou jamais). Cela facilite l'ajout de nouvelles
colonnes sans traiter tous les problèmes liés à la modification d'une
vaste table contenant déjà de nombreuses données. Cela signifie
également que si vos requêtes ne nécessitent pas SQL, vous pouvez
éviter les frais généraux liés à l'analyse et à la compilation des
instructions SQL, à la modélisation et au stockage, ce qui améliore
considérablement les performances lorsque vous traitez de grandes
quantités de données.
Cependant, NoSQL est moins mature que SQL. Voici un aperçu des
avantages et des inconvénients de NoSQL.
Avantages de NoSQL :
✔ Schéma flexible
✔ Utilisable sur les plates-formes d'infrastructure
✔ distribuée Infrastructure à faible coût
✔ Disponibilité et débit élevés
Inconvénients de NoSQL :
✔ Technologie moins mature et difficile à gérer
✔ Capacités de requête limitées
✔ Incohérence des données et performances médiocres dans
certains scénarios complexes
Table Book
#isbn #title #author
2212121504 Scenari 1
2212141556 NoSQL 2
Table Author
#id surname firstname
1
2 Bruchez Rudi
1 date
01/01/16
date books
2 01/01/16 2212141556
Family Book
#isbn
title
2212121504 Scenari
Collection Book
#oid
"isbn" : 2212121504
4d040766076 "title" : "Scenari"
6b236450b45
a5
"isbn" : 2212141556
"title" : "NoSQL"
4d040766076
"author" : {
6b236450b45
"surname" : Bruchez
a6
"firstname" : Rudi
}
Exemple : Représentation de ventes en document (avec
imbrication redondante)
Collection Sales
#oid
"ticket" : 1
"date" : "01/01/16"
"books" : [
{
"isbn" : 2212121504
"title" : "Scenari"
}
4d040766076
{
6b236450b45
"isbn" : 2212141556
a3
"title" : "NoSQL"
"author" : {
"surname" : Bruchez
"firstname" : Rudi
}
}
]
"ticket" : 2
"date" : "01/01/16"
"books" : [
{
"isbn" : 2212141556
4d040766076
"title" : "NoSQL"
6b236450b45
"author" : {
a4
"surname" : Bruchez
"firstname" : Rudi
}
}
]
Classe Book
#oid
4d040766076 property title : Scenari
6b236450b45
a5
Classe Author
#oid
4d040766076 property surname : Bruchez
6b236450b45 property firstnam : Rudi
a8
➔ Une
collection
est un
ensemble
de
documents. C’est comme une table dans une base de
données relationnelle. Les collections se trouvent dans une
base de données.
Dddd
gestion des historiques d’utilisateurs sur CouchBase (Apache, Hadoop) : AT&T, Disney,
réseaux sociaux PayPal
Modèle relationnel:
Modèle orienté colonnes: seules les valeurs non nulles sont stockées
Les types d’application aux bases de données NoSQL de type orienté vers
colonnes
f) NoSQL de type Graphe
Les structures graphiques ont pu être représentées dans des bases de données de
modèles de réseaux à partir de la fin des années 1960. (le NoSQL, n’est pas
nouveau) .Dès le milieu des années 1980, les graphiques étiquetés pouvaient être
représentées dans des graphic databases, comme le modèle logique
de données.
Il existe plusieurs types de graphiques qui peuvent être classés par catégories: .
• Graphique social : il s'agit des liens entre les personnes ; par exemple,
Facebook, Twitter et l'idée de
six degrés de séparation.
• Graphique d'intention : il traite du raisonnement et de la motivation. (détection
de Fraude)
• Graphique de consommation : également appelé "graphique de paiement", le
graphique de
consommation est très utilisé dans le secteur du commerce de détail pour suivre
la consommation des
clients individuels.
• Graphique des intérêts : ce graphique représente les intérêts d'une personne et
est souvent complété par un graphique social.
Dans la base orientée graphe, les données stockées sont : les nœuds, les liens et
des propriétés sur ces nœuds et ces liens. Les requêtes que l'on peut exprimer sont
basées sur la gestion de chemins, de propagations, d'agrégations, voire de
recommandations.
Les nœuds sont identifiés de manière unique. Ce type de stockage n’est pas
évident les graphes suivants montrent un exemple de graphe pour un réseau
social. Au vu des personnes (nœuds) et de leurs relations (périphéries), vous
pouvez déterminer qui sont les « amis des amis » d'une certaine personne : par
exemple, les amis des amis d'Howard.
Les types d’application aux bases de données NoSQL de type graphique
Types d’applications:
• Relations entre utilisateurs dans les réseaux sociaux (Twitter ou Instagram)
• Analyse du comportement d'achat des clients dans les magasins en ligne
• L'analyse des risques, la détection des fraudes et la recherche de pannes.
BD Connues:
• Neo4j (open source)
• FlockDB (Twitter)
• OrientDB (Appache)
• Oracle NoSQL
Définition : Introduction
JSON est un format de représentation logique de données, hérité de la
syntaxe de création d'objets en JavaScript.
C'est un format réputé léger (il ne contient pas trop de caractères de
structuration), assez facilement lisible par les humains, facilement
parsable par les machines, et indépendant des langages qui l'utilisent (sa
seule fonction est de décrire des données, qui sont ensuite utilisées
différemment pour chaque cas suivant le contexte).
1 {
2 "nom" : "Norris",
3
4 "prenom" : "Chuck", "age" : 73,
5 "etat" : "Oklahoma"
6
7
8
}
Attention : JSON est Indépendant de tout langage
Bien que JSON puise sa syntaxe du JavaScript, il est indépendant de tout
langage de programmation. Il peut ainsi être interprété par tout langage à
l'aide d'un parser.
Complément : extension
Un fichier au format JSON à pour extension .json .
➔ Il ne doit exister qu'un seul élément père par document contenant tous
les autres un élément racine.
➔ Tout fichier JSON bien formé doit être :
- soit un objet commençant par { et se terminant par },
- soit un tableau commençant par [ et terminant par ].
Cependant ils peuvent être vides, ainsi [] et {} sont des JSON valides.
➔ Les séparateurs utilisés entre deux paires/valeurs sont des virgules.
➔ Un objet JSON peut contenir d'autres objets JSON.
➔ Il ne peut pas y avoir d'éléments croisés.
Chargement asynchrones :
Avec la montée en flèche des chargements asynchrones tels que l'AJAX
(Asynchronous JavaScript And XML) dans le web actuel (qui ne
provoquent pas le rechargement total de la page), il est devenu de plus en
plus important de pouvoir charger des données organisées, de manière
rapide et efficace.
Avec XML, le format JSON s'est montré adapté à ce type de besoin
Les APIs :
Des sociétés telles que Twitter, Facebook ou LinkedIn, offrent
essentiellement des services
basés sur l'échange d'informations, et font preuve d'un intérêt grandissant
envers les moyens possibles pour distribuer ces données à des tiers.
Alors qu'il n'y a pas de domination totale d'un des deux formats (JSON ou
XML) dans le domaine des APIs, on constate toutefois que JSON est en
train de prendre le pas là où le format XML avait été pionnier.
SQL MongoDB
base de données et/ou schéma base de données
table collection
enregistrement document
attribut (atomique) propriété (chaîne, entier, tableau,
structure)
Tableau 1 Comparaison SQL / MongoDB
Schema-less
C'est une base schema-less, aussi une collection peut contenir des
documents de structures différentes et il n'est pas possible de définir la
structure a priori d'une collection. La structure d'une collection n'est donc
définie que par les document qui la compose, et elle peut évoluer
dynamiquement au fur et à mesure des insertions et suppressions.
Identification clé / valeur
Chaque document est identifié par un identifiant nommé _id unique pour
une collection, fonctionnant comme une clé primaire artificielle.
Architecture
MongoDB fonctionne a minima sous la forme d'un serveur auquel il est
possible de se connecter avec un client textuel (mongo shell).
MongoDB peut être distribuée sur plusieurs serveurs (partitionnement
horizontal ou sharding) et accédée à travers de multiples couches
applicatives (langages, API...)
use db1
db.col1.insert( { "x":1 } )
Syntaxe : Catalogue de données
On peut voir la liste des bases de données avec :
show dbs
On peut voir la liste des collections de la base de données en cours avec :
show collections
On peut voir le contenu d'une collection avec :
db.col1.find()
1 db.Cinema.find({"nom":"Honkytonk Man"})
Exemple : Restriction
retourne les document JSON tels qu'ils ont à la racine un attribut "nom"
avec la valeur "Honkytonk Man".
b) Démarrage de Neo4J
➢ Lancer le serveur
Complément
• Pour arrêter le processus serveur sous Linux : $NEO4J_HOME/bin/neo4j
stop
• Pour réinitialiser les basesde données : supprimer le dossier
$NEO4J_HOME/data/graph.db/
c) Test de Neo4J
où :
on mettra nos nœuds à l'intérieur des parenthèses ()
on mettra nos relations à l'intérieur des crochets []
enfin on désignera le sens de la relation avec la flèche
Exemple : Créer deux nœuds et une relation entre ces deux noeuds
create (e:Astre {name:'Earth'}) <-[:Satellite {distance:384000}]- (m:Astre
{name:'Moon'}) return e, m
Exemple : Créer deux nœuds et une relation entre ces deux noeuds
en plusieurs instructions
create (e:Astre
{name:'Earth'}) create
(m:Astre {name:'Moon'})
create (e)<-[:Satellite {distance:384000}]-
(m) return e, m
Remarque
CTRL+ENTER
Lance la commande présente dans la ligne de commande.
SHIFT+ENTER
Permet de faire un saut de ligne dans la ligne de commande (sans
l'exécuter)
e) Trouver des nœuds et des relations
Exemple : Trouver un noeud avec une propriété
match (n {name:'Sun'}) return n
Exemple : Trouver un nœud avec un label
match (n:Astre) return n
Exemple : Trouver des nœuds en fonction d'une relation
match (n1) <-[r:Satellite]- (n2) return r,n1,n2