Les bases de données : SQL, NoSQL, ElasticSearch
SQL, MYSQL, NoSQL, Elasticsearch, vous avez encore du mal à faire la différence entre les différentes bases de données et langages ?
Pas d’inquiétude, on vous explique les bases pour vous y retrouver !
Le langage SQL pour interagir avec les bases de données
Le langage Structured Query Language ou SQL permet de communiquer et de manipuler les bases de données relationnelles.
Ses points forts
- Sa rigidité : la structure des tables et le type d’attributs sont définis et fixés en avance.
- Ses jointures : les requêtes SQL offrent une puissante clause JOIN. Vous pouvez récupérer des données dans plusieurs tables en une seule requête.
- Sa normalisation : il réduit au minimum la redondance des données via l’utilisation de clés étrangères.
Quelques commandes de base pour bien démarrer
- Inner Join : intersection entre la table de A et la table de B.
- Left/Right Outer Join : l’ensemble de la table A et l’intersection avec la table B (inversement pour la commande Right).
- Natural Outer Join : colonne du même nom et du même type dans les deux tables (simplification du code).
- Straight Join : une commande plus rare qui permet d’obliger MySQL de passer par la table qu’on lui indique.
Les autres fonctions SQL sympas et utiles
- Trigger : fonction qui s’exécute lors d’un INSERT /UPDATE /DELETE.
- Requête imbriquée : utile pour récupérer toutes les lignes dont le max est une colonne.
- Cascade : permet de détruire automatiquement une donnée si sa liaison parente est détruite. Mais attention aux manipulations et destructions non désirées !
- Transaction : permet de jouer un grand nombre de requêtes d’INSERT/d’UPDATE et de ne valider qu’à la fin ou de tout annuler.
Les bases de données NoSQL
Parmi les bases NoSQL les plus connues : la base de données MongoDB est notamment utilisée avec JavaScript et Node, et Redis est un espace de stockage en clé valeur.
Les points forts des bases de données NoSQL
- La flexibilité : MongoDB fournit les données sous forme de documents JSON, permettant de faire évoluer plus simplement le modèle de données.
- La scalabilité : vous pouvez rendre facilement et rapidement les bases de données scalables. Astuce : grâce au sharding automatique, vous pouvez augmenter les capacités des bases de données.
- La performance : vous avez à disposition de nombreuses fonctionnalités : index, dynamic queries, tri des résultats, etc.
Qu’est-ce qui change ?
- Query : la syntaxe des requêtes en NoSQL sont différentes, vous devrez donc prendre en compte certains changements.
- Model : On utilise l’ODM Moogoose qui nous permet de créer nos modèles et nos schémas assez simplement comme on peut le faire dans un code.
- Populate : Dans Mongoose, le populate remplace le principe des Jointures en utilisant des instances.
« Tout ça c’est bien sympa mais parfois on peut se retrouver assez limité par le SQL ou le NoSQL, comment faire ? »
C’est vrai ! On retrouve souvent des soucis de performance et la récupération d’informations peut prendre beaucoup de temps. Pour remédier à ces difficultés, la solution peut être d’utiliser Elasticsearch.
La solution Elasticsearch
Elasticsearch est une base de données NoSQL qui permet de stocker et d’indexer un grand nombre de documents.
Ses points forts
- Une indexation des données selon vos propres règles.
- Une recherche full-text permettant de faire des recherches approximatives.
- Un horizontal scaling qui vous permet de scaler facilement.
Petit lexique Elasticsearch
- Nœud : un processus Elasticsearch en cours d’exécution.
- Cluster : un composé d’un ou de plusieurs nœuds.
- Index : un espace de logique de stockage de documents de même type, représentant l’ensemble de vos données.
- Lucene : une bibliothèque Open Source qui permet d’indexer et de rechercher du texte. Le moteur d’Elasticsearch.
- Shard : une partition de l’index qui correspond à une instance de Lucene. Attention, il n’est pas possible de modifier le nombre de shards après leur création.
- Document : un enregistrement dans un shard Elasticsearch.
Pour en savoir plus sur les langages, les bases de données et les dernières évolutions en matière de technologies, découvrez le blog technique de The Coding Machine.