Mai 03

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 !

thecodingmachine.io