Les bases de données : SQL, NoSQL, ElasticSearch
SQL, MYSQL, NoSQL, ElasticSearch ? Vous avez encore du mal à faire la différence ? Pas d’inquiétude, on vous explique les bases pour vous y retrouver !
SQL : STRUCTURED QUERY LANGUAGE
Le langage fait pour le relationnel entre les objets !
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 si on veut 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 valider qu’à la fin ou de tout annuler.
MAIS ALORS LE NoSQL C’EST QUOI ?
Le langage fait pour la performance !
Les bases les plus connues sont MongoDB, utilisé notamment avec JavaScript et Node, et Redis, un espace de stockage en clé valeur.
Ses points forts
- Sa flexibilité : MongoDB fournit les données sous forme de documents JSON, permettant de faire évoluer plus simplement le modèle de données.
- Sa scalabilité : vous pouvez rendre facilement et rapidement une base de données scalable. Astuce : grâce au sharding automatique, on peut augmenter les capacités de la base de données.
- Sa performance : vous avez à disposition de nombreuses fonctionnalités (index, dynamic queries, tri des résultats)
Qu’est-ce qui change ?
- Query : la syntaxe des requêtes en NoSQL sont différentes. Voici un petit avant-goût des changements que vous devez prendre en compte :
- 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 ? »
On retrouve souvent des soucis de performance et la récupération d’informations peut prendre beaucoup de temps !
LA SOLUTION : ELASTICSEARCH !
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.
Pour ne pas être totalement perdu quand on vous en parle, on vous offre un petit lexique :
- Nœud : un processus ElasticSearch en cours d’exécution.
- Cluster : 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.
VOUS AVEZ AIMÉ CET ARTICLE ET VOUS VOULEZ EN SAVOIR PLUS ?
RENDEZ-VOUS TOUT DE SUITE SUR NOTRE BLOG TECHNIQUE !