Débuter avec CouchDB

NoSQL a été l’un des sujets les plus discutés au cours des deux derniers mois. Ce tutoriel va vous présenter CouchDB, une implémentation de NoSQL et vous apprendre à démarrer avec la plateforme..


Qu'est-ce que NoSQL??

NoSQL est sans schéma - vous n'avez pas besoin de décider de la structure à l'avance.

NoSQL [non seulement SQL] est un mouvement vers des magasins de documents qui n’utilisent pas le modèle relationnel. Le changement de paradigme fondamental réside dans la manière dont ils stockent les données. Par exemple, lorsque vous devez stocker des données relatives à une facture, vous devez distiller ces informations dans des SGBDR, puis utiliser un langage côté serveur pour reconvertir ces données en objets réels. En revanche, dans NoSQL, vous ne stockez que la facture. NoSQL est sans schéma, ce qui signifie que vous n'avez pas besoin de concevoir vos tables et votre structure à l'avance - vous pouvez simplement commencer à stocker de nouvelles valeurs.

En reprenant l'exemple de facture, certaines factures peuvent inclure un numéro de TVA, d'autres non. Dans un SGBDR, vous devez indiquer à votre table d'accepter d'abord un numéro de TVA, puis de le rendre éventuellement nul. Dans NoSQL, cependant, vous pouvez simplement stocker des factures avec ou sans numéro de TVA - il n’existe aucun schéma. Gardez à l'esprit que NoSQL n'est pas une solution miracle. Si vos données sont vraiment relationnelles, rester avec votre SGBDR serait le bon choix..


Interrogation des bases de données NoSQL

MapReducing présente des avantages par rapport aux requêtes SQL, car la tâche de mappage / réduction peut être répartie sur plusieurs nœuds, ce qui n’est pas possible dans le SGBDR..

Les bases de données NoSQL utilisent mapper / réduire pour interroger et indexer la base de données. Dans le SGBDR, vous exécutez une requête joignant plusieurs tables pour créer d'abord un pool de données, puis la requête s'exécute en créant un jeu de résultats, un sous-ensemble des données globales. Dans NoSQL, vous utilisez mapper / réduire pour créer une "vue" (semblable à un jeu de résultats). Cette vue est un sous-ensemble des données globales..

La carte consiste essentiellement à extraire des données et à réduire l’agrégation de données. Plus vous connaissez le SGBDR, plus difficile est de comprendre une carte. Les avantages de MapReducing par rapport aux requêtes SQL étant donné que la tâche de mappage / réduction peut être répartie sur plusieurs nœuds, ce qui n’est pas possible dans le SGBDR. L'ajout d'un nouvel enregistrement à la base de données ne constitue pas toujours la tâche de mappage / réduction en cours de réexécution complète..


Présentation de CouchDB

Quelques faits sur CouchDB que vous devriez savoir:

  • CouchDB est une base de données JSON orientée document écrite en Erlang.
  • Il s'agit d'une base de données hautement concurrente conçue pour être facilement réplicable, horizontalement, sur de nombreux périphériques et pour être tolérante aux pannes..
  • Cela fait partie de la génération de bases de données NoSQL.
  • C'est un projet de fondation Apache open source.
  • Il permet aux applications de stocker des documents JSON via son interface RESTful.
  • Il utilise map / reduction pour indexer et interroger la base de données.

Principaux avantages de CouchDB

  • Documents JSON - Tout ce qui est stocké dans CouchDB se résume à un document JSON.
  • Interface RESTful - De la création à la réplication en passant par l’insertion de données, chaque tâche de gestion et de données dans CouchDB peut être effectuée via HTTP..
  • Réplication N-Master - Vous pouvez utiliser un nombre illimité de «maîtres», ce qui vous permet de créer des topologies de réplication très intéressantes..
  • Construit pour Offline - CouchDB peut se répliquer sur des appareils (tels que les téléphones Android) pouvant se déconnecter et gérer la synchronisation des données pour vous lorsque l'appareil est de nouveau en ligne..
  • Filtres de réplication - Vous pouvez filtrer précisément les données que vous souhaitez répliquer sur différents nœuds.

Mettre tous ensemble

CouchDB est une base de données conçue pour fonctionner sur Internet d'aujourd'hui.

CouchDB vous permet d'écrire une application côté client qui parle directement au canapé sans avoir besoin d'une couche intermédiaire côté serveur, ce qui réduit considérablement le temps de développement. Avec CouchDB, vous pouvez facilement gérer la demande en ajoutant facilement plus de nœuds de réplication. CouchDB vous permet de répliquer la base de données sur votre client et avec des filtres vous pouvez même répliquer les données de cet utilisateur.

Le fait que la base de données soit stockée localement signifie que votre application côté client peut s'exécuter pratiquement sans latence. CouchDB se chargera de la réplication sur le cloud. Vos utilisateurs peuvent accéder à leurs factures sur leur téléphone portable et apporter des modifications sans latence notable, le tout en étant hors ligne. Quand une connexion est présente et utilisable, CouchDB répliquera automatiquement ces modifications sur votre cloud CouchDB.

CouchDB est une base de données conçue pour fonctionner sur Internet d'aujourd'hui pour les applications de type bureau d'aujourd'hui et les appareils connectés via lesquels nous avons accès à Internet..


Étape 1 - Installation de CouchDB

Le moyen le plus simple de rendre CouchDB opérationnel sur votre système est de vous diriger vers CouchOne et de télécharger une distribution CouchDB pour votre système d'exploitation - OSX dans mon cas. Téléchargez le zip, extrayez-le et déposez CouchDBX dans mon dossier d'applications (instructions pour les autres systèmes d'exploitation sur CouchOne).

Enfin, ouvrez CouchDBX.


Étape 2 - Bienvenue sur Futon

Une fois que CouchDB a démarré, vous devriez voir le panneau de configuration Futon dans l'application CouchDBX. Si vous ne le pouvez pas, vous pouvez accéder à Futon via votre navigateur. En regardant le journal, CouchDBX nous dit que CouchDB a été lancé à http://127.0.0.1:5984/ (peut être différent sur votre système). Ouvrez un navigateur et allez à http://127.0.0.1:5984/_utils/ et vous devriez voir Futon.

Dans le reste de ce tutoriel, j'utiliserai Futon dans Firefox. Firebug et la vue de la console seront également ouverts pour afficher toutes les demandes HTTP que Futon envoie dans les coulisses. Ceci est utile car votre application peut faire tout ce que fait Futon. Allons-y et créons une base de données appelée mycouchshop.

CouchDB jQuery Plugin

Futon utilise actuellement un plugin jQuery pour interagir avec CouchDB. Vous pouvez voir ce plugin à http://127.0.0.1:5984/_utils/script/jquery.couch.js (n'oubliez pas que votre port peut être différent). Cela vous donne un excellent exemple d'interaction avec CouchDB.


Étape 3 - Utilisateurs dans CouchDB

CouchDB, par défaut, est complètement ouvert, donnant à chaque utilisateur les droits d’administrateur sur l’instance et toutes ses bases de données. C'est excellent pour le développement mais évidemment pour la production. Allons-y et mettons en place un administrateur. En bas à droite, vous verrez "Bienvenue à la fête de l'administrateur! Tout le monde est administrateur! Corrigez ceci".

Allez-y et cliquez répare ça et donnez-vous un nom d'utilisateur et mot de passe. Cela crée un compte administrateur et permet aux utilisateurs anonymes d'accéder aux opérations de lecture et d'écriture sur toutes les bases de données, mais sans privilèges de configuration..

Plus sur les utilisateurs

Dans CouchDB, il serait déconseillé de créer un seul super utilisateur et de le laisser effectuer toutes les tâches de lecture / écriture..

Les utilisateurs de CouchDB peuvent être un peu confus à comprendre au départ, surtout si vous avez l'habitude de créer un seul utilisateur pour l'ensemble de votre application, puis de gérer vous-même les utilisateurs dans une table utilisateurs (et non la table d'utilisateurs MySQL). Dans CouchDB, il serait déconseillé de créer un seul super utilisateur et de le laisser lire / écrire, car si votre application est côté client, les informations d'identification de ce super utilisateur seront clairement visibles dans votre code source JavaScript..

CouchDB a la création et l’authentification des utilisateurs. Vous pouvez créer des utilisateurs avec le plugin jQuery en utilisant $ .couch.signup (). Ceux-ci deviennent essentiellement les utilisateurs de votre système. Les utilisateurs ne sont que des documents JSON comme tout le reste, vous pouvez donc stocker tous les attributs supplémentaires que vous souhaitez, tels que les emails, par exemple. Vous pouvez ensuite utiliser des groupes dans CouchDB pour contrôler les documents auxquels chaque utilisateur a un accès en écriture. Par exemple, vous pouvez créer une base de données pour cet utilisateur dans laquelle il peut écrire, puis l'ajouter à un groupe disposant d'un accès en lecture aux autres bases de données, selon les besoins..


Étape 4 - Création d'un document produit

Créons maintenant notre premier document en utilisant Futon en procédant comme suit:

  1. Ouvrez le mycouchshop base de données.
  2. Cliquez sur "Nouveau document".
  3. Cliquez sur "Ajouter un champ" pour commencer à ajouter des données au document JSON. Remarquez comment un identifiant est pré-rempli pour vous, je vous conseillerais vivement de ne pas le changer. Ajouter une clé "name" avec la valeur de "Nettuts CouchDB Tutorial One".
  4. Assurez-vous de cocher la case en regard de chaque attribut pour le sauvegarder..
  5. Cliquez sur "Enregistrer le document".

Remontez d’un niveau, revenez à la base de données et vous devriez voir un document répertorié avec l’ID précédent comme clé et une valeur commençant partour: . Ceci est le document JSON que vous venez de créer.


Étape 5 - Mise à jour d'un document

CouchDB est une base de données qui n’ajoute que - les nouvelles mises à jour sont ajoutées à la base de données et ne remplacent pas l’ancienne version. Chaque nouvelle mise à jour d'un document JSON avec un ID préexistant ajoutera une nouvelle révision. C’est ce que signifie la clé de révision insérée automatiquement. Suivez les étapes ci-dessous pour voir cela en action:

  • Voir le contenu de la mycouchshop base de données, cliquez sur le seul enregistrement visible.
  • Ajouter un autre attribut avec la clé "type" et la valeur "product".
  • Hit "Enregistrer le document".

Après avoir cliqué sur sauvegarder, une nouvelle clé de révision devrait être visible en commençant par le chiffre 2. Revenir au niveau précédent mycouchshop base de données, vous ne verrez toujours qu’un seul document, il s’agit de la dernière révision de notre document produit.

Révisions

Bien que CouchDB utilise les révisions en interne, essayez de ne pas trop vous appuyer dessus. Les révisions peuvent être nettoyées facilement via Futon et il n’est pas conçu pour être utilisé comme système de contrôle des révisions. CouchDB utilise les révisions dans le cadre de sa fonctionnalité de réplication.


Étape 6 - Créer un document en utilisant cURL

J'ai déjà mentionné que CouchDB utilise une interface RESTful et que le lecteur aux yeux pointus aurait remarqué que Futon l'utilisait via la console de Firebug. Si ce n’est pas le cas, prouvons cela en insérant un document en utilisant cURL via le terminal..

Premier, créons un document JSON avec le contenu ci-dessous et sauvegardons-le sur le bureau qui appelle le fichier personne.json.

 "prénom": "Gavin", "nom de famille": "Cooper", "type": "personne"

Suivant, ouvrir le terminal et exécuter cd ~ / Bureau / vous mettre dans le bon répertoire puis effectuez l'insertion avec curl -X POST http://127.0.0.1:5984/mycouchshop/ -d @ person.json -H "Type de contenu: application / json". CouchDB aurait dû renvoyer un document JSON semblable à celui ci-dessous.

 "ok": true, "id": "c6e2f3d7f8d0c91ce7938e9c0800131c", "rev": "1-abadd48a09c270047658dbc38dc8a892"

C'est l'ID et le numéro de révision du document inséré. CouchDB suit la convention RESTful et donc:

  • POSTER - crée un nouvel enregistrement
  • OBTENIR - lit les enregistrements
  • METTRE - met à jour un enregistrement
  • EFFACER - supprime un enregistrement

Étape 7 - Visualiser tous les documents

Nous pouvons vérifier davantage notre insertion en consultant tous les documents de notre mycouchshop base de données en exécutant curl -X GET http://127.0.0.1:5984/mycouchshop/_all_docs.


Étape 8 - Création d'une fonction de carte simple

La visualisation de tous les documents est pratiquement inutile. Ce qui serait plus idéal est de voir tous les documents produits. Suivez les étapes ci-dessous pour y parvenir:

  • Dans Futon, cliquez sur le menu déroulant et sélectionnez "Vue temporaire".
  • C'est l'éditeur de réduction de carte dans Futon. Copiez le code ci-dessous dans la fonction map.
     function (doc) if (doc.type === "produit" && doc.name) emit (doc.name, doc); 
  • Cliquez sur Exécuter et vous devriez voir le seul produit que nous avons ajouté précédemment.
  • Allez-y et rendez cette vue permanente en la sauvegardant.

Après avoir créé cette fonction de carte simple, nous pouvons maintenant demander cette vue et voir son contenu via HTTP à l'aide de la commande suivante curl -X GET http://127.0.0.1:5984/mycouchshop/_design/products/_view/products.

Une petite chose à noter est la façon dont nous obtenons l'ID et la révision du document par défaut..


Étape 9 - Effectuer une réduction

Pour effectuer une réduction utile, ajoutons un autre produit à notre base de données et un attribut price d'une valeur de 1,75 à notre premier produit..

 "nom": "Mon produit", "prix": 2.99, "type": "produit"

Pour notre nouvelle vue, nous allons inclure une réduction ainsi qu'une carte. Tout d'abord, nous devons définir la carte comme ci-dessous.

 function (doc) if (doc.type === "produit" && doc.price) emit (doc.id, doc.price); 

La fonction de carte ci-dessus vérifie simplement si le document saisi est un produit et qu'il a un prix. Si ces conditions sont remplies, le prix du produit est émis. La fonction de réduction est en dessous.

 fonction (touches, prix) somme de retour (prix); 

La fonction ci-dessus prend les prix et renvoie la somme en utilisant l’une des fonctions de réduction intégrées de CouchDB. Assurez-vous de cocher l'option de réduction en haut à droite du tableau des résultats car vous pourriez sinon être incapable de voir les résultats de la réduction. Vous devrez peut-être effectuer une actualisation matérielle de la page pour afficher l'option de réduction.


Conclusion

Dans ce tutoriel, nous avons jeté un coup d’œil sur CouchDB. Nous avons vu le potentiel de CouchDB et la facilité avec laquelle il est possible de démarrer. Je suis sûr que vous avez beaucoup de questions à ce stade, alors n'hésitez pas à ajouter un commentaire ci-dessous. Merci beaucoup pour la lecture!