dans cette courte vidéo donc je vais vous présenter le un autre système de gestion de base de données documentairire donc cou dB donc c'est un système qui voilà donc à mon avis de qui n'est pas le plus le plus utilisé on euh mais c'est il a le mérite d'être facile donc à installer à utiliser donc à appréhender et à comprendre fonction me d' un système de gestion de base de données de documentaire euh donc il est il est expose des fonctionnalités s forme d'une AP rest donc pour l'AP rest je vous rappelle qu'il suffit de
connaître les quatre verbes les plus important donc du protocole HTTP donc à savoir get qui permet de demander une ressource ou plus précisément la représentation d'une ressource le put qui permet de créer une nouvelle ressource ou la remplacer si cette ressource n'existe pas poste c'est pour envoyer c'est pour envoie de messagees une ressource donc on demande un service à une ressource et le Delite pour comme son nom l'indique supprimer une ressource d'accord donc sans trop tarder donc là je vais vous montrer à quel niveau je suis au par rapport au support du cours donc je
suis là quand je dis B d'accord donc dans cette première vidéo je vais vous présenter le système donc comment insérer un document lire et cetera et dans un deuxième temps donc je vais vous faire une brève démonstration sur l'utilisation de M predus donc avec Coch dB d'accord donc vous pouvez noter la l'adresse suivante pour y accéder à la documentation de Coch dB donc c'est c'est c'est une documentation sur sur votre machine donc il sera installé sur votre machine au moment de du lancement de Coch TB donc vous avez deux possibilités soit de l'installer en en
dur donc c'est c'est mon cas ici par exemple j'ai installé Apach Coch dB c'est un outil open source soutenu par la Fondation Apach donc libre de de droit sinon vous pouvez aussi utiliser docker pour le lancer d'accord mais attention si vous utilisez dockur il faut pas oublier de gérer les volumes donc de mapper les volumes de sorte à ce que les données que vous manipuler ne soit pas perdu si le conttainur est arrêté vous supprimer par exemple d'accord donc pour cela donc vous allez exécuter cette instruction donc docur donc moin 10 c'est pour que le
terminal ne rond la main une fois que docker est lancé on va choisir un nom pour notre compte donneur donc là en l'occurrence j'ai c'est s' il va s'appeler Coch dbdmo le moins e c'est pour définir une variable d'environnement donc c'est on a deux variables d'environnement donc un nom d'utilisateur là j'ai pris Youssef et un mot de passe c'est meilleur et mpper les ports donc c'est cand dB il écoute par défaut sur le port 5984 et euh l'image euh le nom de l'image il s'appelle Coch dB ok je vous rappelle lorsque je précise pas donc
les deux points la version il va prendre la toute dernière version d'accord donc il suffit de faire un copier-collé bah faites attention quand vous faites des copi collé il peut y avoir des caractères parasites ok donc il s'est lancé donc rapidement vous si c'est pour la première fois euh il faut euh un certain temps donc le temps nécessaire pour que l'image soit téléchargée sur votre machine locale et qu' sera sauvegarder donc je vous le rappelle dans un répertoire qui se trouve à la racine c'est un répertoire caché donc c'est point m2 d'accord donc le le
principe du fonctionnement de docker bon c'est pas l'objectif du cours mais je vous ai déjà introduit docker cm et d'utiliser des images qui sont sauvegard qui sont pardon publiés dans un registre qu'on appelle docur hub donc vous pouvez vérifier ici donc sur un navigateur donc donc h et là vous avez un moteur de recherche textuelle si vous voulez chercher par exemple je sais pas on est en train de regarder C dB bah vous tapez Coch dB hop et là vous avez la documentation donc comment l'utiliser comment l'installer et ainsi de suite d'accord bon nous on
va y aller au plus simple donc on va pas pas définir un cLOSTER donc on va pas définir une grappe de serveur au moins dans un premier temps donc on va l'utiliser encore une fois dans sa version la plus simple donc vous pouvez vérifier que le conteneur est en cours d'exécution donc il y a un identifiant du conteneur et là vous avez un certain nombre d'informations notamment le le port descoutes par défaut et le port qu'on utilise pour accéder à à ce conteneur ok donc je reviens maintenant ici au support de cours donc dB il
propose un client graphique d'accord accessible à l'adresse suivante localhost [Musique] 5984_/util donc allonsy pour voir localhost utiles et là donc le mot de passe on a dit Youssef Sam j'espère que c'est le bon voilà donc là c'est l'interface graphique je vous laisse l'explorer dans un premier temps je vais pas utiliser une interface graphique pour vous montrer que c'est vraiment une app reste je vais utiliser un client donc curl mais j'aurais pu utiliser n'importe quel client pour communiquer avec une aps notamment postman SOP ui pour ceux qui ont suivi le le cours de base de données
euh avancé euh avec moi on les a on a utilisé ces utiles sinon il y a euh euh pas mal de de plugin d'accord que vous pouvez donc intégrer avec en utilisant votre navigateur préféré donc la première requête donc on va mettre curl Mo x là je vais envoyer get donc la méthode GET là je vais mettre HTTP de point donc local host euh pardon je pense que je l'ai déjà fait donc ça sert à rien que je retape donc c'est curl Mo x get HTTP donc local host ici donc le admin admin ici c'est
pas admin admin donc c'est on a dit le mot de passe en premier et après pardon le login excusez-moi donc le premier paramètre c'est le login et après c'est le mot de passe d'accord et là si tout va bien euh non tout va pas bien le COS HTTP donc c'est Youssef Sam on a laissé ça donc je vais revenir ici Youssef Samir oui exactement ça et pourquoi il veut pas il veut pas me dire euh ouais elle doit je comprends pas pourquoi TEC TEC TEC pardon là c'est du direct donc c'estus pourquoi il veut pas
répondre lui pourquoi il VE pas répondre peut-être parce que il est lancé ah oui d'accord ok ok ok ok ok ok ok donc là si je fais ça non c'est pas le pon ah oui parce que il y a déjà cochetb donc il faut que je l'arrête arrêtec arrc et là je vais mettre le caltil OK et là ok il ne répond d'accord donc c'était juste parce que j'ai j'ai lancé déjà voilà donc encore une fois c'est du direct voilà si ça coupe par endroit n'hésitez pas à me le dire d'accord aussi donc là c'est
la première requête donc c'est un get donc il nous affiche la représentation d'une ressour pardonich représentation donc pour créer maintenant une base données on va utiliser le le verbe put donc ça sera cur je sais pas si je peux faire un copiercoller ici non c'est une image donc ça sera curl moin xput et là HTTP de point je pense que je vais reprendre celui-là directement ici au lieu que ça soit un get donc ça va être UNP et après on va donner un nom à notre base de données donc c'est fils hop si tout va
bien donc il va nous enenvoyer un document Gon donc c'est OK voilà donc la ressource maintenant il est créé donc si on veut la récupérer donc vous avez bien compris le principe he donc il suffit de mettre maintenant un get Ici vous mettez films et il nous rvoit les caractéristiques sur sur cette base de données qu'on vient de définir d'accord donc je suis là au niveau du cours ok donc là j'ai renvoyé donc je veux insérer maintenant un nouveau document d don la base fine c'est comme pour monongodb si vous l'aviez déjà fait il y
a pas de schéma donc contrairement à cassondra et à mon avis c'est le seul système de gestion de base dans SQL qui impose un schéma et c'est tant mieux parce que je vous rappelle que parce que on est content d'utiliser un système gestion de base de données usql parce que on peut mettre des documents G qui n'ont rien à voir les uns les autres euh mais il faut pas oublier que pour exploiter ces données euh l'application il doit faire tout le travail derrière donc quand il va récupérer un document et voilà donc en terme de
performance c'est pas voilà c'est c'est pas vraiment très conseillé ça même si ces systèmes ils permettent d'insérer des documents hétérogènes qui n'ont pas de schéma enco une fois bah d'une manière euh euh implicite euh quand on quand on on met en place un tel système il y a quand même un schéma d'accord euh sinon on doit définir un système pour chacune des applications qu'on qu' qu'on qu' l'on doit développer or ça je vous rappelle et j'ai insisté en cours une base de données il doit il doit il est indépendant il doit il doit exister indépendamment
d'une application il doit être péren et conçu indépendamment de toute application bon ça je vous laisse revoir le le cours si vous n'avez pas bien compris ce que je viens de dire donc maintenant si je veux insérer un document B il suffit de d'envoyer unput donc pour le la ressource qu'on vient de de définir donc on va l'appeler doc et on va on va envoyer un document g ici aussi donc je vous le rappelle là c'est très important il faut voir est-ce que il y a des caractères parasites qui sont au moment où vous allez
faire des qui sont générés au moment où vous allez faire un copiercoller d'accord et si donc le document il est ajouté donc bon il y a il y a l'identifiant c'est c'est c'est doc d'accord donc la valeur c'est clé valeur tout simplement ici le rêve que vous voyez ici Coch TB il permet de versionner les différents documents bon je vais pas rentrer dans les détails si vous êtes intéressé vous pouvez consulter la documentation officielle que vous pouvez trouver sur le site de cachtb le site officiel de cach TB ou sinon je vous ai déjà montré
que avec cach TB il y a une documentation accessible à cette adresse là ok je suis là donc maintenant je peux insérer un autre document donc là vous voyez c'est un document gestion donc la clé valeur je peux insérer un autre je sais pas ici par exemple je vais mettre non je vais mettre par exemple youf ah là je vous laisse réfléchir je exécute cette requête est-ce que je vais avoir une erreur ou pas hop il y a une erreur il y a un conflit pourquoi parce que il y a déjà un document dans l'identifiant
et doc d'accord donc là je vais mettre document 1 par exemple là il va le prendre sans aucun problème d'accord ok continuons maintenant on peut insérer un document sauvegardé dans un fichier donc là je vous laisse le test donc vous prenez un fichier g s tout simplement d'accord que ça soit film ou n'importe quel fichier g s donc vous ay l'insérer donc pour l'insérer il suffit d'utiliser la commande suivante donc on va utiliser post d'accord le moin d donc c'est pour préciser que c'est un document donc ça c'est le nom de notre document donc le
nom de du fichier pardon vous de sauvegarder le document et ça c'est pour préciser c'est une c'est un document GISS bon là je mets une remarque pour vous dire que s'il n'y a pas d'identifiant C dB donc il va attribuer pour chaque document d'accord un identifiant unique bien sûr d'accord ici donc je vous donne mon avis par rapport à au fait que quand je attribuer un un identifiant d'une manière automatique même si on l'a pas précisé donc vous l'avez certainement remarqué si c'est pas le cas je pense pas que vous l'avoir montré donc là je
regarde j'actualise pour voir la collection de film et si vous voyez il y a de documents donc la valeur euh pardon la valeur il est là donc je peux y accéder voilà donc ça c'est la clé valeur donc ça c'est le premier document le deuxième c'est celui de non Youssef d'accord documents qui n'ont rien à voir les uns les autres euh vous pouvez avoir aussi une représentation tabulaire comme on a l'habitude de le voir avec une base donné relationnell voilà de documents gissne aussi et C donc je vous laisse explorer donc cette interface qui est
facile à prendre auain ok donc je reviens maintenant cette histoire de de de de clé euh euh vous avez vous avez aussi certainement remarqué avec Mongo dB euh il y a une une clé aussi qui sera attribuée automatiquement d'accord et si je l'ai fait exprès donc pour susciter juste une discussion donc mon avis pas une bonne idée pas une bonne idée de définir vous-même une clé pourquoi parce que il faut pas perdre de vue que les systèmes de gestion de base données SQL comme je l'ai dit en cours c'est des systèmes qui permettent de gérer
des données dans une infrastructure distribuée donc un système gestion de base de données relationnelle il permet de gérer des données donc un ensemble de fichiers tout simplement qui sont sauvegardés sur disque donc c système il cache toute la complexité donc d'accès au disque de sauvegarde de récupération des donn on est au niveau de la RAM avec des algorithmes assez sophistiqués la gestion des transactions et cetera la création d'index donc au lieu que ça soit nous qui vont développer tous ces algorithmes ou une application qui va euh gérer les accxès concurrents et cetera donc les hgbd
donc relationnels ils le font donc euh euh dans eu dans le cas on utilise euh on sauvegarde des données en mode centralisé dans le cas où on a une infrastructure donc distribuée donc une grappe de serveur un ensemble de serveurs si vous voulez les système gestion de base dans les SQL euh facilite la gestion de cette infrastructure notamment la gestion de la panne si a un des serveur tombe en panne le système il va euh il va continuer à fonctionner donc à assurer le service même s'il y a un des serveurs qui est en bon
B S a un nouveau serveur qui a un nouveau serveur ou un nud qui est ajouté au niveau de la grappe il sera pris en compte et cetera d'accord ok donc insertion maintenant d'une collection si on veut insérer une collection de de film d'accord donc la collection vous pouvez la retrouver sur le l'UNT donc le site du cours il s'appelle je pense film undersc Coch dB donc je reviens au niveau du terminal ici donc si je fais ça je pense que je l'ai sauvegardé dans SPN nu SQL je pense qu'il l' je l' mets dans
ma predus d'accord il est là donc c'est film Coch db.gson d'accord donc on a un ensemble de films donc vous pouvez l'ouvrir hein donc avec un éditeur de texte tout simplement ok donc là j'ai un ensemble de fil que je veux insérer en mass donc au lieu d'insérer document par document je vais les insérer maintenant au mass pour les insérer en mass on va utiliser le und bu doc pardon et on précise le fichier donc toujours le mo-2 donc c'est pareil que pour insérer euh euh un seul fil donc là si je veux insérer une
collection de fil donc Obas donc il sera précédé par Obas film et le nom du fichier et là on précise que ça sera toujours du gestion donc et si on voyons voir ok donc je vous rappelle ici j'ai documents bien sûr avec l'interface je peux je peux supprimer des documents donc voilà donc par exemple ici je vais les supprimer d'accord donc la base fil pour l'instant il ne contient aucun document donc il y a zéro document bon il y a la partition ça c'est une notion qu'on verra dans la deuxème partie du cours le partitionnement
ou le chararding en anglais et la réplication pour assurer la tolérance au P de notion qu'on verra dans la deuxème partie du cours je fais un copier je suis dans le répertoire qui contient le film coche dB ok donc j'exécute donc je vois poste et là normalement si je reviens ici j'actualise et je vois qu'il y a 278 films qui ont été importés d'accord il sont là donc je vous laisse les explorer voilà donc là vous pouvez préciser le nombre de films qui seront affichés pour chaque page pour la pagination d'accord vous pouvez avoir la
représentation tabulaire encore une fois celle qu'on a l'habitude de voir avec despase données relationnelles et du document g d'accord donc toujours la première des choses qu'il faut faire il faut toujours inspecter regarder la structure des documents g sens qui sont ici en l'occurrence il y a donc un identifiant donc c'est un identifiant qu'on qu'on a défini n nous-mêmes il y a le numéro de la version mais ça je vais pas parler donc dans le cadre de secours bah il y a le titre il y a l'année il y a le genre voilà donc c'est c'est
des documents g son qui sont imbriqués les uns dans les autres d'accord donc on peut les imbriquer euh pour créer des documents assez complexe d'accord en violant la première forme normale voilà qui est euh qui est utilisé qui est imposé ou exigé par tout système d'histoire de base de données relationnelle d'accord c'est vraiment la seule différence c'est vraiment la seule différence c'est c'est vraiment le point euh à retenir c'est-à-dire que contrairement à une base de données relationnelle dans une base de données relationnelle je ne peux pas avoir par exemple cette représentation d'accord dans un seul
document donc si j'ai plusieurs acteurs qui participent à à un film je dois utiliser donc la clé étrangère donc je dois faire le lien euh entre le film et chacun des acteurs donc euh et ça c'est ce qui permet donc je vais pas refaire le cours ici donc c'est ce qui permet d'éviter justement la euh la euh la redondance et par conséquent euh l'incohérence donc parce que je vous rappelle que euh toute la théorie sur la normalisation et d'éviter justement euh la redondance euh des données de sorte à ce que on prend on prend pas
le risque de se retrouver avec des données qui sont incohérentes alors qu'ici on peut se retrouver effectivement avec des données qui sont incohérente parce que si je prends par exemple cet tracteur là il peut il apparaît il a jouit dans ce film donc il apparaît une fois je peux l'avir dans un deuxième film et comme que les informations sur cet trcteur ils sont dupliqué je peux par exemple ici l'écrire avec Charlie avec un E et dans un autre document je vais l'écrire Charlie avec y par exemple d'accord donc euh ça c'est très important ok donc
on avance donc je suis là une fois que le document est importé donc là c'est non je va pas illustrer ma predus etci voilà donc ok maintenant si je veux par exemple récupérer un document sachant son identifiant par exemple je sais pas je prends celui-là euh tac tac tac hop je fais ça ah pardon donc euh je suis désolé une fois c'est du direct donc donc là c'est get et là je mets underscore est-ce que je peux envoyer ça ou pas hop et là il me renvoie le fil donc il suffit de mettre slash l'identifiant
d'accord bien sûr là maintenant je vous laisse tester éventuellement la méthode donc là on a on a testé le verbe get le verbe put le verbe post donc je vous laisse expérimenter le delete et cetera d'accord donc votre objectif c'est de refaire ces manipulations qui sont vraiment très très simples d'accord et de rédiger sur deux pages trois vraiment maximum en illustrant les méthodes de Get put post et DELETE dans un premier don et de répondre aux questions euh par la suite bon travail