SQL Vs NoSQL, Lequel Peut Gérer Facilement Une Base De Données Web Médicale?
Tags: sql, nosql, mysql, mongodb
Published: 2020-04-10 18:53:04

>
Ceci est le reflet de son orignal [SQL Vs NoSQL](https://www.trakode.com/blog/sql-nosql-base-de-donnees-medicale/)
>

SQL vs NoSQL, quel système de base de données peut mieux gérer les données médicale ?

Il s'agit d'un cas d'utilisation sérieux et réel. Pas question <u>de dormir sans trouver une bonne réponse</u>.

Je te préviens, en médecine ça ne blague pas, <u>c'est une question de vie ou de mort</u>. Tu as vu aussi ce qui se passe avec le **coronavirus COVID-19 dans le monde** !

**La vie, c'est le plus beau cadeau. **La donnée est au centre de la résolution des problèmes que peut engendre une maladie qui menace la vie**.

Dans le monde actuel, **pour automatiser ce processus médical, ** tu ne trouveras pas mieux que l'informatique avec ces concepts de base de données**. 

Tout le gouvernement du monde ont déjà compris, ce pour ça que :

- 👉 La chine à [développé une application de géolocalisation et suivie de santé des malades atteint du coronavirus COVID-19](https://www.lesnumeriques.com/telephone-portable/coronavirus-en-chine-une-app-pour-autoriser-les-citoyens-a-se-deplacer-librement-n147785.html) ;
- 👉 La République Démocratique du Congo, RDC à organiser [un concours ouvert aux startups qui veulent proposer des solutions innovantes dans la lutte contre le Covid-19](https://actualite.cd/2020/03/21/rdc-un-concours-ouvert-aux-startups-qui-veulent-proposer-des-solutions-innovantes-dans) ; 
- 👉 En Iran il y a [AC19 : l’application pour “contrôler” l’épidémie de Covid-19 en Iran](https://siecledigital.fr/2020/03/16/ac19-lapplication-pour-controler-lepidemie-de-covid-19-en-iran/) ;
- 👉 Tu peux voir [comment sont comptabilisées les victimes du Covid-19 en France](https://www.bfmtv.com/sante/coronavirus-comment-sont-comptabilisees-les-victimes-du-covid-19-en-france-1882426.html), pour vérifier l'état de santé de chaque citoyen.
- 👉 Aux États-Unis, [IBM livre sa carte Covid-19 à travers l'app Weather](https://www.lemondeinformatique.fr/actualites/lire-aux-etats-unis-ibm-livre-sa-carte-covid-19-a-travers-l-app-weather-78569.html).
- Etc, ...

Que ça soit en l'Afrique, l'Europe, l'Amérique ou l'Asie, l'intervention d'une base de donnée semble résoudre certains problèmes.

## C'est quoi une base de données en informatique ?

Imagine un ensemble de données qui ont été stockées sur un support informatique(cd, dvd, flash, disque dure), organisées et structurées de manière à pouvoir facilement consulter et modifier leur contenu. C'est déjà une base de données.

Par exemple une application web qui géolocalise les cas du coronavirus. Tu vas utiliser une base de données pour stocker toutes les coordonnées de géolocalisation des personnes prétendu infectées : 

- 👉 Les états (avec la date de détection, le titre, la température, …) ;
- 👉 Les patients (leurs noms, pays d'origine, leurs emails, …) ;
- 👉 Et la localisation(longitude et la latitude).

L'ensemble va constituer ta base de données pour ton application web. 

En informatique, ta base de données ne doit pas seulement exister. Il te faut aussi pouvoir la gérer, interagir avec ta base pour qu'elle te donne une réponse. 

Pour pouvoir ajouter des informations, modifier des patients, supprimer, et tout simplement afficher des éléments contenu dans la base de données. 

Tu auras besoin un système intermédiaire pour transmettre des instructions à la base de données.

## Qu'est ce qu'un SGBD ?

Un Système de Gestion de Base de Données (SGBD) est un logiciel (ou un ensemble de logiciels) permettant de manipuler facilement et rapidement les données d'une base de données. 

Manipuler, pour dire : 

-🔹Sélectionner et afficher des informations tirées de cette base de données, 
-🔹Modifier des données, en ajouter ou en supprimer (ce groupe de quatre opérations étant souvent appelé "CRUD", pour Create, Read, Update, Delete).

Pou rechanger avec le serveur, tu auras besoin d'un langage intermédiaire, pour lui donner les requêtes que tu veux effectuer. Ce là que tu vas choisir entre une solution SQL ou NoSQL.
## Qu'est ce qu'un SGBDR ?

Le **R** de **SGBDR** signifie "relationnel". Un SGBDR est un SGBD qui implémente le **modèle relationnel**.

Le **modèle relationnel** est une manière de modéliser les relations existantes entre plusieurs informations, et de les ordonner entre elles. 

Tu seras obligé de respecter des principes d’algèbre relationnel.

## C'est quoi le SQL ?

Dans la vraie (vie) quand tu veux convaincre un américain, tu as besoin de parler anglais.

Le SQL (Structured Query Language) est un langage informatique qui va te permettre d'interagir visiblement et directement avec des bases de données. 

Ce langage informatique est notamment très utilisé par les développeurs web pour communiquer avec les données d’un site web.

Il a été créé dans les années 1970 et c'est devenu un standard en 1986 (pour la norme ANSI - 1987 en ce qui concerne la norme ISO). Il est encore régulièrement amélioré.

## Comment fonctionne une base de données SQL ?

SQL agit en langage de :

- 🔹Définition de données (**LDD**), c'est-à-dire qu'il permet de créer des tables dans une base de données relationnelle, ainsi que d'en modifier ou en supprimer.

- 🔹De manipulation de données (**LMD**), cela signifie qu'il permet de sélectionner, insérer, modifier ou supprimer des données dans une table d'une base de données relationnelle.

- 🔹De contrôle de données (**DCL**), Il est possible avec SQL de définir des permissions au niveau des utilisateurs d'une base de données. 

Il est possible d'inclure des requêtes SQL dans un programme écrit dans un autre langage.

Le langage tels que :

- 🔹Php;
- 🔹Javascript;
- 🔹Python;
- 🔹Etc.

Le langage SQL n'est pas sensible à la casse (en anglais *case sensitive*), cela signifie que l'on peut aussi bien écrire les instructions en minuscules qu'en majuscule. 

Toutefois, cette insensibilité à la casse n'est que partielle dans la mesure où la différenciation entre minuscules et majuscules existe au niveau des identificateurs d'objets.

Dans le SGBDR qui fonctionne avec le SQL.

- 🔹**MySQL** Racheté par Oracle Corporation
- 🔹**MariaDB** projet opensource
- 🔹**Oracle Database** d'Oracle Corporation
- 🔹**PostegreSQL**
- 🔹**Ms Acces** de Microsoft, 
- 🔹**SQLite**

## C'est quoi le NoSQL ?

Depuis les années 1970, la base de données relationnelle était au top. Incontournable ! 

Elle a été utilisée par des professionnels pour gérer les données d'un système d'information dans toute les entreprise. C'était le top du top !

Aujourd'hui, tu es face aux 3V (*Volume, Velocity, Variety*) c-à-dire des grandes quantités de données variées au quelles tu dois accéder de la manière la plus rapide possible, le relationnel peut éprouver des difficultés à organiser et traiter cet types de données. 

Le NoSQL s'impose naturellement dans ce cadre en proposant une meilleure façon de gérer les données, sans reposer sur le paradigme relationnel, Il est l'opposé du SQL, Ce pourquoi on parle du "**Not Only SQL**".

Tu verras que le NoSQL propose une approche qui abandonne certaines contraintes lourdes du relationnel pour favoriser la distribution (structure des données, langage d'interrogation ou la cohérence).

## Comment fonctionne une base de données NoSQL ?

Avec le NoSQL, tu es face aux 3V(*Volume, Velocity, Variety*) de bases de données, il est préférable d'avoir un langage de haut niveau pour interroger les données plutôt que tout exprimer en [Map/Reduce](https://fr.wikipedia.org/wiki/MapReduce). 

Toutefois, avoir un langage de trop haut niveau comme SQL ne peut pas faciliter la manipulation de données. 

Tu peux utiliser d'autres solutions pour résoudre le problème de distribution. Ce qui lui doit le non du "Not Only SQL". 

Cela signifie que tu as une autre manière d'interroger les données, mais aussi de les stocker. 

Tes besoins de stockage et de manipulation des données NoSQL sont variables et dépendent principalement de l'application que tu voudrais intégrer. 

Généralement, Tu vas trouveras qu'il existe différentes familles de bases NoSQL : 

- 🔹Clé/Valeur;
- 🔹Colonnes;
- 🔹Documents;
- 🔹Graphes. 

Chacune de ces familles répond à des besoins très spécifiques qui seront développé dans les titres suivants dans un but de t'éclairer dans le choix de ta solution NoSQL.

### Comment fonctionne une base de données NoSQL clés-valeurs ?

Comment avoir une base de données efficace et simple d'utilisation ?


Ce système clé-valeur dans le quelle on peut stocker les données sans schema, ni structure et agit comme une énorme table de hachage distribuée sur le réseau. 


Tu ne trouveras aucune possibilité d'exploiter ni de contrôler la structure des données et de fait, pas de langage (SQL = **Structured** Query Language). 


Tout repose sur le couple Clé/Valeur. Qui veut que :


- 🔹La clé identifie la donnée de manière unique et permet de la gérer. 
- 🔹La valeur contient n'importe quel type de données.


En connaissant la clé tu peux manipuler directement la valeur

Les seules opérations de type CRUD peuvent être utilisées :

- 🔹Create (key,value)
- 🔹Read (key)
- 🔹Update (key,value)
- 🔹Delete (key)

Quel système utilise des fonctionnalités aussi simples ?

Tu vas trouver parmi le plus rependus : 

- 🔹**Memcached** de *Danga*
- 🔹**Redis** de *VMWare* 
- 🔹**Azure Cosmos DB** de *Microsoft* 
- 🔹**SimpleDB**  d'*Amazon*.

Quels types d'applications pourraient correspondre à cette solution ? 

Voici quelques idées qui pourraient orienter ton choix : 

- 🔹Détection d’infections d'un virus en temps réel
- 🔹Détection des fraudes en temps réel
- 🔹Gestion de cache
- 🔹Fichiers de logs
- 🔹IoT
- 🔹Transactions rapides
- 🔹Chat

### Comment fonctionne une base de données NoSQL lignes vers les colonnes ?

![base de données lignes vers connes](https://www.trakode.com/assets/base-de-donnees-lignes-colonnes.png)

Dans un table simple, les données sont représentées en ligne, représentant l'ensemble des attributs. 

Le stockage orienté colonne change ce paradigme en se focalisant sur chaque attribut et en les distribuant. 

Le stockage orienté colonnes t'offre la possibilité de concentré les requêtes sur une ou plusieurs colonnes, sans avoir à traiter les informations des autres colonnes.

Tu te serviras de cette solution pour les traitements des calculs d'analyse statistiques comme :

- 🔹Comptage
- 🔹Moyennes
- 🔹Co-occurences

J'insiste, cette solution est beaucoup moins adaptée pour la lecture de données spécifiques comme pour les clés/valeurs.

Quel système s'occupe de l'orienté-colonnes ?

- 🔹[**Elasticsearch**](https://chewbii.com/elasticsearch/) de *elastic*
- 🔹**BigTable** de *Google*
- 🔹**HBase**  d’Apache et Hadoop
- 🔹**Spark SQL** de *Apache*

Dans quel cadre utilisé ce type de stockage ? 

Quelques exemples d'applications : 

- 🔹Comptage (vote en ligne, compteur, etc)
- 🔹Journalisation
- 🔹Reporting à large échelle
- 🔹Recherche de produits dans une catégorie

### Comment fonctionne une base de données NoSQL des documents ?

![base de données des documents](https://www.trakode.com/assets/base-de-donnees-documents.png)

Les bases orientées documents ressemblent présente de similitude avec de données classique pour des requêtes complexes. 

Finalement le stockage NoSQL de type document permet de manipuler des documents contenant des informations avec une structure complexe. 

Une structure qui contient en même temps :

- 🔹Types;
- 🔹Listes;
- 🔹Imbrications. 

Ce système s'inspire sur le principe "clé/valeur", mais avec une extension sur les champs qui composent ce document. Copier/Coller + Valeur Ajoutée = Innovation !

La valeur ajoutée par cette solution est d'avoir une approche structurée de chaque valeur, formant ainsi un document. 

Ce qui conduit à une proposition des langages d'interrogation de données riches permettant de faire des manipulations complexes sur chaque attribut du document (et sous-documents) comme dans une base de données traditionnelles, tout en passant à l'échelle dans un cadre de base de données distribué.

Parmi les meilleurs, tu trouveras :

- 🔹[**MongoDB**](https://chewbii.com/mongodb/) de *MongoDB* 
- 🔹[**CouchBase**](http://b3d.bdpedia.fr/couchbase.html) 
- 🔹[**DynamoDB**](https://chewbii.com/dynamodb/) d'Amazon) 
- 🔹[**Cassandra**](http://chewbii.com/cassandra/) de Facebook et Apache*)
- 🔹[**FounaDb**]() de FounaDb

 Quelques exemples d'utilisation : 

- 🔹Gestion de contenu (bibliothèques numériques, collections de produits, dépôts de logiciels, collections multimédia, etc.)
- 🔹Framework stockant des objets, collection d’événements complexes, gestion des historiques d’utilisateurs sur réseaux sociaux
- 🔹Streaming vidéo et audio

### Comment fonctionne une base de données NoSQL des graphes ?

![base de données des graphes](https://www.trakode.com/assets/base-de-donnees-graphes.png)

Les trois premières familles NoSQL ne résolve pas le problème de corrélations entre les éléments. 

Par l'exemple d'un réseau social : il y a des cas très complexe de calcul de la distance entre deux personnes non directement connectées. Et c'est ce type d'approche que résolvent les bases orientées Graphe.

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;
- 🔹Propagations;
- 🔹Agrégations;
- 🔹Recommandations. 

Toutefois, contrairement aux solutions précédentes la distribution des nœuds sur le réseau n'est pas triviale.

Quelles bases de données gèrent de gros graphes ?

- 🔹**FlockDB** (*Twitter*) : Twitter
- 🔹[**Neo4j**](https://chewbii.com/neo4j/) : eBay, Cisco, The National Geographic Society
- 🔹**OrientDB** (*Apache*) : Comcast, Cisco, Warner Music Group

Quelques idées d'applications reposant sur des bases orientées graphes : 

- 🔹Web social (Linked Data)
- 🔹Réseaux sociaux (recommandation, plus court chemin, cluster...)
- 🔹Réseaux SIG (routes, réseau électrique...)

## SQL ou NoSQL: qui peut réellement faciliter les stockage des données médicale ?

**Bases de données SQL:**  les bases de données SQL utilisent un langage de requête structuré (SQL) pour définir et manipuler des données. D'une part, c'est extrêmement puissant: SQL est l'une des options les plus polyvalentes et les plus utilisées, ce qui en fait un choix sûr et particulièrement idéal pour les requêtes complexes. En revanche, cela peut être restrictif. SQL requiert l'utilisation des schémas prédéfinis pour déterminer la structure de tes données avant de les utiliser. De plus, toutes tes données doivent suivre la même structure. Cela peut nécessiter une préparation initiale importante et, comme pour la ville A, cela peut signifier qu'un changement dans la structure serait à la fois difficile et perturbateur pour l'ensemble de votre système.

**Bases de données NoSQL :** Les bases de données NoSQL, d'un autre côté, ont des schémas dynamiques pour les données non structurées, et les données sont stockées de plusieurs façons: elles peuvent être orientées colonne, document, graphique ou organisées comme en clés-valeurs. Cette flexibilité signifie que: tu peux créer des documents sans avoir à définir au préalable leur structure
Chaque document peut avoir sa propre structure unique La syntaxe peut varier d'une base de données à l'autre, et tu peux ajouter des champs au fur et à mesure.

Par exemple, le cas très sérieux du coronavirus COVID-19 dans le monde, un virus qui se propage trop rapidement

Pour te faciliter le traitement rapide des informations, tu auras besoin d'une base de données qui peut : 

- 🔹Stocker des grandes quantités des informations en temps réel ;
- 🔹Afficher les résultats en temps réel ;
- 🔹Faire des calculs d'analyse statiques rapides ;
- 🔹Et fournir une carte map accessible qui actualise les informations toutes les millisecondes.

Une hésitation ou un bug liés aux données peut conduire à la propagation du virus. C'est trop mal !

Si c'était pour une très petite épidémie dans un petit coin du monde le SQL serait la solution idéale.

La, il s'agit d'un cas national et mondial, tu n'as pas envie d'exposer la population a un virus mortel parce que ton application web prend du temps à afficher les informations utile et crédibles.

C'est pour cette raison que je recommande vivement une combinaison intelligente des solutions de stockage NoSQL.

- 🔹Clé-valeur pour les informations a accès rapide ;
- 🔹Orienté linges colonne pour l'historique ;
- 🔹Orienté document pour les informations généralement perso ;
- 🔹Graphes pour des analyses statistiques très avancées efficaces.

## Conclusion

Tu viens de découvrir les bases de données SQL et NoSQL. 

Tu es tout à fait capable de faire ton choix parmi le système de gestion de base de données qui t'intéresse.

Si tu veux créer une base de données pour faciliter le traitement de maladie mortelle, les solutions des stockages de données peuvent contribuer en fournissant des informations correctement exploitable.

Par exemple, pour coronavirus COVID-19, tu vois clairement que le NoSQL serait une solution intéressante pour gérer une base de données de stockage des informations de tout genre.

Le base de donnée SQL seulement ne peuvent pas faire face au système NoSQL parce qu’il propose beaucoup des familles  à retenir :

- 🔹NoSQL clé-valeur
- 🔹NoSQL orienté colonne.
- 🔹NoSQL de type documents.
- 🔹NoSQL orienté graphes. 

Chaque famille NoSQL semble résoudre un problème de stockage lié au 3v(Volume, Vélocité et Variété) bien précis. Diviser pour mieux régner ! 

L'objectif d'une base de donnée est de stocker, organiser et l'être humain ou l’intelligence artificielle peut traiter l'information pour produire des solutions palpables.

>
Trakode se focalise dans le [développement web et mobile](https://www.trakode.com/)
>