NOSQL
Introduction:
Les bases de données NoSQL sont devenues un
sujet très à la mode dans le milieu du
développement web. Il n’est pas rare de tomber
sur des articles les présentant comme étant la
solution ultime à tous les problèmes rencontrés par
le développeur web, qu’il s’agisse de performance
ou encore de montée en puissance. Cet
enthousiasme trouve sa source dans les
nombreuses qualités intrinsèques des grands noms
du NoSQL, mais un certain nombre de points sont
à considérer avant de foncer tête baissée dans le
choix d’une solution de stockage non relationnelle,
alors c'est quoi le NOSQL, et quelles sont les
avantages et les inconvénients de ce base de
donnée moderne ?
Définition et fonction de
NOSQL
Nosql qui signifie Not Only sql est une approche de la
conception de bases de données qui peut s'adapter a
une grande variété de modèles de données (graph
data base).
Comment fonctionnent les bases de données NoSQL ?
Les bases de données NoSQL organisent les gros volumes de
données au moyen de techniques flexible tels que des
documents, graphiques, paires de valeurs et colonnes en ce
sens les systèmes NoSQL sont parfaitement adaptés aux
applications exigeant le traitement de larges volumes de
données sur les base de structures flexible.
Les systèmes NoSQL exploitent un cluster matériel et un serveur
cloud les capacités sont réparties de manière uniforme et la
base de données fonctionne avec fluidité les bases de données
NoSQL s'imposent comme une solution performante flexible et
évolutive pour le stockage de grosses quantités de données.
L'une des particularités des systèmes NoSQL est leur capacité
de dimensionnement horizontal
Les avantages:
• Conçu pour les systèmes distribués.
• Elle n'a pas de schéma (flexible).
• Base transaction.
• Les requêtes sont simple ( pas de jointure).
• Mise à l’échelle horizontale.
• Développement rapide.
• Fournir plusieurs modèles à choisir.
• Plus efficace.
Les inconvénients :
Elle n'a pas de schéma.
Pas de langage de requêtes standard et uniforme.
Pas de transaction ACID (atomicité, cohérence, isolation et
durabilité).
Manques de fonctionnalités .
Avantages du NoSQL par rapport à SQL
Selon l’objectif d’application, NoSQL présente certains
avantages par rapport aux bases de données relationnelles
classiques. Alors que les systèmes SQL sont rapidement saturés,
en cas d’utilisation avec des Big Data par exemple, les bases
de données NoSQL peuvent lire et traiter de gros volumes de
données à une vitesse record, grâce à ses modèles haute
performance évolutifs.
Inconvénients :
-Il n’existe pas de langage d’interrogation standardisé :
chaque éditeur a mis en place le sien .
-L’écriture de requêtes complexes est difficile à mettre
en œuvre.
-L’offre NoSQL est segmentée en plusieurs familles où
chacune répond à un besoin précis.
En Résumé
SQL NoSQL
Relationnelles Non relationnelles
Requêtes flexibles (jointure) Requêtes limitées
Dimensionnement vertical Dimensionnement horizontale
Schéma / tables Pas de schéma
Transactions sur plusieurs tables Difficile de supporter la
transaction
ACID (Atomicity, Consistency, BASE (Basically Available, Soft
Isolation, Durability) State, Eventual Consistency )
Les familles de NoSQL:
Le NoSQL regroupe 4 grandes familles de base de
données qui permettent d'offrir une représentation
différentes des données, chacune dispose
d'avantages et d'inconvénients en fonction du
contexte dans lequel on souhaite l'utiliser. Il existe :
Bases de données documentaires
Bases de données graphiques
Bases de données Clé-Valeur (Key Value)
Bases de données orientées par colonne
Bases de données documentaires :
La représentation orientée document est plus adaptée au
monde de l'internet. Cette représentation est très proche de la
représentation clé-valeur à l'exception faite que la valeur est
représentée sous la forme d'un document. On peut retrouver
dans ce document les données organisées de manière
hiérarchique comme ce que l'on trouve dans un fichier XML
(L’eXtensible Markup Language, généralement appelé XML, «
langage de balisage extensible » en français, est un métalangage
informatique de balisage générique qui est un sous-ensemble du
Standard Generalized Markup Language).
Bases de données documentaires :
ou JSON. (JavaScript Object Notation est un format de
données textuelles dérivé de la notation des objets du
langage JavaScript. Il permet de représenter de l’information
structurée comme le permet XML par exemple.
On trouve 2 types d'implémentations:
CouchDB et MongoDB.
Bases de données graphiques :
La représentation orientées graphe est pour palier à des
problèmes impossibles à résoudre avec des BDD relationnelles.
Le cas d'utilisation typique est bien sur les réseaux sociaux où
l'aspect graphe prend tout son sens, mais aussi où des
relations complexes entre les acteurs ont besoin d'être décrits .
On trouve 3 implémentations différentes:
Neo4j, HypergraphDB et FlockDB.
Bases de données Clé-Valeur (Key Value) :
La représentation en clé-valeur est la plus simple et est très
adaptée aux caches ou aux accès rapides aux informations.
Cette représentation permet en général d’atteindre des
performances bien supérieures dans la mesure où les lectures
et écritures sont réduites à un accès disque simple. On trouve 3
différentes implémentations: Riak, Redis et Voldemort.
Bases de données orientées par colonne :
La représentation orientée colonnes est celle qui se rapproche
le plus des tables dans une base de données relationnelles.
Elles permettent d'être beaucoup plus évolutive et flexible
puisqu'on peut disposer de colonnes différentes pour chaque
ligne. On trouve 2 types
d'implémentations: HBase et Cassandra.
Aperçu de quatre solutions NoSQL
privilégiées
La plupart des bases de données NoSQL sont des logiciels
Open Source librement disponibles aux internautes. Ils sont
ainsi aisément accessibles. Vous pouvez télécharger
gratuitement de nombreuses applications NoSQL, vous
familiariser avec elles, puis les utiliser en complément de votre
base de données SQL. Les bases de données NoSQL ci-
dessous ont déjà fait leurs preuves.
1-casandra: est une base de données NoSQL en
colonnes, optimisée pour le stockage et le
traitement de jeux de données volumineux.
2-cauch DB :La base de données documentaire
cauch DB exploite une API intuitive HTTP/JSON et
peut être utilisée dans n’importe quel domaine
d’application, que ce soit pour des Big Data et
des applications mobiles ou encore Web.
3-Neo4j: Avec Neo4J, vous pouvez intégrer vos
données au sein d’une base de données graphique
NoSQL basée sur le Cloud. En première ligne, vous
pouvez ainsi représenter dans des graphiques les
relations entre les différents jeux de données et
reconnaître des modèles définis.
4-Redis :La base de données Clé-Valeur redis est ce
que l’on appelle une base de données en mémoire :
elle enregistre directement les données dans le cache
et vous garantit ainsi de meilleures performances
Conclusion
Les bases de données NoSQL ne sont
donc pas la solution miracle pour
répondre à toutes les problématiques de
stockage sur le web ou ailleurs. Il est
surtout très important de bien comprendre
ce que le choix d’une base de données
de ce type va avoir comme
conséquences en terme d’architecture
logicielle et complexité de
développement.