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..
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..
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..
Quelques faits sur CouchDB que vous devriez savoir:
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..
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.
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
.
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.
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..
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..
Créons maintenant notre premier document en utilisant Futon en procédant comme suit:
mycouchshop
base de données.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.
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:
mycouchshop
base de données, cliquez sur le seul enregistrement visible.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.
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.
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:
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
.
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:
function (doc) if (doc.type === "produit" && doc.name) emit (doc.name, doc);
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..
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.
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!