Applications Web utilisant MongoDB - MongoDB est l'un des meilleurs outils pour les développeurs Web sérieux, et cet article sur MongoDB examinera tout ce que vous devez savoir pour créer des applications Web avec MongoDB. Mais avant de commencer, examinons de plus près l'outil populaire.

Source de l'image: pixabay.com

Qu'est-ce que MongoDB?

Dans les termes les plus simples, MongoDB est une base de données NoSQL orientée document multiplateforme qui utilise des documents de type JSON utilisant des schémas dynamiques, appelés documents BSON, au lieu de suivre la structure de base de données relationnelle (RDB) conventionnelle.

C'est beaucoup de termes que vous ne connaissez peut-être pas, alors décomposons-les d'abord.

Désormais, une base de données orientée document fonctionne sur le concept de base qu'un document de données contient des «métadonnées», qui sont des valeurs utilisées pour identifier le type de données et faciliter le stockage et la récupération en cas de besoin. Par exemple, regardons les deux lignes de données suivantes:

  • John Hancock
  • Architecte

Un regard sur ces deux lignes devrait vous donner une idée de ce à quoi ces données se réfèrent: le nom et la profession d'une personne. Une machine, cependant, ne peut pas faire cette distinction. Il faut lui dire le type de données.

Dans un RDB, ce type peut être stocké dans un magasin de valeurs-clés distinct du document lui-même. Cependant, avec une base de données orientée document, vous pouvez déterminer le type de données lorsque vous tapez le code. Vous finissez donc par écrire un peu comme ceci:

  • John Hancock
  • Architecte

Et voilà! maintenant, le type de données a été défini directement dans le document. Cela donne une flexibilité qui n'est pas présente dans les RDB, c'est pourquoi les bases de données orientées document sont si populaires pour les applications Web.

Après tout, les applications Web sont soumises à des modifications et mises à jour régulières. Bien sûr, les RDB ont aussi leurs avantages, et les bases de données orientées documents ne sont pas parfaites pour toutes les situations, mais ne nous éloignons pas.

Passons maintenant à JSON, BSON et aux schémas. JSON fait référence à la notation d'objet JavaScript, mais il s'agit en fait d'un format de données standard ouvert qui peut fonctionner avec des langages autres que JavaScript.

Un schéma est la structure de la base de données, définie comme des tables dans le cas des RDB. Étant donné que les bases de données orientées document n'utilisent pas de telles tables, elles sont essentiellement sans structure ou sans schéma.

Quant à BSON, eh bien, cela signifie simplement Binary JSON, et c'est le format de stockage de données pour la base de données MongoDB. C'est tout ce que vous devez savoir à ce stade.

Maintenant, avec les bases en route, regardons pourquoi MongoDB est un bon choix pour créer des applications Web:

Pourquoi opter pour MongoDB?

Il existe plusieurs raisons à la popularité de MongoDB pour la création d'applications Web. MongoDB n'est pas un outil parfait; Loin de ça, en fait. MongoDB présente plusieurs défis et n'est pas adapté à toutes les applications Web. Mais MongoDB fonctionne bien quand il s'agit d'applications Web pour les raisons suivantes:

  • MongoDB est sans schéma

La base de données MongoDB peut contenir des collections de documents, chaque document ayant sa propre taille, son contenu et son nombre de champs. Vous pouvez revenir en arrière et modifier les valeurs de clé, ou les ajouter et les supprimer comme vous le souhaitez.

Cela rend également la structure d'un seul objet claire et simple, et MongoDB est également facile à mettre à l'échelle en cas de besoin.

  • MongoDB est polyvalent

La base de données peut être utilisée pour un certain nombre d'applications Web, y compris la gestion des données client, la gestion de contenu, les concentrateurs de données, les applications mobiles, l'Internet des objets, le Big Data, les catalogues de produits et d'actifs et la base de données en tant que service.

  • MongoDB prend en charge le partage automatique

Les bases de données relationnelles évoluent généralement verticalement, dans lesquelles un seul serveur héberge la base de données complète. Cela peut limiter l'échelle des opérations, la solution étant d'ajouter horizontalement et d'ajouter des serveurs plutôt que de concentrer la capacité sur un seul serveur.

Le partage d'une base de données est fait pour éviter cela et faire fonctionner le matériel comme un serveur unique. Les développeurs doivent déployer plusieurs bases de données relationnelles sur plusieurs machines et développer un code d'application pour distribuer les données, les requêtes et agréger les résultats.

MongoDB et d'autres bases de données NoSQL prennent en charge le partage automatique, ce qui signifie qu'ils répartissent automatiquement les données sur différents serveurs sans que l'application ne soit informée de la composition.

MongoDB est particulièrement utile avec le cloud computing. En tant que développeur, vous n'avez pas à créer de plates-formes coûteuses et complexes pour prendre en charge les applications Web, mais vous pouvez vous concentrer sur l'écriture du code d'application réel.

Quelques termes supplémentaires pour en savoir plus sur MongoDB

Très bien, nous avons donc couvert les bases et les avantages de MongoDB. Avant de nous salir la main, regardons quelques termes supplémentaires que vous devriez connaître:

  • Base de données: une base de données contient des collections et chaque base de données a ses propres fichiers sur le système de fichiers. Un serveur MongoDB typique aura plusieurs bases de données.
  • Collection: un groupe de documents MongoDB est appelé une collection, et c'est l'équivalent d'une table dans les RDB. Une seule base de données aura une collection et chaque document aura des champs différents. Contrairement aux tablettes, les collections n'ont pas de schéma.
  • Document: un document est un ensemble de paires clé-valeur et possède un schéma dynamique, ce qui signifie que différents documents d'une même collection peuvent avoir des ensembles de champs et des structures différents.

    Cours recommandés

  • Cours de débogage Ruby
  • Formation à la programmation PHP MySQL
  • Formation en ligne à la programmation VB.NET
  • Cours de formation de la Fondation ITIL

Création d'applications Web

Les applications Web en cours de création pour ce guide MongoDB particulier sont un agrégateur RSS comme Google Reader. Les applications Web auront deux composants clés: une API REST et un récupérateur de flux.

Pour comprendre ce qu'est une API REST, vous devez d'abord en savoir un peu plus sur la pile MEAN. Le code pour un récupérateur de flux, peut être trouvé même dans le répertoire github.

Comprendre la pile MEAN:

La pile MEAN représente les éléments suivants:

  1. MongoDB, qui est la base de données à utiliser pour l'application Web
  2. js, qui est un cadre d'application web léger
  3. js, qui est un cadre pour créer des applications Web riches en JavaScript et HTML5
  4. js, qui est un interpréteur JavaScript côté serveur

Pour les applications Web discutées ici, une API REST sera créée au lieu d'une interface utilisateur HTML. L'API REST (Representational State Transfer) est une alternative plus légère aux API basées sur XML et peut servir de base à n'importe quel type d'interface, bien qu'elle n'ait pas d'interface utilisateur.

REST fonctionne sur un modèle client-serveur, le client envoyant des commandes HTTP au serveur HTTP, ainsi que des paramètres variables codés dans l'URL décrivant l'objet cible de l'action. Le serveur répond ensuite avec le JSON et le code de résultat.

Désormais, MongDB et JavaScript réagissent bien avec JSON, ce qui rend la pile MEAN particulièrement adaptée aux applications Web.

CRUD

L'acronyme CRUD signifie créer, lire, mettre à jour et supprimer. Ce sont des opérations de base de données courantes qui se traduisent en HTTP comme post, get, put et delete.

Construire une API REST

Commençons par créer une API REST, développant les bases de la construction des applications Web. L'application peut être basée sur le Web ou conçue pour Android, iOS ou d'autres plates-formes spécifiques. Pour commencer, énumérons les choses que l'application pourra faire:

  1. Autoriser les utilisateurs à créer un compte
  2. Permettez-leur de s'abonner ou de se désabonner des flux
  3. Donnez-leur la possibilité de lire et de marquer les entrées de flux comme lues ou non lues
  4. Suivez les flux RSS pour la surveillance
  5. Stocker les informations des utilisateurs dans leurs comptes respectifs
  6. Suivre les abonnements aux flux d'utilisateurs
  7. Suivre une entrée de flux déjà lue par un utilisateur

La modélisation des données

En fonction des exigences, les applications Web auront besoin de quatre collections pour gérer les informations:

  1. Collection d'utilisateurs
  2. Collecte des aliments
  3. Collection de mappage d'entrée de flux utilisateur
  4. Collecte des entrées de flux

Voici un aperçu de chacun:

  • Collecte des aliments:

Le JSON suivant est un bon exemple de modélisation d'une collection de flux:

( "_id, ObjectId("523b1153a2aa6a3233a91412")

"requiresAuthentication": false,

"permanentlyRemoved": false,

"feedURL": "http://feeds.reuters.com/reuters/topNews",

"title": "Reuters",

"bozoBitSet": false,

"enabled": true,

"etag": "4bL78iLSZud2iXd/vd10mYC32BE",

"link": "http://www.reuters.com/ ",

"permanentRedirectURL": null,

"description": "Reuters news feed” )

Le document JSON ci-dessus est un flux RSS pour Reuters, qui suit les informations sur les dernières nouvelles publiées sur le site Web. Il y a beaucoup de champs que vous voyez ici, mais les plus importants pour que les applications Web fonctionnent sont l'URL du flux et la description du flux.

L'URL est importante pour récupérer du contenu à partir de la bonne source, et la description est importante car elle fournit un résumé pour le flux.

Les autres champs sont quant à eux à usage interne. Vous pouvez en ajouter ou en supprimer à votre guise. En haut du document se trouve le champ _id. Chaque document doit avoir ce champ et l'ID doit être unique.

Dans l'exemple ci-dessus, un ID a été créé manuellement pour le champ. Si vous manquez cela, MongoDB en fera automatiquement un.

  • Suivi et collecte des entrées de flux

Si vous souhaitez suivre plus de flux d'actualités, vous pouvez en ajouter d'autres en utilisant le même format que ci-dessus. Une fois que vous avez terminé d'ajouter les flux, il est temps de les suivre et de les collecter. Ci-dessous est un document pour la collecte d'entrée de flux:

( "_id": ObjectId("523b1153a2aa6a3233a91412"),

"description": "Martin Shkreli, the poster boy for prescription drug price increases who was arrested for securities fraud this week, has stepped down from his post as chief executive officer of Turing Pharmaceuticals Inc, the company said on Friday”,

"title": "Turing Pharma names chairman to replace Shkreli as CEO",

"summary": "Turing Pharma names chairman to replace Shkreli as CEO”,

"content": (( "base": "http://www.reuters.com/",

"type": "text/html",

"value": ”LOTS OF HTML HERE",

"language": "en" )), "published Date": ISODate("2015-12-18T18:13:58+0000"),

"link": " http://www.reuters.com/article/us-usa-crime-shkreli-ceo-idUSKBN0U122R20151218",

"feedID": ObjectId("523b1153a2aa6a3233a913f8") )

Encore une fois, vous pouvez voir le champ _id rempli, ainsi que d'autres champs tels que la description, le résumé et le titre. Le champ de contenu utilise un tableau et MongoDB permet aux tableaux de stocker des documents. Cet arrangement de sous-document peut être particulièrement utile dans les situations où toutes les informations doivent être rassemblées.

Prenez note du feedID; il a le même type ObjectId et la valeur de _id que le document d'entrée de flux précédent pour le flux Reuters. Cela offre un modèle référentiel, vous pouvez donc interroger la collection de flux sur la même valeur d'ID pour renvoyer le document Reuters.

  • Suivi de l'utilisateur

Voici un exemple de document pour suivre les utilisateurs:

( "_id" : ObjectId("54ad6c3ae764de42070b27b1"),

"active" : true,

"email" : " ",

"firstName" : "John",

"lastName" : "Hancock",

"sp_api_key_id" : "6YQB0A8VXM0X8RVDPPLRHBI7J",

"sp_api_key_secret" : "veBw/YFx56Dl0bbiVEpvbjF”,

"lastLogin" : ISODate("2015-01-07T17:26:18.996Z"),

"created" : ISODate("2015-01-07T17:26:18.995Z"),

"subs" : ( ObjectId("523b1153a2aa6a3233a913f8"),

ObjectId("54b563c3a50a190b50f4d63b") ), )

Ici, l'utilisateur a trois attributs clés: prénom, nom et adresse e-mail. Deux éléments peuvent également être utilisés avec l'API de gestion des utilisateurs Stormpath: sp_api_key_secret et sp_api_key_id.

Le dernier champ, subs, est le tableau d'abonnement et indique le flux auquel l'utilisateur est abonné.

  • Mappage d'entrée de flux

La collection finale elle permet de mapper les utilisateurs aux flux et de suivre les flux lus:

( "_id" : ObjectId("523b2fcc054b1b8c579bdb82"),

"read" : true,

"user_id" : ObjectId("54ad6c3ae764de42070b27b1"),

"feed_entry_id" : ObjectId("523b1153a2aa6a3233a91412"),

"feed_id" : ObjectId("523b1153a2aa6a3233a913f8") )

Comme vous pouvez le voir, un booléen de base vrai / faux est utilisé pour marquer si le flux a été lu ou non. À présent, l'utilisateur devrait pouvoir exécuter les fonctions suivantes:

  1. Créer un compte
  2. Abonnement ou désabonnement aux flux
  3. Lecture des entrées de flux
  4. Marquer les flux ou les entrées comme lus ou non lus
  5. Réinitialiser le mot de passe

Voici une liste de la façon de mapper ces opérations aux routes et commandes HTTP.

RouteCommanderLa descriptionVariables
/ utilisateur / s'inscrirePUBLIEREnregistrer un nouvel utilisateurPrénom
nom de famille
email
mot de passe
/ user / resetPasswordMETTRERéinitialisation du mot de passeemail
/ fluxAVOIRObtenez des abonnements aux flux pour chaque utilisateur avec une description et un nombre non lu
/ flux / abonnez-vousMETTREAbonnez-vous à un nouveau fluxURL du flux
/ flux / entréesAVOIRObtenez toutes les entrées des flux auxquels l'utilisateur est abonné
/ feeds // entréesAVOIRObtenez toutes les entrées pour un flux spécifique
/ flux /METTREMarquer toutes les entrées d'un flux spécifique comme lues ou non lueslire =
/ flux // entrées /METTREMarquer une entrée spécifique comme lue ou non luelire =
/ flux /SUPPRIMERSe désabonner de ce flux particulier

Le HTTP sécurisé est l'approche standard utilisée pour envoyer des détails sensibles comme les mots de passe dans un environnement de production

Prochaines étapes: authentification dans le monde réel

L'authentification des utilisateurs est importante pour gérer en toute sécurité les utilisateurs, les mots de passe et les réinitialisations. Il existe plusieurs façons d'authentifier les comptes d'utilisateurs.

Par exemple, vous pouvez utiliser un plug-in Passport avec Node.js, qui est utile pour s'authentifier avec Facebook, Twitter et les comptes de médias sociaux.

L'exemple ci-dessus dépend de l'utilisation de Stormpath, une API REST qui prend en charge l'autorisation et l'authentification via des clés d'API et propose la gestion des utilisateurs en tant que service.

Articles recommandés

Voici quelques articles qui vous aideront à obtenir plus de détails sur les applications Web utilisant MongoDB, il vous suffit donc de parcourir le lien.

  1. HTML5 vs Flash Excité de connaître la différence?
  2. Java vs Node JS - 8 différences que vous devez savoir
  3. Application de test Web: un guide utile et complet
  4. Comment utiliser les modèles Web HTML | Application | Mobile | Meilleur
  5. Développement logiciel vs développement Web
  6. Comment préparer les outils Web Analytics à travailler pour vous (Guide)
  7. MongoDB vs PostgreSQL: quelles sont les différences
  8. Guide utile sur MongoDB vs Hadoop
  9. Meilleur guide sur MongoDB vs Cassandra