Dans le cours : L'essentiel de NoSQL
Découvrir MongoDB
Dans le cours : L'essentiel de NoSQL
Découvrir MongoDB
La base de données orientée documents la plus populaire, et d'ailleurs, la base de données NoSQL la plus populaire, s'appelle MongoDB. Tout le monde connaît MongoDB. Il s'agit d'une base de données orientée documents qui va stocker du Json, et exclusivement du Json. C'est une base de données qui est créée par une société qui s'appelle MongoDB, qui est à New York, qui offre une licence communautaire, si vous voulez l'utiliser gratuitement, et en tout cas en open source, et puis une licence commerciale dite licence entreprise, si vous voulez avoir du service. MongoDB stocke donc des documents JSON et un de ses avantages, c'est qu'il distribue sa base de données, on appelle ça du sharding pour la répartition sur un certain nombre de nœuds. Vous avez aussi de la haute disponibilité avec ce qu'on appelle les jeux de réplicas, ou replicas sets, une réplication maître esclave entre un nœud principal, et en général, deux nœuds secondaires. Vous pouvez grâce à MongoDB stocker des documents Json, donc, des documents bien structurés, et puis les manipuler très souplement avec un langage très riche. Vous avez donc une bonne souplesse et une bonne richesse fonctionnelle pour travailler avec votre base de données. Ici, je suis sur ma machine Linux, à l'intérieur d'un container Docker qui contient déjà MongoDB, et je suis rentré avec l'outil interactif qui s'appelle Mongo. Je suis ici donc dans une invite de commandes où je vais pouvoir saisir des commandes MongoDB. Cette invite de commandes est en JavaScript. Lorsque vous aurez votre langage client, vous utiliserez des commandes semblables basées sur des objets spécifiques. Il y a des bases de données dans MongoDB, je vais faire un show databases pour voir les bases de données. Il se trouve que j'ai une base de données qui s'appellent test qui a déjà été alimentée, il y a un petit peu de données dedans. Je vais faire un use test, parfois, les commandes ressemblent un peu à des commandes de MySQL, par exemple, et maintenant que je suis dans la base de données, je vais regarder si j'ai une collection. Effectivement, j'ai une collection qui s'appelle restaurants que j'ai importée, c'est une collection d'exemple. J'ai donc la notion de base de données, ici, c'est test, ensuite, la notion de collection, ici, c'est restaurants, ça correspond à une table, c'est une collection de documents. Je pouvoir manipuler cette collection, à l'aide de l'objet db, qui représente la base de données, qui a une collection de collections, donc, je vais pouvoir dire db restaurants, et ensuite, je vais pouvoir utiliser des méthodes ou des fonctions particulières pour ajouter des documents, modifier des documents, ou bien, chercher des documents ou les afficher, notamment la commande find, par exemple. Cette commande find va chercher des documents. À l'intérieur des parenthèses, je peux envoyer une requête, cette requête va être exprimée en Json, je vais vous montrer comment on fait ça. Ça me retourne ce qu'on appelle un curseur. Je vais pouvoir prendre un limit, et je vais prendre qu'un seul document. Le document, c'est du Json. Ça commence par une accolade, ça se termine par une accolade, et puis à l'intérieur, on a organisé de façon hiérarchique nos données. Je peux vous l'afficher en pretty, un petit peu plus joli, vous avez donc du Json. C'est exactement ce qu'on va stocker avec MongoDB, et grâce à cette structure, on va pouvoir indexer certaines parties du document. On va pouvoir faire des recherches spécifiques à l'intérieur de notre collection, et on stocke les données qui sont déjà assez bien structurées, c'est pour ça que vous avez une base de données NoSQL qui permet d'avoir une structure relativement souple également, parce qu'il n'y a pas de schéma dans MongoDB. Ce document Json, je n'ai pas dit comment il devait être structuré. Je n'ai pas forcé l'adresse à se trouver là et ensuite, à l'intérieur, on devait avoir un building. C'est quelque chose qu'on peut faire optionnellement, mais dont l'attitude NoSQL et l'attitude de MongoDB, on reste sur des choses qui sont non contraignantes.